Study
CodeEngn Basic 02 본문
2. CodeEngn Basic 02
섹션에 대한 이해가 필요한 문제이다.(아마도)
2.1 풀이 과정
파일을 실행시키면 정상적으로 열 수 없다는 메시지가 뜬다.
그렇기 때문에 OllyDbg로는 볼 수 없고 Hex Editor를 이용해야 한다.
DOS Header의 시그니처인 MZ는 존재하지만 NT Header의 시그니처인 PE는 찾아볼 수 없다. 그래서 정상적으로 열 수 없는 것이다.
조금 아래에 바로 섹션 헤더가 보인다.
정답은 파일의 키값을 찾는 것인데, 보통 프로그램에 사용되는 문자열은 .data 섹션 또는 .rdata섹션에 있다.
※참고
.data Section - 전역변수, 정적변수가 위치하는 섹션
.rdata Section - Const로 선언된 자료
키값은 수정할 수 없도록 Const로 선언했을 것이기 때문에 rdata Section을 살펴본다.
섹션 헤더에서 정보를 얻을 수 있다. 순서대로
Name + Misc = 8byte
VirtualSize(메모리에서의 크기) = 4byte
VirtualAddress(메모리에서의 시작 주소) = 4byte
SizeOfRawData(파일에서의 크기) = 4byte
PointerToRawData(파일에서의 시작 주소) = 4byte
이고, 파란색으로 표시한 부분이 파일에서의 크기, 빨간색으로 표시한 부분이 파일에서의 시작 주소이다.
.rdata 섹션은 offset 600~7FF이다. 해당 영역을 살펴보자.
offset 600 초반에 있는 함수명들은 IMAGE_IMPORT_BY_NAME 구조체들이다.
무시하고 조금 아래로 내리면 인증 성공 여부에 쓰이는듯한 문자열과 키값으로 의심되는 문자열이 있다.
2.2 Comment
처음에는 문제의 의도를 몰라 아무 문자나 다 넣어봤는데, 지금 생각해보니 섹션마다 용도가 다르기 때문에
offset을 보고 키값이 어디 있을지 알아내라는 것 같다.
'Reversing > 코드엔진' 카테고리의 다른 글
CodeEngn Basic 06 (0) | 2019.06.15 |
---|---|
CodeEngn Basic 05 (0) | 2019.06.15 |
CodeEngn Basic 04 (0) | 2019.06.15 |
CodeEngn Basic 03 (0) | 2019.06.13 |
CodeEngn Basic 01 (0) | 2019.06.13 |