본문으로 바로가기

[Reversing] antidbg / 350

category ICEWALL 2019. 7. 21. 19:30

Download: antidbg.exe

 

안티디버깅 기법이 적용된 파일이다. 안티디버깅에 대해서 알고 있다면 아주 쉬운 문제고 아니면 힘들게 풀어야 한다. IsDebuggerPresent와 CheckRemoteDebuggerPresent를 call 하는 부분을 패치해서 디버거 확인 루틴을 건너뛰고 입력값을 검사하는 곳에서 플래그를 확인할 수 있다.

 

x64dbg 기준으로 진행한다. EntryPoint에서 Search for > Intermodular Cells를 선택한 뒤 IsDebuggerPresent를 검색하면 다음과 같은 결과를 얻을 수 있다.

 

세 군데에서 IsDebuggerPresent를 호출한다. 각각을 mov eax, 0; nop; 으로 패치하면 된다. 우클릭 > Assemble 을 선택하거나 스페이스를 눌러 변경할 수 있다. Fill with NOP's 옵션을 선택하면 NOP을 자동으로 채워준다.

 

 

call CheckRemoteDebuggerPresent; instruction에 대해서도 같은 작업을 진행한다.

 

패치 후 열심히 F8을 돌려 입력을 확인하는 루틴을 검사하면 된다.

 

rdx에 플래그가 담겨있고 각 자리수의 바이트 값을 검사한다. 모든 바이트에 대해 조건을 만족시키는 입력을 구하면 그게 곧 플래그가 된다.

 

'ICEWALL' 카테고리의 다른 글

[Forensic] sniffing / 80  (0) 2019.07.22
[Forensic] image / 50  (0) 2019.07.22
[Reversing] encrypt / 250  (0) 2019.07.21
[Reversing] login / 200  (0) 2019.07.21
[Reversing] noteasy / 170  (0) 2019.07.21