본문 바로가기

리버싱

[codeengn]코드엔진 basic RCE L10

반응형

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

 

10.exe를 열어보니 암호화되어있을 수도 있다고 한다.

ASPack은 처음 봤는데, 올바른 OEP를 찾아서 Dump를 띄우면 된다고 한다.

(9번처럼 POPAD를 통해 어떤 부분을 빼고 PUSHAD를 통해 넣었음을 유추할 수 있다.)

9번을 풀어야 이걸 풀 수 있나보다.

PUSHAD가 있으니 빼와서 넣었음을 예측해볼 수 있다.

POPAD를 찾아보고 breakpoint를 걸어보려 했는데,

실행되지 않을 수도 있다는 메시지를 볼 수 있었다.

그래서 456335부터는 실행되지 않을 수도 있다는 것을 확인했다.

일단 재시작하여 F8을 통해 진행해보았다.

PUSHAD를 한 후에

456577을 CALL한다는 것을 보았고, ESP가 19FF54임을 확인했다.

ESP를 통해 Follow in Dump를 해준다.

그럼 밑부분으로 이동하는데, ESP의 값이었던 19FF64로 이동한다.

이 4byte만큼 드래그한 후, BreakPoint를 걸어준다.

POPAD로 가는 데에 breakPoint를 걸기 위함이다.

Hardware breakpoints를 통해 브레이크가 잘 걸렸는지 확인할 수 있다.

 

F9를 통해 breakpoint를 건 곳으로 가본다.

그럼 이렇게 나온다.

여기서 F8을 통해 쭉 가본다.

근데 갑자기 이 부분으로 옴을 확인할 수 있다.

OEP는 445834일 것이다.

 

제대로 된 OEP로 맞춰줄 것이기 때문에,

Dump를 뜬다.

EntryPoint를 찾은 곳으로 Modify한다.

dump뜬 파일을 원하는 파일로 저장한다.

난 이미 해두어서 저렇게 저장했다.

근데 'NtdllDefWindowProc_A을 DLL~에서 찾을 수 없습니다.'라고 나올 것이다.

나는 ImportREC를 사용했다.

이를 사용하기 위해선 사용하려는 파일, 즉 10_dump를 실행시켜놓아야 한다.

즉, 이 상태로 프로그램을 사용하면 되는 것이다.

그럼 맨 위에 파랑색으로 되어있는 부분처럼 dump뜬 파일을 클릭해준다.

이제 autoSearch -> Get Imports를 누르면 이렇게 많은 것들이 뜰 것이다.

이 순서대로 누르고 Fix Dump를 누르면 파일을 저장할 수 있다.

난 10_Dump_로 저장했다.

 

아까 설정한 445834로 되어있음을 확인할 수 있다.

text_strings를 검색해보니 잘 되었다고 하는 부분을 확인할 수 있다.

그럼 이제 '등록성공'으로 가는 분기점의 OPCODE를 구해야 한다.

분기점을 찾았다.

OPCODE는 7555임을 확인할 수 있다.

 

OEP + OPCODE를 넣어 답을 입력하면 된다.

반응형

'리버싱' 카테고리의 다른 글

[CodeEngn]코드엔진 Basic RCE L15  (0) 2020.07.29
[CodeEngn]코드엔진 basic RCE L14  (0) 2020.07.27
[CodeEngn]코드엔진 basic RCE L09  (0) 2020.07.27
[CodeEngn]코드엔진 basic RCE L13  (0) 2020.07.26
[CodeEngn]코드엔진 basic RCE L12  (0) 2020.07.26