외로운 Nova의 작업실
리버싱 입문 - 9(rena 20강) 본문
rena 20강의 경우 언패킹을 하는 문제입니다. 즉, OEP를 찾는 문제이죠. hardware bp를 이용해 OEP를 찾아보겠습니다.
- 문제 인식
먼저 실행시켜보도록 하겠습니다.
자신을 언패킹 해달라고합니다. 올리디버거로 열어봅시다.
- reversing
한번 F8을 눌러 JMP해보겠습니다.
PUSH EBP로 이제 unpacking 함수를 실행하려고하는 것 같습니다. 이 함수가 끝난다면 즉, EBP의 값이 POP된다면 이제 OEP로 JMP할 것임을 예상할 수 있습니다. 따라서 EBP값에 hardware bp를 걸어보겠습니다. 스택에서 follow in Dump를 해주고 메모리 부분에서 오른쪽마우스클릭 - BreakPoint - hardware 눌러주시고, 아래와 같이 설정해주고 OK를 눌러줍니다.
이 상태에서 F9를 누르게되면
여기서 멈추고 F9를 눌러도 실행이 안되는데, 이유는 저도 모르겠습니다. 그냥 저 부분으의 ESI+4를 ESI+10으로 변경해줍니다.(이틀동안 삽질해도 몰르겠습니다..)
그리고 F9를 누르게되면
윗 부분 POP EBP가 실행되고 bp가 걸리게됩니다. 또한 현재 EAX값으로 JMP문이 있으니 아마 OEP로 가는것임을 알 수 있습니다. F8을 눌러보겠습니다.
실제 OEP값은 004271B0 임을 알 수 있습니다. 이제 플러그인을 사용하여 덤프해줍니다.
중요한 부분은 Image Base부분과 Entry Point입니다. 잘 설정해주고 Dump버튼을 눌러줍니다. IAT 복구를 해줘야하지만 이 프로그램은 복구를 안해도 잘됩니다.
'Computer App Penetesting > Reversing' 카테고리의 다른 글
리버싱 입문 - 11(공부 종료) (0) | 2022.12.27 |
---|---|
리버싱 입문 - 10(shellcode injection) (0) | 2022.12.22 |
리버싱 입문 - 8(패킹과 언패킹) (0) | 2022.12.20 |
리버싱 입문 - 7(rena 17강) (0) | 2022.12.19 |
리버싱 입문 - 6(rena 15강) (0) | 2022.12.16 |