cgy12306

Easy Unpack 본문

Reversing

Easy Unpack

cgy12306 2019. 7. 30. 08:31

OEP를 찾아라. OEP는 Original Entry Point의 줄임말이다.
패킹을 하게 되면 entry point도 변하게 된다. 그래서 진짜 entry poin인 OEP를 찾아야 한다.
패킹은 원본 프로그램을 보호하기 위해 암호화나 압축, 특정 연산으로 코드를 변조시키는 것이다.

이 지점은 반복문이 계속 돌아가는 지점인데 반복문이 한번씩 바뀔 때마다 값이 바뀌게 된다.

409000에서 004094EE까지 값이 변하는걸 볼 수 있다.

이 지점 또한 바뀌게 된다.

406000에서 00409000까지 변하게 된다.
여기서 PE 구조를 생각해 봐야한다.
PE 파일에서 섹션은 PE가 가상 주소 공간에 로드된 다음 실제 내용을 담고 있는 블록들이다.

섹션의 .text영역은 코드를 담고있는 영역이고, .data는 읽기 전용 데이터 섹션이다.
즉, 4000에서 94EE까지 복호화 해주는 코드이다.

이 점프문을 실행하게 되면 아래와 같은 사진이 뜨게 된다.

이렇게 뜨는 건 한 바이트씩 표현 한 건데 analysis를 하게 되면 사람이 보기 쉽게 4바이트씩 끊어서 보여주게 된다.

Analysis code를 누르게 되면 아래처럼 코드가 다시 변하게 된다.

위로 올려보면 메시지박스를 출력하는 부분을 볼 수 있다.
이 지점에 breakpoint를 찍고 f9를 눌러 그 지점까지 실행시키고, 004010B4까지 실행을 하게 되면 메시지박스를 볼 수 있게 된다.
여기서 생각해 보면 entry point는 프로그램의 시작 지점을 말하며, 섹션 .text의 시작 지점을 말한다.

이 지점이 나오기 전까지는 패킹 돼 있는 부분을 복호화 해주는 코드이고 점프문을 실행하면 진짜 프로그램이 실행되는 지점이기 때문에 00401150이 OEP가 된다.

 

'Reversing' 카테고리의 다른 글

Direct3D  (0) 2019.07.30
ImagePrc  (0) 2019.07.30
Easy Keygen  (0) 2019.07.30
Easy CrackMe  (0) 2019.07.30
[reversing.kr] Ransomware  (0) 2019.07.15
Comments