Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

kaka09

code engine basic 4 본문

Reversing

code engine basic 4

kaka09 2017. 7. 27. 11:29


[사진] 4-1


디버거를 탐지하는 함수의 이름을 찾아야 한다. 우선 프로그램을 실행시켜 보자


[사진] 4-2


프로그램의 실행결과 [사진]4-2 에서 보여지는 바와 같이 정상이라는 문구가 계속 출력되는것을 확인할 수 있다. 이제부터 ollydbg를 이용하여 프로그램을 분석해 보자



[사진] 4-3


프로그램을 쭈욱 실행하다보면 특정 함수를 call 하면서 "디버깅 당함" 이라는 메세지를 계속 출력한다. 해당 메세지를 출력하는 부분을 ollydbg로 찾아 보면 다음과 같다.


[사진] 4-4

00401048  MOV ESI, ESP 에서부터 반복루틴이 실행되면서 디버깅을 당하는지 아닌지의 여부를 판단한다. 디버깅 탐지의 여부는  

KERNEL32.IsDebuggerPresent 함수를 호출하면서 리턴 값이 1이면 디버깅을 당하는것이고 리턴 값이 1이 아니면 디버깅을 당하지 않는것으로 구분한다.


[사진] 4-5

 

[사진]4-5에서 보여진 대로 IsDebuggerPresent 함수의 리턴값이 1일경우 "디버깅 당함"으로 화면에 출력되는것을 알 수 있다. 그럼 리턴값을 값을 0으로 조작하여 실행시켜 보자


  

[사진] 4-6


함수의 리턴값을 1이 아닌 0으로 바꾸고 실행해본 결과 "정상"이라는 문구가 출력되는 것을 알 수 있다.






'Reversing' 카테고리의 다른 글

code engn basic 9  (0) 2017.08.01
code engn basic 8  (0) 2017.08.01
code engn basic 7  (0) 2017.07.31
code engine basic 6  (0) 2017.07.31
code engine basic 5  (0) 2017.07.27