PEcompact ver.2.78a ~ 3.11.00 Manual unpacking

Posted by nopsled
2015.01.26 14:13 분석생활

해당 바이너리는 PEcompact ver.2.78a ~ 3.11.00로 패킹되어 있지만 언패커가 없는 상황

   

그러므로 어쩔 수 없이 매뉴얼 언팩을 시도.

   

오늘도 어김없이 OEP를 찾아 떠난다.

   

   

올리디버거로 열어보면 다음과 같은 주소에서 시작이 되는데 계속 진행시켜준다.

   

ZwContinue가 나오면 F7을 눌러서 진행합니다. (정확하진 않지만 루트킷 방식이라 생각됨. SYSENTER가 나오는 것으로 보아 SSDT Hooking)

   

FastSystemCall이 나오는데 F7로 다시 한번 더 실행

   

SYSENTER가 나오는데 F8로 진행합니다.

   

진행하면 PUSHAD대신 PUSH EBP, EBX, ECX, EDI, ESI, EDX를 이용하여 레지스터 값들을 저장시키는 것을 볼 수 있습니다.

   

F8을 눌러서 계속 진행합니다.

   

VirtualAlloc을 이용해서 메모리 할당해주고..

   

더 진행하다보면 POP EDX, ESI, EDI, ECX, EBX, EBP하고 EAX값으로 JMP시키는 것을 볼 수 있습니다.

   

저기까지 쭉 진행.

   

진행하면 EAX의 주소로 JMP하게 됩니다.

EAX : 0040AB87, Entry : 00400000이니 OEP는 AB87이네요.

   

이제 F7을 눌러서 진행시키고 Ctrl+A를 눌러서 코드재정렬 해줍니다.

   

언팩끝.

   

이제 덤프뜨고 IAT 다시 맞춰주면 끝.

   

   

OEP자동으로 찾아주니 IAT AutoSearch

   

Get Imports로 IAT불러주고

   

덤프떠진 파일 선택해서 제대로 IAT 맞춰준다.

   

경고문 하나 떠주니.. 수동으로 IAT 고쳐줘야겠다.

   

제대로 되어있으니 언팩 다 됬네

   

이제 헥스레이로 열어보면

   

VMProtect 시X!

   

  1. 컴퓨터가 취미인 학생인데 가끔 프로그래밍이 질릴때
    쉬운 리버싱 예제 몇개 기웃거리는 정도인데, 리버싱은 취미로 하기엔 너무나 방대하네요ㅠㅋ
    • 안녕하세요 예지력님
      블로그 깔끔하니 잘만드셨네요~ㅋㅋ
      처음엔 다 그렇게 시작하는거죠 저도 그땐 그랬으니깐요 ㅎㅎ
      조금씩 해보세요 ㅎㅎ 시간은 아직 많으니~ 화이팅하세요!!
    • 네, 감사합니다
      근데 하다보면 뭔가 이걸 해내야한다는 압박을 스스로에게 하네요ㅋㅋ 따라서 더 큰 성취감을 얻기도하는것같아요.

      설 재밌게 보내세요!
    • 그런 생각도 하시고 대단하시네요~ 하면서 배우는 종목이니깐요 뭐ㅎㅎ 네! 즐거운 설 보내세요~
이 댓글을 비밀 댓글로