외로운 Nova의 작업실

리버싱 입문 - 9(rena 20강) 본문

Computer App Penetesting/Reversing

리버싱 입문 - 9(rena 20강)

Nova_ 2022. 12. 22. 11:49

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 복구를 해줘야하지만 이 프로그램은 복구를 안해도 잘됩니다.

Comments