Re: Прога, которая ничего не импортирует
От: Alex Fedotov США  
Дата: 23.08.02 02:26
Оценка: 62 (5)
Здравствуйте ZakkeR, Вы писали:

ZR>Всем наверное известно, что как любой exe'шник при старте импортирует как минимум kernel32.dll

ZR>Т.е. я хотел сказать, что он прописан в таблице импорта и система его сама подрубает. А все потому, что именно в этой либе есть LoadLibrary, используя которую можно догружать самому оставшиеся либы. А теперь вопрос:
ZR>Возможно ли написать прогу, у которой таблица импорта вообще пустая. Я знаю что это возможно на 9x системах, даже исходник имеется, но вот возможно ли так сделать в NT/2K/XP?

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

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

extern "C" void __cdecl wmainCRTStartup()
{
}


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