프로그램을 실행시키면 그림을 그릴수 있고 check 버튼을 누르면 wrong이라고 메시지 박스가 출력된다.



위 코드가 check버튼을 누르면 실행되는 코드이다.


코드를 보면 현재 내가그린 그림과 리소스에 저장된 이미지를 가져와 바이트단위로 비교를 한다.


즉 바이트 단위까지 맞춰서 그림을 똑같이 그려야 wrong 메시지가 뜨지 않을것이다.


상식적으로 불가능 하다.


첫번째로 생각한것은 리소스를 뽑아와 실제 이미지로 만들어서 보는것이고 


두번째로 생각한것은 메시지루프에서 윈도우메시지가 wm_create일때 즉 윈도우가 생성될때 아예 리소스를 띄워주는 것인데


두번째 방법은 함수조사도 해야하고 첫번째 방법이 더 빠를거 같아서 첫번째 방식을 택했다.



pe뷰어를 통해 보면 리소스 섹션에 비트맵형식의 리소스가 있다.


파일 시그니쳐 및 파일 헤더가 없기 때문에 긁어와도 온전한 이미지 파일이 되지 못할것이라 생각했다.



먼저 실행파일 내에 리소스를 뽑아주는 툴을 통해 리소스를 뽑았다.



헤더 없는 리소스가 뽑혔다.


이제 비트맵 이미지 헤더를 위에 만들어주면 될거같다.


비트맵 이미지 구조를 외우고 있는 사람은 없을것이기 때문에 나도 검색을 해봤다.


비트맵 이미지의 기본 구조는 크게 파일헤더,이미지헤더,컬러테이블,픽셀테이블로 이루어진다고 한다.



먼저 파일헤더이다.


빨강 : 파일 타입 정보


노랑 : 파일 크기


파랑 : 예약 영역(임시 할당)


검정 : 헤더의 크기



다음은 이미지 헤더이다.


빨강 : 이미지 헤더크기 (최소 40byte)


보라 : 이미지의 폭, 이미지의 높이


분홍 : 비트 플레인 수(현재 지원값은 1이라고 해서 1로 했음)


갈색 : 비트수 (16비트,24비트 비트맵 등이 있는데 구글 따라 24로 해봤음)


검정 : 압축타입(압축되지 않았음)


노랑 : 이미지 파일 크기(헤더크기를 제외한 순수 이미지 파일의 크기)


초록 : 무엇인지는 모르겠으나 0으로 채워져있음(마찬가지로 구글따라...)






위처럼 헤더를 생성해주고 비트맵 파일을 생성하면



하얀 바탕에 검정색 글씨가 쓰여있다.


이게 플래그인데 뭔지 공개하면 안되니까 빨강색으로 지워주었다.





'문제 > Reversing.kr' 카테고리의 다른 글

Reversing.kr Replace  (0) 2017.01.23
Reversing.kr Ransomware  (0) 2017.01.21
Reversing.kr x64 Lotto  (0) 2016.10.06
Reversing.kr HateIntel  (0) 2016.10.05
Reversing.kr Music Player  (0) 2016.10.04

+ Recent posts