Anti Debugging Trick-2 CreateToolhelp32Snapshot

안티디버깅 기술중에 현재 실행중인 프로세스 리스트를 얻은후 찾고있는 프로세스가 존재하면, 종료하는 트릭입니다.

 
 

아래 그림과 같이 “CreateToolhelp32Snapshot”를 통해 값을 얻고 “Process32First”와 “Process32Next”로 찾고자 하는 프로세스가 있는지를 빨간박스 안의 Loop 문을 통해 수행하게 됩니다. 그림에서는 OLLYDBG.EXE를 찾고 있고 TEST EAX,EAX를 통해 값이 맞으면 401227로 점프하게 되어 있네요

 
 

안티 디버깅 트릭들은 이것이 쉽게 발각되지 않도록 은닉할 필요가 있습니다.

중요하게 봐야할것 strcmpiA로 스트링을 비교하는게 아닐까 생각이 되네요.

 
 

리턴값을 고정시키거나, 비교값으로 사용되는 값을 수정해주면 될것같네요.

 
 


PUSH EDI                                   ; Debugger.0040304C
PUSH 0                                     ; ProcessID = 0
PUSH 0F                                    ; Flags = TH32CS_SNAPALL
CALL <JMP.&kernel32.CreateToolhelp32Snapsh>; CreateToolhelp32Snapshot


PUSH EAX                                   ; String2 = “winlogon.exe”
PUSH EDI                                   ; String1 = “OLLYDBG.EXE”
CALL <JMP.&kernel32.lstrcmpiA>             ; strcmpiA


Facebook Comments

Leave A Reply

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.