ABOUT ME

-

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

    [2021/09/24][짤막한 이야기 - 임포트 주소 테이블 복원(예시)]
    기본적으로 핀툴에서는 "메모리 쓰기" 중 4바이트 단위로 잘라내어 각 4바이트가 특정 함수의 주소에 해당하는지 판단하고, 해당 함수의 이름을 반환하는 API가 존재한다.
    "RTN_FindNameByAddress API"가 그것인데, 문제는 모든 함수를 올바르게 판단해주지는 못한다는 것이다. (즉, 안전성이 떨어진다.)
    따라서 패킹된 프로그램의 IAT를 복원할 때, 위 PinTool API에 의존하는 것보다는 패커 자체적인 IAT 복원 방법을 역산하는 것이 더 타당하다.
    이것이 언패킹 루틴 내의 "LoadLibraryA"와 "GetProcAddress" 함수를 이용하여 IAT를 복원하는 이유이다.
    위 두 함수의 인자값과 반환값을 확인하여 임포트 정보를 로그 형태로 추출할 수 있다.
    추가적으로 임포트 정보가 패킹된 프로그램 내에 기록이 될 것인데, 기록이 되는 주소가 원본 IAT의 위치가 된다.
    그리고 원본 IAT의 위치 또한 핀툴을 이용하여 "메모리 쓰기"를 모니터링하여 획득할 수 있다.
    [관련된 문서 - 핀툴 프로그래밍 기본서[제3부. 핀툴로 UPX 언패킹하기]]
    #이야기 #루니프 #핀 #핀툴 #패킹 #언패킹 #IAT #구성 #복원 #재건 #함수인자값 #함수반환값 #IAT위치

    [2021/09/24][Short Story - Import Address Table Restoration(Example)]
    Basically, there is an API that determines whether each 4 bytes corresponds to the address of a specific function by cutting out 4 bytes of "Memory Write" in PinTool, and returns the name of the function.
    The "RTN_FindNameByAddress" API is that, but the problem is that it doesn't correctly determine all functions. (i.e., the safety is reduced.)
    Therefore, when restoring the IAT of a packed program, it is more reasonable to inversely calculate the IAT restoration method of the packer itself rather than relying on the above PinTool API.
    This is why IAT is restored using "LoadLibraryA" and "GetProcAddress" functions in the unpacking routine.
    You can extract the import information in log format by checking the argument values ​​and return values ​​of the above two functions.
    Additionally, the import information will be written in the packed program, and the address to be written becomes the location of the original IAT.
    And the location of the original IAT can also be obtained by monitoring "Memory Write" using PinTool.
    [Related Documents - Basic Book for PinTool Programming[Part3. Unpacking UPX with PinTool]]
    #Story #LootNiP #Pin #PinTool #Packing #Unpacking #IAT #Configuration #Restoration #Reconstruction #FunctionArgumentValue #FunctionReturnValue #IATLocation

    728x90
    반응형
Designed by Tistory.