2010-11-28 3 views
0

Naveen의 블로그 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] 

내가 뭘 잘못하고 있을지 모르겠다.

답변

0

귀하의 목록은 네이티브 코드를 완벽하게 분해하는 것입니다. 이 코드는 그 작업이이 시스템 라이브러리 인 NTDLL.DLL에 가장 가능성이 있음을 의미

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

다음 "INT 2EH"부분은 시스템 호출을 수행하는 코드가 말해. 명령 포인터가 "ret"를 가리 킵니다. 나는 이전의 지시가 "sysenter"였고, 실제로 일어난 것은 응용 프로그램이 방금 종료되었다는 것입니다 (이것은 시스템 호출을함으로써 이것을했습니다). 응용 프로그램이 종료되면 중단 점이 발생할 때와 같이 디버거가 제어됩니다.

응용 프로그램을 종료하기 전에 중단 점이 왜 안 나오는지 확인하십시오.

0

시도 : .lines 리터 +의 명령 창에서

. 또한 심볼이로드되었는지 확인하십시오. lm 명령을 사용하여로드 된 모듈을 표시 할 수 있습니다.