//안티디버깅
00401450 16 PUSH SS
00401451 17 POP SS ; Modification of segment register
00401452 9C PUSHFD
00401453 58 POP EAX ; ntdll.7C93E900
00401454 25 00010000 AND EAX, 100
00401459 8BD0 MOV EDX, EAX
0040145B 05 62144000 ADD EAX, 00401462
00401460 50 PUSH EAX
00401461 C3 RETN
-___-; PUSH SS / POP SS 하면 스택에 302이라는 값이 들어가는데 이것을 POP EAX로 가져온다.
원래는 0이라는 값이 리턴되야 정상인것 같으나 0이 아닌 다른 값이 들어가면 RETN 주소가 엉뚱한 곳으로 가버린다.
0040148E 6A 00 PUSH 0
00401490 6A 04 PUSH 4
00401492 53 PUSH EBX
00401493 6A 07 PUSH 7
00401495 FF30 PUSH DWORD PTR DS:[EAX]
00401497 FF15 42184000 CALL DWORD PTR DS:[401842] ; ntdll.ZwQueryInformationProcess
0040149D 58 POP EAX ; ntdll.7C93E900
0040149E 85C0 TEST EAX, EAX
004014A0 0F85 98030000 JNZ 0040183E
ZwQueryInformationProcess 에 쿼리를 날려서 정보값을 보고 JNZ에서 분기가 결정되는 듯 함
적당히 flag값 조작
'ひみつ' 카테고리의 다른 글
바이너리 패치용 (0) | 2013.05.28 |
---|---|
Root Cause Analysis – Memory Corruption Vulnerabilities (0) | 2013.02.27 |
PEcombat (0) | 2011.11.25 |
ASPack 2.12 -> Alexey Solodovnikov 수동언팩 (0) | 2011.11.03 |