Что я делаю не так, чтобы разобрать код
Вопрос
Я пробую образец кода, предоставленный в блоге Naven в http://naveensrinivasan.com/2010/06/11/piracy-in-net-code-%e2%80%93-part-3-%e2%80%93-even-Chen-the-Code-is- запутанный /.
Когда он бежит !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]
Любая идея, что я могу делать не так?
Решение
Ваш список совершенно действительный разборка родного кода. Части «INT 2EH» подскажите, что это код, который выполняет системные вызовы:
http://www.codemachine.com/article_syscall.html.
Это означает, что код скорее всего в NTDLL.dll, который является системной библиотекой, задача которой это. Указатель инструкций указывает на «RET». Я догадаюсь, что предыдущая инструкция была «сыззендер», и что на самом деле произошло, так это то, что приложение только что вышла (это сделало это, сделав системный вызов). В качестве приложения выходит, ваш отладчик получает контроль, как будто он будет при попадании в точку останова.
Пожалуйста, посмотрите внимательно посмотрите, почему ваша точка останова не ударяется до выходов приложения.
Другие советы
Попробуйте: .Lines l + s
в окне команд. Также убедитесь, что ваши символы загружены. Вы можете использовать команду lm, чтобы показать загруженные модули.