Re[2]: Прога, которая ничего не импортирует
От: nvs  
Дата: 23.08.02 13:05
Оценка:
Здравствуйте Alex Fedotov, Вы писали:

AF>Здравствуйте ZakkeR, Вы писали:


AF>http://www.alexfedotov.com/code/null.exe


AF>Эта программа ничего не делает. Исходный код


AF>
AF>extern "C" void __cdecl wmainCRTStartup()
AF>{
AF>}
AF>


AF>Поскольку kernel32.dll и ntdll.dll все равно загружаются в адресное пространство процесса (точка входа Win32-процесса вызывается из kernel32.dll), то их адреса можно найти в PEB, который всегда находится по адресу 0x7FFDF000. Зная адрес kernel32.dll уже нетрудно найти адреса LoadLibrary и GetProcAddress, после чего задача написания нетривиальной программы становится тривиальной (каламбурчик-с).


А не проще ли в EntryPoint'е PE модуля взять со стека адрес возврата — сие будет указывать куда-то в kernel32.dll... Дальше просто ищем начало PE header и разбираем таблицу импортов...

P.S. PEB лучше получить из TEB который всегда лежит по fs:[18h]
    __asm
    {
       mov     eax,fs:[18h]                                       // TEB.NtTib.Self
       mov    eax,[eax][30h]                                     // TEB.ProcessEnvironmentBlock
    }
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.