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

Reversing.kr Imageprc write up 본문

Reversing

Reversing.kr Imageprc write up

kaka09 2017. 11. 10. 23:43

[사진]1-1



프로그램을 실행시키면 조그만한 박스와 함께 그림을 그릴 수 있다.  아무 그림이나 그린 상태에서 Check 버튼을 클릭하면 오른쪽 사진처럼 Wrong 이라는 메세지 박스가 출력된다.  즉, 그림과 그림을 비교하는것 같은데  값을 어떻게 비교하는지, 어떤 값을 넣어야 되는지 살펴보기 위해 디버깅을 시도해보았다.


 


[사진]1-2


해당 사진은 그림 비교시 틀렸을때 분기하는 구문이다. 일단 좀 더 위에 있는 구문을 살펴보기로 하자(비교문을 알기위해)



[사진]1-3


반복문 아래 비교하는 구문이 2개 존재한다. 첫째로 DL,BL 을 비교하여 같지 않을시 [사진]1-2 영역으로 분기하고, 둘째로는 EDI와 15F90을 비교한다. 좀 더 정확한 분석을 위해 아이다로 다시 디버깅을 시도해 보았다.




[사진]1-4


아이다 hex-ray를 이용하여 [사진]1-3을 디스어셈블리한 결과이다.  while문 진입시 조건문에서 BYTE단위로 비교하고 *v13과 v13[v14]가 같지 않을시 Wrong 문자열을 출력하는 박스를 보여주는 구조이다. 아마 그립을 그렸을때 사용자의 입력값을 받고 비교를 하는것 같다. 소스코드 전체적으로 분석해본 결과 비트맵 이미지가 프로그램 내부에 삽입이 되어있는것 같다. 즉 해당 비트맵 데이터를 뽑아서 봐야한다는 얘기다. 이 부분은 hxd를 이용하여 쉽게 해결하였다.



[사진]1-5



9060~1EFE0 영역까지 \xff,\x00 값들이 교차해서 들어가 있는데 여기에 있는 값들 1BYTE씩 가져와 비교를 실시한다. 이제 해야할 일은 9060부터 시작되는 \xFF 값부터 맨 밑에 있는 값 전부를 복사해서 새로운 비트맵 이미지로 만들어줘야 한다.



[사진]1-6


위와 같이 비트맵 헤더를 만든다.(Wiith:250, height:150 기준) 비트맵 헤더의 길이는 36바이트를 차지한다. 따라서 00~35까지 헤더영역

36~xxxx 실제 rgb 색상으로 표시되는 데이터영역이라 할 수 있다.


[사진]1-7




'Reversing' 카테고리의 다른 글

Reversing.kr Replace Write Up  (0) 2017.11.02
Reversing.kr Easy_UnpackMe Write up  (0) 2017.11.02
Reversing.kr Easy_Keygen Write Up  (0) 2017.11.01
Reversing.kr Easy_CrackMe Write Up  (0) 2017.11.01
code engn basic 18  (0) 2017.08.03