문제 : OEP를 구한 후 '등록성공' 으로 가는 분기점의 OPCODE를 구하시오.
정답인증은 OEP + OPCODE
EX) 00400000EB03
답 : 004458347555 <- 드래그
1. 프로그램 패킹 여부와 동작 방식 파악
2. 디버거로 디버깅
디버거를 통해 파일을 열면 이렇게 패킹된 화면을 볼 수 있다.
POPAD에서 레지스터 값들을 복구한다는 특징을 이용해 ESP값에 하드웨어 브레이크포인트를 걸고 F9를 누르면
이런 화면이 나온다.
JNZ SHORT 004564FC 라는 명령어가 실행되고, PUSH 00445834 명령어가 실행되면,
결론적으로 00445834로 이동하게 된다. 그리고 이곳이 OEP이다.
여기서 OllyDumpEx로 덤프를 뜨고 IAT를 복구해준후 얻어낸 파일을 다시 디버거로 연다.
프로그램을 F9를 실행하다가 어느순간 창이 아래와 같은 화면으로 바뀌었고,
초록색 텍스트가 분기점의 단서가 될 것 같아 주변 코드들을 둘러 보았다.
004454D4에서 분기명령어가 보인다. 이곳의 OPcode는 7555이다.
따라서 정답은 004458347555 이다.
'리버싱 > 리버싱 문제 코드엔진' 카테고리의 다른 글
코드엔진 Basic RCE L09 (0) | 2021.07.27 |
---|---|
코드엔진 Basic RCE L08 (0) | 2021.07.21 |
코드엔진 Basic RCE L07 (0) | 2021.07.21 |
코드엔진 Basic RCE L06 (0) | 2021.07.13 |
코드엔진 Basic RCE L05 (0) | 2021.05.25 |