본문 바로가기

Hacking/Reversing

CodeEngn_basic_10

Basic RCE L10

 

OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오.
정답인증은 OEP + OPCODE
EX) 00400000EB03

 


 

문제의 시작은 실행으로 시작한다.

 

 

실행시켜봤더니 아무런 입력이 되지 않았다.

 

 

About버튼을 눌러도 소개같은 글이 있을 뿐 아무런 도움될만한 것은 없었다.

 

 

그래서 어떻게 패킹되어있는 것 같아 봤더니 Aspack v2.0패킹이 되어있다. Aspack v2.0 언패킹을 해야할 것 같다.

 


 

언패킹을 진행하기 전에 Aspack의 특징을 살펴보려한다. 

Aspack은 'PUSHAD' - 압축해제 코드 - 'POPAD' - 'RETURN' ( OEP로 이동 )의 과정을 거쳐 진행된다.

때문에 우리는 Ollydbg를 이용해서 OEP를 우선적으로 알기 위해서 POPAD에 BreakPoint를 걸고 OEP에 도달할 ㄸ까지 진행해보기로 했다.

 

 

ctrl + F를 통해서 POPAD를 검색하여 찾아간 뒤에 BP를 걸고 RETURNR까지 f7로 진행해주면

 

 

현재 OEP 부분,

OEP를 찾았다면 이제 필요한 것은 Dump파일을 떠주면 되는데, ollydump라는 플러그인을 이용해서 Dump를 떠줄 수 있다.

ollydump플러그인은 검색하면 많으니 아무거나 적용하면 된다.

 

 

 

Start Address는 OEP의 Base Point를 뜻하며 Modify는 Entry Point를 수정할 수 있게 입력해주는 부분인데 여기에다가 OEP의 Base Point를 제외한 나머지 주소를 입력해주면 된다.

그리고 Rebuild import의 체크를 해제해주는데 이유는 ollydbg에서보다 다른 프로그램에서 하는게 더 좋아서이다.

그렇게 모두 수정후 Dump를 눌러서 Dump파일로 생성해주면 끝

이 아니다..

우선 Dump를 떠준 프로그램을 실행시켜 보면 다음과 같이 오류가 출력된다.

 

 

제대로 시작하지 못한다고 하는데, 우리가 아까 Rebuild import부분을 체크 해제했기 때문에 IAT가 꼬여있을 것이다.

꼬여있더라도 ollydbg로 열어보면 registered... well done이라는 문구를 찾을 수 있을 것인데 이 부분으로 이동한 뒤에 위로 조금 올라가보면 점프문이 있을 건데 이 부분이 조건 분기점이다.

( 보통 성공 윗쪽에 있는 점프문부분이 입력한 값이 맞는지 확인하는 부분이다. )

 

 

그리고 이 방법 이외에도 꼬인 IAT를 풀어주는 것도 있는데, 이 때 사용할 툴의 이름은 Import REConstructor이다.

 

IAT가 꼬여있는 문제파일을 ollydbg로 열어둔 뒤에 Import REConstructor을 실행시켜준다. 순서는 다음의 순서로 진행된다.

 

1. 실행되어있는 문제파일 선택

2. AutoSearch 클릭

3. Get Imports 클릭

4. kernel32.dll FThunk... 클릭

5. Fix Dump 클릭

6. 저장할 때 IAT가 꼬여있는 문제파일( 내것의 경우에는 10_dump_1.exe )선택후 저장 

 

이렇게 하면 완전히 Aspack 언패킹이 완료된다.

 

 

 

 

 

'Hacking > Reversing' 카테고리의 다른 글

CodeEngn_basic_11  (0) 2020.06.27
UPX 언패킹 하는법  (0) 2020.06.21
CodeEngn_basic_9  (0) 2020.06.14
CodeEngn_basic_8  (0) 2020.06.14
CodeEngn_basic_7  (0) 2020.06.14