cgy12306

ImagePrc 본문

Reversing

ImagePrc

cgy12306 2019. 7. 30. 08:32
ImagePrc 파일을 열어 패킹이 되어있는지 ExeInfo 툴로 확인한다.
패킹은 안되어 있다.

파일을 열어보자.
 

이 함수를 실행시키면 그림 그리는 파일이 실행되는 것을 확인할 수 있다.
 
쭈욱 실행하다 보면


이 지점에서 계속 반복문이 돌아가는 것을 볼 수 있다.
ECX에 있는 값을 DL에 넣고 EAX+ECX에 있는 값을 BL에 담아서
BL DL이 같지 않으면 점프하는 것을 볼 수 있다. BL DL이 같아야 한다.
여기서 의심을 해보면 그림을 그렸을 때 비교가 되어지는 원본 값과 우리가 그린 값을 비교하는 것으로 보인다.
ECX의 주소를 직접 찾아가서 값을 확인해보자.




다시 EAX+ECX의 값을 찾아가서 값을 확인해보자.
 


 
EAX+ECX 부분을 쭈욱 내려봤을 때 중간 중간에 00이라는 값이 들어가 있는 것을 볼 수 있다.


 
다시 추측을 해보면 저 둘 중 하나는 내가 그린 영역이고, 다른 하나는 원본 파일이다.
원본 파일은 헥스 에디터로 열면 처음 시작점 이전의 값이 보일테고, 그 값과 저 두개의 헥스 값을 비교하면 어떤 지점에 원본 값이 들어있을 것 같았다.


원본 값은 00 이전에 01 값을 갖고 있다.


4로 시작하는 이 부분이 원본 값이라는 의미이다.
그럼 비교를 어디까지 하느냐가 문제이다. IDA로 파일을 분석했을 때 의심이 가는 지점이 있었다.


eci 1씩 증가시켜서 0x15F90과 비교하는 것이다. 왠지 저 부분을 모두 비교하는 것 같아서. 헥스 에디터의 첫 부분과 저 수를 더해봤다.
9060 + 15F90 = 1EFF0
매우 비슷하게 파일의 끝지점이 나왔다.


그럼 이 영역을 복사해서 처음에 나왔던 5로 시작하는 주소에 붙여 넣어 보자.
원본파일의 시작지점은 004E060이고 끝 부분은 15F90을 더한 지점(00493FF0)이다.
 
값을 넣을 지점은 05270048이다. 끝 부분은 15F90을 더한 지점(05285FD8)이다


 

저 반복문을 통과했다.


wrong이라는 창은 안 뜨고 다시 반복한다. 왜 이러지..
 
다시 다시
 
원본 파일 부분을 헥스로 열어보면 YYYY..YY 이런게 있다.
png 포맷 형식은… A…A 이런 식으로 되어있지만. bmp 파일을 hex로 열어보면 같은 …Y..형식으로 나온다.
그러면 우리는 파일이 bmp라는 확장자를 알아냈다.
하지만 사이즈를 알아내야 한다.


height 150
width 200이다.


그림판으로 150, 200짜리 bmp 파일을 생성해서 hex로 열어보자.


시그니처는 그대로 두고, 뒷부분을 모두 지우고 원본파일의 헥스를 붙여 놓고 저장하자. 그러면 어떤 이미지가 뜰것이다.








 

'Reversing' 카테고리의 다른 글

Direct3D  (0) 2019.07.30
Easy Unpack  (0) 2019.07.30
Easy Keygen  (0) 2019.07.30
Easy CrackMe  (0) 2019.07.30
[reversing.kr] Ransomware  (0) 2019.07.15
Comments