728x90


Challenges : Basic 02


 

Author : ArturDents


 

Korean :
패스워드로 인증하는 실행파일이 손상되어 실행이 안되는 문제가 생겼다. 패스워드가 무엇인지 분석하시오

English :
The program that verifies the password got messed up and ceases to execute. Find out what the password is.


--------------------------------------------------------------------------------.


실행시켜 보시면 파일이 깨져 실행할수 없다고 뜰 것입니다.


해서 올리디버그로도 열리지 않을 겁니다.


그럼 최후의 수단은????????


네. 헥사편집기로 열어 보죠.


그럼 무수히 많은(내려보면 양은 생각보다 적지만)


바이너리값이 펼쳐집니다.


내리다보면 이런 부분이 있을 겁니다.




요런 부분을 발견 할 수 있습니다.


사실 이렇게는 잘못된 접근법이고




정적혹은 전역 변수들은 PE구조에서 data섹션(읽기,쓰기 가능)에 저장이 됩니다. 그리고


data섹션에도 여러가지가 있는데 그중 .rdata섹션은 읽기전용 섹션으로


상수값이 저장이 되는 영역입니다. 헥사편집기에서 PE구조체에 따라




요 부분이 .rdata의 헤더 부분이고 저 부분의


17~20번째 4바이트는 "파일"에서 .rdata영역의 크기이고            ) 화면에서 00 02 00 00

21~24번째 4바이트는 "파일"에서 .rdata영역의 시작주소이다.     ) 화면에서 00 06 00 00


저 값들은 "리틀 엔디언" 값이므로 크기는 200h 이고 시작주소는 600h 입니다.




최종적으로 비밀번호가 지역변수나 알고리즘에 의한 리턴값이 아닌이상


data섹션에 존재할 것이고 따라서 처음에 야매(?)로 발견한 비밀번호값이


600h~800h 사이에 있으므로 비밀번호는 상수(#define, const 등)으로 존재하는걸 알 수 있습니다.

(원래는 이런 접근을 하라고 만든 문제 인 것 같네요.)

728x90

+ Recent posts