Я использую IDA Pro для дизассемблирования двоичных файлов SPEC 2006 в 32-разрядной версии Windows 7.
Он генерирует переменную, объявленную следующим образом:
aKernel32_dll_0 unicode 0, <KERNEL32.DLL>,0
В разделе .text я нахожу использование этой переменной следующим образом:
push offset aKernel32_dll_0
call ds:__imp__GetModuleHandleW@4
......
Что я пытаюсь сделать, так это собрать этот код/данные.
Итак, мои вопросы:
Таким образом, в основном объявление типа **aKernel32_dll_0 unicode 0, ,0 ** не может быть напрямую пересобрано с помощью masm/nasm, как мне его настроить?
Я просто изменяю его в aKernel32_dll_0 dd 0, и код выглядит следующим образом:
и каждый раз после вызова ds:__imp__GetModuleHandleW@4 возникала странная ситуация.
Сравнение с исходным двоичным файлом с использованием Ollydbg:
Получается, что aKernel32_dll_0 на самом деле является внешней переменной? Итак, правильный ли способ удалить объявление и объявить эту переменную extern? Если да, то каково имя этой переменной? Я не думаю, что это Kernel32_dll_0, так как это похоже на случайное имя, сгенерированное IDA Pro.
Может ли кто-нибудь помочь мне? Спасибо!