Что я делаю не так, чтобы разобрать код - PullRequest
0 голосов
/ 28 ноября 2010

Я пробую пример кода, предоставленный в блоге Навина по адресу http://naveensrinivasan.com/2010/06/11/piracy-in-net-code-%e2%80%93-part-3-%e2%80%93-even-when-the-code-is-obfuscated/.
Когда он запускает команду !u ($ip), он получает хорошую разборку, но когда я пытаюсь запустить ту же самую вещь, я, кажется, сталкиваюсь с неуправляемым кодом, который невозможно разобрать.

0:000> !u ($ip)   
Unmanaged code  
77555e74 c3              ret  
77555e75 8da42400000000  lea     esp,[esp]  
77555e7c 8d642400        lea     esp,[esp]  
77555e80 8d542408        lea     edx,[esp+8]  
77555e84 cd2e            int     2Eh  
77555e86 c3              ret  
77555e87 90              nop  
77555e88 55              push    ebp  
77555e89 8bec            mov     ebp,esp  
77555e8b 8da42430fdffff  lea     esp,[esp-2D0h]  

Есть идеи, что я могу делать не так?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2011

В вашем листинге полностью верна разборка нативного кода.Части «int 2Eh» говорят мне, что это код, который выполняет системные вызовы:

http://www.codemachine.com/article_syscall.html

Это означает, что код, скорее всего, находится в ntdll.dll, которая является системной библиотекойчья это работаУказатель инструкции указывает на «ret».Я предполагаю, что предыдущая инструкция была "sysenter", и на самом деле произошло то, что приложение только что вышло (оно сделало это, сделав системный вызов).При выходе из приложения ваш отладчик получает контроль, как и при достижении точки останова.

Внимательно посмотрите, почему ваша точка останова не срабатывает до выхода из приложения.

0 голосов
/ 12 декабря 2010

Попробуйте: .lines l + s

в командном окне.Также убедитесь, что ваши символы загружены.Вы можете использовать команду lm для отображения загруженных модулей.

...