Здравствуйте 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, после чего задача написания нетривиальной программы становится тривиальной (каламбурчик-с).