Tools/Windows

Instrumentation for Windows

TESTING 2024. 3. 4. 17:28

DBI(Dynamic Binary Instrumentation) Tools

DynamoRio

  • 무겁지만 대부분의 시스템에서 안정적으로 잘 도는 도구
  • 정상적으로 동작하지 않는 문제가 있다면, 다른 버전의 Release를 사용해보는 방법이 있음

URL: https://dynamorio.org/

 

Pin

  • 무거운 편에 속함
  • 나름 안정적으로 동작하고, 일반적인 경우에 LightHouse에서 제공하는 CodeCoverage[64].dll를 사용하면 효율이 좋음
    • CodeCoverage.dll은 직접 컴파일 해도 되지만, lighthouse에서 컴파일 된 바이너리도 제공하고 있음
    • 직접 컴파일 하려면 [Link]를 따라하면 됨
    • 중요한 점은 LightHouse에서 받는 CodeCoverage.dll이 Pin의 버전과 맞는 버전으로 받아야 함
  • Pin은 일반적으로 "Windows* (MSVC)"라고 되어있는 버전을 받으면 됨

URL: https://www.intel.com/content/www/us/en/developer/articles/tool/pin-a-dynamic-binary-instrumentation-tool.html

 

TinyInst

  • 가벼워서 사용하기 편하고, 코드가 간결해서 수정이 용이함
  • 구글에서 관리중이기 때문에 나름 신뢰성이 있는 도구
  • 정상적으로 Coverage가 측정되지 않는 문제가 있음. Multi-Thread에 취약함(사실 이건 대부분..)
  • 특정 상황에서 함수 end point를 잘 짚지 못하는 문제가 있는 듯
    • 아직까진 특별한 이슈가 없는 것으로 보아 인지를 하지 못하고 있는 것 같기는 한데, 누군가 이슈를 올려주길 기다리고 있음.
    • 이 말인 즉슨 TinyInst를 사용하는 Fuzzer들도 경우에 따라서는 문제가 있을 수 있다는 점...? (TinyAFL / Jackalope)

URL: https://github.com/googleprojectzero/TinyInst

 

Support Tool

LightHouse

  • IDA Pro Plugin으로 Coverage를 시각적으로 잘 보여주는 툴
  • 처음에는 IDA Pro Plugin으로 등장했지만, 현재는 Binary Ninja에서도 지원이 가능함
  • DynaoRio / Pin 지원, TinyInst는 공식적으로 지원한다고 되어있지는 않으며 사용은 가능하나 정상적으로 동작하지 않는 문제가 있음. 이 이슈는 LightHouse가 아니라 TinyInst의 문제임

URL: https://github.com/gaasedelen/lighthouse