문제: 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 |