ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [2021/09/23][짤막한 이야기 - 임포트 주소 테이블 복원(방법론)]
    짤막한 이야기 2021. 9. 23. 06:33
    728x90
    반응형

    [2021/09/23][짤막한 이야기 - 임포트 주소 테이블 복원(방법론)]
    패킹된 프로그램에서 IAT가 훼손되어있다면, 그 프로그램은 실행중에 자연스럽게 언패킹되면서 IAT를 복원하여야 한다.
    혹은 IAT를 복원하지 않더라도 적어도 그 프로그램이 사용할 함수 주소를 어딘가에서 가져올 수 있어야 한다.
    일반적으로 자주 사용되는 패커는 IAT를 자동으로 복원하기 위한 방법을 이미 프로그램 어딘가에 가지고 있다.
    예를 들어, UPX 패커의 경우에도 IAT를 크게 훼손시키지만 언패킹이 완료되는 시점에서는 사용 함수 주소를 IAT 위치에 정확히 복원해낸다.
    그리고 함수 주소는 "LoadLibraryA"와 "GetProcAddress"를 이용하여 획득하는 패커가 많다.
    그리고 이것들 또한 함수이기 때문에 IAT에는 이 함수 주소는 남아있는 경우가 많다.
    즉, IAT에 함수 주소가 극단적으로 적은데 "LoadLibraryA"와 "GetProcAddress" 함수 주소는 저장되어 있다면, 매우 높은 확률로 이 프로그램은 패킹된 것이다.
    핀툴을 이용하면 해당 함수의 인자값과 반환값을 획득하여 IAT를 자동으로 재건(Reconstruct)할 수 있게 된다.
    핀툴을 이용한 함수 정보 획득은 앞선 포스트에서 상세하게 설명한 바 있다.
    [관련된 문서 - 핀툴 프로그래밍 기본서[제3부. 핀툴로 UPX 언패킹하기]]
    #이야기 #루니프 #핀 #핀툴 #패킹 #언패킹 #IAT #구성 #복원 #재건 #함수인자값 #함수반환값

    [2021/09/23][Short Story - Import Address Table Restoration(Methodology)]
    If the IAT is damaged in the packed program, the program must restore the IAT while unpacking it during execution.
    Or even if IAT is not restored, at least the function address to be used by the program should be able to be obtained from somewhere.
    A common used packer already has somewhere in the program a way to automatically restore the IAT.
    For example, even in the case of a UPX packer, IAT is greatly damaged, but when unpacking is completed, the address of the used function is accurately restored to the IAT location.
    And there are many packers that obtain the function address using "LoadLibraryA" and "GetProcAddress".
    And since these are also functions, this function address is often left in IAT.
    In other words, if there are extremely few function addresses in the IAT and "LoadLibraryA" and "GetProcAddress" function addresses are stored, there is a very high probability that this program is packed.
    If you use the PinTool, you can automatically reconstruct the IAT by acquiring the argument values and return values ​​of the function.
    Acquisition of function information using the PinTool has been described in detail in the previous post.
    [Related Documents - Basic Book for PinTool Programming[Part3. Unpacking UPX with PinTool]]
    #Story #LootNiP #Pin #PinTool #Packing #Unpacking #IAT #Configuration #Restore #Reconstruct #FunctionArgumentValue #FunctionReturnValue

    728x90
    반응형
Designed by Tistory.