본문 바로가기

ひみつ

안티디버깅 종류

//안티디버깅


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