-
Instrumentation for WindowsTools/Windows 2024. 3. 4. 17:28
DBI(Dynamic Binary Instrumentation) Tools
DynamoRio
- 무겁지만 대부분의 시스템에서 안정적으로 잘 도는 도구
- 정상적으로 동작하지 않는 문제가 있다면, 다른 버전의 Release를 사용해보는 방법이 있음
Pin
- 무거운 편에 속함
- 나름 안정적으로 동작하고, 일반적인 경우에 LightHouse에서 제공하는 CodeCoverage[64].dll를 사용하면 효율이 좋음
- CodeCoverage.dll은 직접 컴파일 해도 되지만, lighthouse에서 컴파일 된 바이너리도 제공하고 있음
- 직접 컴파일 하려면 [Link]를 따라하면 됨
- 중요한 점은 LightHouse에서 받는 CodeCoverage.dll이 Pin의 버전과 맞는 버전으로 받아야 함
- Pin은 일반적으로 "Windows* (MSVC)"라고 되어있는 버전을 받으면 됨
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
'Tools > Windows' 카테고리의 다른 글
Windbg: Windows Kernel Debugging (0) 2024.03.16 Visual Studio Tips (0) 2024.03.13 Windows Application Fuzzing 기본 세팅 (0) 2023.04.07 kdnet: Windows 10 Kernel Network Debugging Setting (0) 2022.12.02 Windows Kernel Symbol(pdb file) (0) 2021.09.14