Obfuscation (난독화)
위 소스코드를 보면 IsDebuggerPresent()를 이용해서 현재 프로그램이 디버깅 중인지 아닌지 판단을 할 수 있습니다.
IDA를 이용해 해당 부분을 살펴보도록 하겠습니다.
위 사진을 보면 CALL IsDebuggerPresent가 나타납니다. 그리고 디버깅 중이라면 "디버깅 중"이 출력되고 디버깅 중이 아니라면 "정상 실행 중"이 출력이 됩니다.
여기서 IDA를 이용해서 정적분석을 진행하면 IsDebuggerPresent()가 있다는 것을 알게되므로 이 부분을 나타나지 않도록 해야합니다.
해당 부분이 IsDebuggerPresent() 부분입니다.
해당 부분에서 EB를 넣어 코드를 수정해주면 정적분석시에 IsDebuggerPresent()인지 알 수 없게되어 분석할때 혼동을 줄 수 있습니다.
그런데.. 직접 수정을 해보는데 왜 안되는것일까...
'High Level Technique > Reversing' 카테고리의 다른 글
Native API (0) | 2016.08.24 |
---|---|
C++ 분석 (0) | 2016.08.13 |
Debug Blocker (0) | 2016.08.10 |
PE Image Switching (2) | 2016.08.10 |
Self Creation Debugging (0) | 2016.08.09 |