OutDoorFrog의 리버싱 이야기

CodeEngn.com [Advanced] 2 본문

공부/사이트 문제 풀이

CodeEngn.com [Advanced] 2

OutDoorFrog 2018. 9. 22. 03:45

삽질 하는 개구리 OutDoorFrog입니다.


삽질에 대한 이미지 검색결과


오늘은 CodeEngn Advanced 2 문제를 풀어봅시다.



1. 실행을 시켜보자.


환경 : Windows 10, 64bit



Windows10, 64bit 환경을 기준으로 실행이 안 됩니다.




환경 : Windows7, 32bit




Windows7 32bit 환경을 기준으로 실행이 됩니다.



2. DIE(Detect It Easy)를 사용해서 이유를 밝혀내자.




1. PE32

2. Linker : MS linker(6.0)

3. Compiler : VS C/C++ (12, C++)

4. Tool : VS 6.0


64bit 환경에서 실행이 안되는 이유가 있었습니다.


혹시 문제가 실행이 안되시는 분이라면


Vmware로 Windows7, 32bit 환경을 구축합시다.



3. 분석에 필요한 도구


1. IDA PRO 7.0 (Decompiler 포함)

2. ollyDBG

3. 튼튼한 멘탈




(사실 리YEE버싱은 경험, 멘탈 쌈인 것 같다)



3. 삽질







1. Main 함수를 찾자



IDA가 Main 함수를 알아서 찾아줬습니다. (디컴파일은 안되더군요)


여러 함수와 DLL의 이름이 난잡하게 나열되어 있습니다.


어쩌면 이런 함수들을 미리 사용할지도 모르겠습니다.


출력하는 구문까지 찾아가보겠습니다.



2. 출력 부분



여러 문자열을 출력하는 모습이 보입니다.


참고로  특정한 주소(401D80)를 계속 호출했습니다.

출력에 관한 함수면 _puts, _printf 중 하나일 것이라 생각합니다.



문자열을 받는 부분으로 가봅시다.



3. 문자열을 받는 부분 


특정한 주소(402010)를 호출한 후 Running 상태로 변하였습니다.

콘솔에서 문자열을 받는 함수면 _gets, _scanf일 것 같습니다.


저는 "abcd1234" 를 입력해보겠습니다.



3. 반복문 분석




반복문을 64번을 반복합니다.


Input으로 받은 값을 수정하지도 않고,

왼쪽 시프트 연산한 값을 따로 사용하지도 않고
문자열의 길이(null 제외)를 측정한 후 사용하지도 않고


호출한 특정한 함수(004019f0)를 분석도 했지만 

별 이상이 없었습니다...


낚였구나에 대한 이미지 검색결과
 


4. 호출하는 스레드 발견, 분석



트레이싱하면서, edx에 담겨있는 주소를 호출하는 구문을 발견했습니다.








입력한 문자열, 하드코딩된 문자를 비교하는데


Hex Decoding을 해보니... "CRAAACKED!" 이 나오더군요.






어떤 주소에 "CRAAACKED!"라는 문자열을 옮긴 후에



문제가 끝나게 됩니다.



5. 정답 입력







입력해봅시다.





맞는 것 같습니다.




아쉽게도 삽질 과정이 세세히 나타나지는 않았습니다



Behind 스토리라면


새로운 스레드를 불러오는 구문 때문에 Decompile에 실패했습니다.

역시 핸드-레이가 손에 익더군요...


다음 포스트에서는 아마 해시 함수에 대해 정리하고 
Java를 이용해서 직접 구현하는 과정에 대해 다룰 듯 합니다.


꿀잠에 대한 이미지 검색결과


전 꿈나라로 가겠습니다.



'공부 > 사이트 문제 풀이' 카테고리의 다른 글

Reversing.Kr [HateIntel]  (0) 2019.01.03
Reversing.Kr [Csharp]  (0) 2019.01.03
Reversing.kr [Music Player]  (0) 2019.01.01
Reversing.kr [Easy_ELF]  (0) 2018.11.03
CodeEngn.com [Advanced] 1  (2) 2018.09.18
Comments