[CodeEngn Basic 2] Do you know recovery to EXE?

2017. 8. 20. 01:390x02 Reverse Engineer/0x01. CodeEngn

728x90

문제: The program that verifies the password got missed up and ceases to execute. Find out what the password is.


바이너리 실행:

 

 [그림 1] 으잉..? 뭐야 뭐야~


 


 [그림 2] PE가 아닌데 시그니처는 MZ다 ? ? 


의심이 된다. 이럴 땐 매직넘버를 확인할 수 있는 Hexadecimal을 볼 수 있는 아무 프로그램이나 실행시켜본다. 나는 HxD가 있어서 이것을 이용해보겠다.


 

 [그림 3] 4D 5A는 파일시그니처 MZ이다.


☆ 잠시 알고 갑시다 ☆


PE파일은 무엇일까요?

윈도우 실행 파일에 붙어 있는 정보를 PE 파일이라고 부르면서 이 놈은 커다란 구조체로 구성되어 있으며 내부에 수 많은 테이블과 멤버가 존재한다. 


종류 로는 exe, scr, dll, ocx, sys, obj 가 있다.


종류 

설명 

EXE 

실행 파일 

SCR 

화면 보호기 

DLL 

동적 라이브러리 

OCX 

라이브러리(Active X) 

SYS 

시스템 드라이버 

OBJ 

오브젝트 파일 

 



그렇다면, 잘못된 파일은 아니라는거고 (실행파일은 맞다는거고) 

문제를 한번 더 상기해보자...


해당 파일은 패스워드를 입력해야 하는 바이너리인데 손상이 되어서 실행이 안된다. 

하지만, 비밀번호는 무엇인지 알 수 있나보다. 그렇다면? HEXA값에 쏘옥 숨어있을 수도 있다.


당장 확인하러 뛰어간다` ~~ `

 

 [그림 4] 이 부분은 메모리에 로드 된 PE구조 


 


 [그림 5] 해당 바이너리에서 사용되는 함수와 DLL들...


 

 [그림 6] 실패문장, 성공문장, 그리고... 정답..


이 문제는 손상된 파일의 비밀번호를 알아내려면 헥사 에디터를 열어야 하는데 이것에 대해 아는지 테스트 하는 문제 인 것 같다.