티스토리 뷰

1. 분석 하기 전에 ImagePrc를 PEID에 붙여봅니다. C++로 만들어졌고, Win32 GUI가 SubSystem이네요. 

2. ImagePrc를 실행 했을 때 모습입니다. 그림을 그려넣는 걸로봐서 알맞은 글씨나, 그림을 넣어야 되나..?

3. IDA로 본 main 코드입니다. WinMain 함수를 쓰는 코드를 보면 공통점이 lpfnWndProc 부분에 주요 코드를 저장하기 때문에 401130 주소로 가보겠습니다.

4. GetDc, CreateCompatibleBitmap, Rectangle 함수를 쓴 걸로 보아 화면을 띄우는 역할을 하는 부분입니다. 

5. 밑을 내려가다 보면 워게임 문제가 다 그렇듯, 오류 메시지 근처에 답이 존재합니다 ^____^; 오류 메시지의 반대 루틴으로 가게끔 BP를 걸어서 Check를 눌렀떠니 이 반복문이 뜹니다. 자세한 건 밑에서 올리디버거를 통한 어셈블리를 보면서 설명하겠습니다. 

6. 5번 코드의 어셈블리 코드를 보면 004013AE 부분에 15F90(90000) 같거나 이상일 때 넘어가게 되고, 4013A3, 4013A5 부분에서 보듯이 DL,BL 값에 값을 가져와서 비교를 합니다. 여기서 생각이 든게 그림그린 위치를 나타내는 좌표를 비교하는구나 라고 생각했습니다. 원래 메모리에 있는 그림 좌표와 제가 설정한 좌표를 비교해서 맞으면 넘어가는? 그런 구조를 생각했습니다.

7. 그림파일은 HEX값으로 모두 'FF'로 처리가 되어있습니다. 4013A3의 코드를 보시면 ECX의 주소에서 BYTE를 가져와 DL로 이동합니다. 스택 값에서 보시면 DS:[00F0004B]에 있는 FF를 가져와서 집어넣습니다. 바로 밑의 4013A5 코드와 마찬가지로 BYTE값을 가져와서 비교를 합니다.

8. CreateWindow로 창을 띄울때 메모리에 있는 Height,Width 값을 150,200으로 설정했습니다. 이 것을 토대로 이미지를 임의로 bmp파일로 만들어 보겠습니다.

9. 너비 : 200 높이 : 150으로 위와 같이 생성하겠습니다. 

10. WinHex 도구를 이용해 ImagePrc.exe 부분의 그림 HEX를 모조리 끝까지 복사합니다.

11. 이제 아까 높이, 너비를 설정한 bmp 파일에 복사한 ImagePrc.exe의 그림 HEX를 붙여 넣습니다. 

12. 저장 후 열어본 결과입니다. 답이 나오는데 답을 공개하면 재미없으니 한번 해보시길 바랍니다.


'Wargame > reversing.kr' 카테고리의 다른 글

reversing.kr_Replace 풀이  (4) 2015.07.07
reversing.kr_CSHOP 풀이  (0) 2015.07.03
reversing.kr_Ransomware 풀이  (2) 2015.07.02
reversing.kr_Easy_ELF 풀이  (0) 2015.07.01
reversing.kr_Easy Unpack 풀이  (0) 2015.06.30
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함