코드엔진 문제 - #3, #4

리버싱 스터디

2019. 9. 29. 02:02

Team Isaac 이희찬

 

#3번 문제

프로그램을 실행하면 다음 창이 뜨는데 무슨 언어인지 몰라서 번역기를 돌려봤는데

 

 

다음과 같은 뜻이라고 하네요..

 

 

 

'Regcode' 공란에 맞는 암호를 넣으면 인증이 되는 프로그램인 것같아요.

문제를 통해서 암호 확인은 문자열 비교 함수를 이용하고

문자열 비교 함수는 'strcmp'라는 것을 알고있습니다.

 

 

그래서 OLLYDBG에 프로그램을 이용하여 작동 시킨 후에

'Found intermodular calls'를 이용하여 문자열 비교 함수를 찾아

Break을 걸고 해당 함수로 넘어간 상태에서 순착적으로 진행하면서

해당 Regcode 문에서 특정 문자열을 넣고 프로그램 상태를 살펴보니

 

 

 

암호문은 '2G83G35Hs2'라는 것을 알아낼 수 있습니다.

 

 

다시 프로그램을 작동시켜 해당 암호를 입력하니 다음과 같은 창이 뜨는 것을 확인할 수 있습니다.

 

 

#4번 문제 

4번 프로그램을 실행시키면 다음과 같이 현재 디버깅 유무를 출력합니다.

 

 

디버깅을 위해 OLLYDBG에서 작동 시킵니다.

 

순차적으로 진행하다보니 다음 순서에서 반복하며 '디버깅 당함'을 표시합니다.

 

 

주소들을 따라가며 진행하면 'IsDebuggerPresent'라는 함수를 이용해서 디버거 유무를 파악하는 것을 알 수 있습니다.

 

 

추가적으로 해당 IsDebuggerPresent 명령어에 break을 걸고 시행하면 EAX를 1로 설정하는것을 볼 수 있는데 

디버거 중이면 '1', 아니면 '0'을 표시한다는것도 알 수 있습니다.

 

 

 

-----------------------------------------------------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------------------------------------------------

 

리버싱이 처음이라서 주먹구구식으로 리버싱을 진행했고 OLLYDBG 프로그램의 사용법을 익히지 못해 디버깅 과정도 엉망으로 한 것 같습니다... 아직 배울 점이 많은 것 같습니다.. 

'리버싱 스터디' 카테고리의 다른 글

리버싱 스터디 - 코드엔진 #5,6  (0) 2019.10.07