Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Study

CodeEngn Basic 02 본문

Reversing/코드엔진

CodeEngn Basic 02

마늘부추 2019. 6. 13. 12:59

2. CodeEngn Basic 02

[그림 2.1]

섹션에 대한 이해가 필요한 문제이다.(아마도)

 

2.1 풀이 과정

[그림 2.2]

파일을 실행시키면 정상적으로 열 수 없다는 메시지가 뜬다.
그렇기 때문에 OllyDbg로는 볼 수 없고 Hex Editor를 이용해야 한다.

 

[그림 2.3]

DOS Header의 시그니처인 MZ는 존재하지만 NT Header의 시그니처인 PE는 찾아볼 수 없다. 그래서 정상적으로 열 수 없는 것이다.
조금 아래에 바로 섹션 헤더가 보인다.

정답은 파일의 키값을 찾는 것인데, 보통 프로그램에 사용되는 문자열은 .data 섹션 또는 .rdata섹션에 있다.

 

※참고
.data Section - 전역변수, 정적변수가 위치하는 섹션
.rdata Section - Const로 선언된 자료

키값은 수정할 수 없도록 Const로 선언했을 것이기 때문에 rdata Section을 살펴본다.

 

[그림 2.4]

섹션 헤더에서 정보를 얻을 수 있다. 순서대로
Name + Misc = 8byte
VirtualSize(메모리에서의 크기) = 4byte
VirtualAddress(메모리에서의 시작 주소) = 4byte
SizeOfRawData(파일에서의 크기) = 4byte
PointerToRawData(파일에서의 시작 주소) = 4byte
이고, 파란색으로 표시한 부분이 파일에서의 크기, 빨간색으로 표시한 부분이 파일에서의 시작 주소이다.

 

.rdata 섹션은 offset 600~7FF이다. 해당 영역을 살펴보자.

 

[그림 2.5]

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