개인공부/Reverse Engineering

[코드엔진] Basic RCE 04 with ida

5ddish 2018. 8. 4. 20:51

4번임


문제는 


이 프로그램은 디버거 프로그램을 탐지하는 기능을 갖고 있다. 디버거를 탐지하는 함수의 이름은 무엇인가 


이거임 

이것도 기억이남.. IsDebuggerPresent 이거였을 거임

디버거 안키고 실행시키면 아래그림처럼 루프 돌면서 정상 출력해줌 


일단 아이다에 던져 보았음 이것도 간단하게 특정 벨류값 으로 인해 while 문 안에서 for 문 수행하는 보습처럼 보임 




그리고 당연히 디버깅 하면 디버깅 당했다고 출력함ㅋㅋㅋㅋㅋㅋㅋㅋ 디버깅 당함 왤케 귀엽지 ... 





암튼 어떤 함수로 디버깅 당하는지 안당하는지 알고 있으니까 (IsDebuggerPresent) 에 브포 걸고 어떤값 반환하는지 보려고 그 함수 안으로 들어가봤음 


일단 건드리는 레지스터는 eax 값이란걸 알았고 ..  (movzx는 크기가 더 커도 복사해주는 어셈 명령어임) 나와서 test eax,eax 를 수행하는걸 확인함 



그리고 IsDebuggerPresent 이 함수는 디버깅 당하지 않을때 Return 0 을 하고 디버깅 당할땐 Return Non zero 함 그래서 EAX 레지 수정해서 풀었음