ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ASPACK Unpacking
    Basic knowledge/리버싱(Reversing) 2019. 5. 6. 12:49

    패킹 중에서 Aspack 패킹이라는 방법이 있습니다. 

     

    예시를 들기 위해서 Codeengn basic 10번 문제의 문제파일을 가져 왔습니다.

    해당 파일을 PEID 툴을 이용해서 확인해 보겠습니다.

     

    저기 아래에 보면 Aspack v2.0/2.001 이라는 문자열을 확인 할수 있습니다.

     

    올리디버거로 확인해 보겠습니다. 

    좀 아래로 내려가 보면 다음과 같은 화면을 확인 할 수 있습니다. 

     

    PUSHAD 라는 문자열을 확인 할 수 있습니다. 

    PUSHAD는 범용 레지스터에 저장된 값들을 스택에 저장하는 명령어 입니다. 

     

    현재의 레지스터값을 스택에 저장하고 원본 코드로 복구한다음 POPAD를 이용해서 원래의 레지스터 값으로 되돌린 다음 복구한 OEP로 분기합니다.

     

    F8을 한번더 눌러보면 PUSHAD 명령어가 실행 되서 EAX ECX와 같은 레지스터가 들어갑니다.

     

    ESP에 19FF64라는 주소가 들어가 있습니다. 

    해당 주소의 Dump 창으로 가보겠습니다. 

     

    그러면 다음과 같이 Dump창의 주소가 19FF64로 되어있습니다.

     

    주소가 바뀐 것을 확인하고 4바이트 만큼을 드래그 해서 해당 주소로 갑니다 

     

    그러면 POPAD로 가는 분기점에 BP가 걸리게 됩니다.

     

    한번 확인해 보겠습니다.

     

    를 눌러보면 다음과 같이 Hardware BP걸려있는 곳을 보여줍니다.

     

    19FF64에 4바이트 만큼 BP걸려 있습니다. 

     

    POPAD바로 다음으로 넘어갑니다. 

    이대로 쭉내려가보면 진짜 원본 코드의 OEP가 나옵니다.

     

    이처럼 말이지요 

     

    OEP는 445834입니다. 

     

    이제 OllyDump 플러그인을 이용해서 덤프를 떠보겠습니다.

    해당 사이트 에서 설치 하실 수 있습니다 : https://m.blog.naver.com/PostView.nhn?blogId=ln8520nl&logNo=220734849758&proxyReferer=https%3A%2F%2Fwww.google.com%2F

     

    Dump debugged process 를 클릭 하면 다음과 같이 창이 뜨는데 다음과 같이 설정 해야 하빈다.

     

    Modify 에 OEP 주소를 잘 적고 Rebuild Import에 체크를 해제해야 합니다.

    그 이유는 다른 툴로 Import 하는 것이 더 편리하고 좋기 때문입니다.

     

    Dump를 누르면 파일을 저장할 수 있습니다. 

    저장한 파일을 PEID로 확인해 보면 다음과 같이 Aspack이 Unpack 되어 있는 것을 확인 할 수 있습니다.

     

    겉으로는 Unpack이 되어 있는거 처럼 보이지만 내부적으로 봤을때 아직 완전하게 풀린 것이 아닙니다. 

     

    올리디버거로 확인해서 파일을 열어 보면 다음과 같은 에러가 뜨게 됩니다.

    시작 지점이 없다고 뜨게 됩니다. 

     

    그래서 시작지점을 다시 잡아줘야 하는데 아까 체크를 해제했던 Import를 해주겠습니다. 

     

    사용 할 툴 이름은 Import REConstructor 입니다.

     

    설치 방법은 다음과 같습니다.

    https://m.blog.naver.com/PostView.nhn?blogId=ln8520nl&logNo=220734849758&proxyReferer=https://www.google.com/

    아까 다운한 파일을 올리디버거에 넣고 저기 Attach to an Active Process의 ▼를 눌러보면 다음과 같이 파일을 선택 할 수 있습니다. 

     

    위와 같이 파일을 올릴수 있습니다.

    다음의 순서대로 클릭하시면 됩니다. 

    1. AutoSearch을 클릭.

    2. Get Import을 클릭.

    3. kernel32.dll FThunk ... 을 클릭.

    4. Fix Dump을 클릭.

    5. 파일 저장

     

    그리고 파일을 확인해 보면 완전히 Unpack 된 파일을 확인 할 수 있습니다.

     

     

     

    'Basic knowledge > 리버싱(Reversing)' 카테고리의 다른 글

    PE File Format(2)  (0) 2019.03.25
    PE File Format(1)  (0) 2019.03.25

    댓글

Designed by Tistory.