необходимо написать обфускатор для ддл-ки Основа взята из dotfix.net, статья "Пакер - это просто" Проблема в настройке моим загрузчиком таблицы импорта: в Olly все проходит на ура ( длл грузится, настраиваются релоки и импорты, управление передается основной DllMain, которая все корректно отрабатывает. Запускаю вне отладчика - падает. Никаких исключений в дебаггере не наблюдаю Попробовал такой эксперимент: копировать/ не копировать DATA_DIRECTORY[ IMPORT ]. В обоих случаях мой загрузчик настраивает таблицу импорта ( то есть я так понимаю, что в первом случае импорт настраивается дважды: системным загрузчиком и моим ). В первом случае прога работает, во втором падает
Great олли зависает и начинает плодить потоки. по статус бару вижу, что в нтдлл twgt какой наблюдательный.. В аттаче "упакованная" ( еще не дошел до упаковки ) длл-ка, исходная длл ( пример номер 1 из пакета масма 9 ) и прога для теста ( просто call LoadLibraryA )
Подозреваю что в DLL обязательно должна быть таблица с релоками, и левая таблица с импортами наверное тоже
psu У тебя глюк в процедуре, которая ищет по имени функи её адрес (типа свой GetProcAddress) Причем у меня она ищет эту функу в ntdll - неправильно определяешь базу kernel32.dll - лучше через PEB или стек. Но еще лучше делай импорты к упакованным прогам (где нормально объявлена GetProcAddress,LoadLibrary и т.д.) и юзай их для восстановления оригинальных адресов в IAT запакованной проги, а то у тебя нету у библы таблицы импорта и кстати такие проги(без импортов) на Win2000 вообще не запускаются...
Спасибо, ребята! Буду разбираться BaGiE Выходит, что прога типа Код (Text): start: ret под 2000 не запустится? ( там импорта нету, по крайней мере после компиляции в ХР ) И еще. Почему в олли базу кернела находит правильно, а вне ее - нет?
Добавил свою секцию импорта. Не идет, хотя PEView показывает все правильно З.Ы. Олли не хочет работать в режиме Just-in-time На вот такой проге виснет Можна ли исправить как нибудь?
А может есть какая-нибудь тулза, которая проверяет PE на правильность? Возможно симулятор системного загрузчика
http://www.wasm.ru/forum/viewtopic.php?id=17233 Запускаем и видим, что RawOffset + RawSize последней секции > размера файла. В чём собственно и проблема.
asd 2.dll 00860000-00860C00 * NOTE: (pFH->Characteristics & IMAGE_FILE_DLL) > 0 * IMAGE SIZE: 00005000/00005000 * SectionAlignment:00001000 FileAlignment:00000200 * CHK DataDirectory:IMAGE_DIRECTORY_ENTRY_EXPORT * CHK DataDirectory:IMAGE_DIRECTORY_ENTRY_IMPORT VALID: 00000001 Pointer to RAW data: A00 Size of RAW data: 200 размер файла 3072 ( С00 ) З.Ы. LoadLibrary возвращает 0 и ошибку 3E6, то есть исключения не генерятся
asd В аттаче последняя версия длл ( сравнить с предыдущей не могу, почему то битый архив скачиваю ) slow Имеется ввиду это? На 2-й странице написано, что тоже самое можно сделать при помощи CreateFileMapping? Даже если так, то ответа на вопрос "почему не работает" это все равно не даст, ведь так?
Код (Text): HANDLE h = CreateFile( "2.dll", GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0x80, 0 ); HANDLE hmap = CreateFileMapping( h, 0, SEC_IMAGE | PAGE_READWRITE, 0, 0, 0 ); hmap != 0 По-моему я не правильно задаю параметр флагов. В документации написано, что вместе с SEC_IMAGE другие не могут использоваться. Но тогда возвращает 0 и ошибку 57h ( ERROR_INVALID_PARAMETER )