[reversing.kr] ImagePrc
취미/WarGame 2015. 2. 21. 14:06 |매우 간단한 예제니 중요한 부분만 집고 넘어가자.
체크 버튼을 눌렀을 때 실행되는 루틴인데 메모리상에 그려진 비트맵과 리소스로 읽어들인 비트맵을 비교하는 루틴이다.
처음엔 이 루틴을 넘어가면 해결이 되는 건가 싶었으나, 루틴을 통과해도 프로그램에는 아무런 변화가 없다.
해서, 해답 키는 리소스 안에 그려져 있을 거라는 생각이 들었다.
처음엔 리소스내용을 프로그램에 띄어볼까 했는데 코드 인젝션까지 하는 건 너무 번거로운 작업이 될 것 같아 리소스 데이터만 추출하기로 했다.
먼저 헥스에디터로 bmp 파일 헤더와 이미지 헤더를 복사해 넣고 리소스 데이터를 뒷부분에 넣어준다.
방금 그림판이 만들어낸 비트맵 헤더다.
42 4D - BM (비트맵 파일 헤더의 첫 시작 PE 포맷의 PE와 같은 의미다.)
36 B8 0B 00 (헤더까지 합친 파일의 총 크기, 비트맵을 복원할땐 사용되지 않는다.)
00 00 (예약)
00 00 (예약)
36 00 00 00 (실제 이미지 데이터의 시작 오프셋)
28 00 00 00 (이미지 헤더의 크기)
80 02 00 00 -> Width 값
90 01 00 00 -> Height 값
01 00 18 00 00 00 00 00 00 B8 0B 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
이 헤더를 그대로 쓰면 이미지를 불러올수 없으니 Width 와 Height 를 수정하자
80 02 00 00 -> C8 00 00 00 (ImagePrc에서 사용하는 이미지 Width)
90 01 00 00 -> 96 00 00 00 (ImagePrc에서 사용하는 이미지 Height)
헤더 수정이 끝나면 리소스에서 긁어온 이미지 데이터를 헤더 뒤에 붙여넣자.
그럼 정상적으로 bmp 이미지를 불러올 수 있고
그곳엔 키 값이 적혀있다.
'취미 > WarGame' 카테고리의 다른 글
[reversing.kr] Ransomware (0) | 2015.02.24 |
---|---|
[reversing.kr] Direct3D FPS (1) | 2015.02.24 |
[reversing.kr] Position (0) | 2013.10.30 |
[reversing.kr] replace (0) | 2013.10.25 |
[reversing.kr] Easy_UnpackMe (0) | 2013.10.24 |