Wargame/CodeEngn

CodeEngn Basic RCE L10

esyeonge 2021. 5. 10. 17:14
문제
OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오.
정답인증은 OEP + OPCODE
EX) 00400000EB03

10.exe를 ollydbg에 올려보니 위와 같은 메시지가 떴다.

아마 파일이 수정되어 OEP가 코드 바깥에 있어서 실행이 제대로 안 되는 것 같다.

 

일단 실행을 시켜보니 PUSHAD가 있었다.

CTRL + F로 command 검색을 해보니 POPAD도 존재했다.

 

이를 바탕으로 패킹이 되어 있다는 것을 알아낼 수 있었다.

UPX로 패킹 된 게 아니라, 어떤 걸로 패킹되었는지 알아보기 위해 PEiD에 넣어보았다.

 

넣어보았더니 ASPack으로 패킹되어 있는 것을 확인할 수 있었다.

 

ASPack 언패킹을 수행하기 위해 찾아보던 중, 아래의 글을 발견하였다.

duwjdtn11.tistory.com/m/236

 

ASPACK unpacking

문제를 풀다가 Aspack을 처음 접해서 해당 공부 내용을 남기고자 블로깅을 진행한다. 0x00. Packer 패커란 실행 파일 압축기를 의미한다, 정확한 명칭은 Run_Time Packer다. '실행 압축'이란 실행 파일에

duwjdtn11.tistory.com

위 글을 바탕으로 분석을 진행하였다.

 

우선 POPAD를 검색하여 찾은 후, RETN에 BP를 찍었다.

그런 다음 프로그램을 실행시키고, BP에서 F8을 눌러 OEP로 이동하였다.

 

이동된 주소는 00445834로, OEP가 00445834임을 알 수 있다.

이후 Ctrl + A를 이용하여 패킹된 코드를 다시 정렬해주었다.

 

정렬이 완료되면 화면이 위처럼 바뀐다.

오른쪽 마우스 - Search for - All referenced text strings를 눌러 문자열을 뽑아보았다.

 

그랬더니 위와 같은 성공 구문을 발견할 수 있었고, 해당 위치로 이동했다.

 

이동해보니 바로 위에 JNZ가 있었고, 이 opcode와 위에서 구한 OEP 값을 더하여 입력하였더니 문제가 풀리게 되었다.

'Wargame > CodeEngn' 카테고리의 다른 글

CodeEngn Basic RCE L12  (0) 2021.05.16
CodeEngn Basic RCE L11  (0) 2021.05.16
CodeEngn Basic RCE L09  (0) 2021.05.10
CodeEngn Basic RCE L08  (0) 2021.05.10
CodeEngn Basic RCE L07  (0) 2021.05.10