检查二进制文件是否使用安全检查 (/GS) 编译

逆向工程 视窗 工具 二元分析 软件安全 堆栈变量
2021-06-22 09:02:06

我必须检查大量二进制文件是否使用该/GS选项编译我认为一个很好的指标是检查他们是否有堆栈 cookie。你知道有什么工具可以做到这一点,或者我可以将任何工具构建到脚本中,这样我就不必手动完成了吗?

编辑

找到 Binscope,我会检查它是否能够同时检查更多二进制文件或者它是否可以编写脚本。

编辑2

它需要调试符号,因此这不是解决方案。

编辑3

https://github.com/NetSPI/PEchecker

1个回答
  1. 您可以检查IMAGE_LOAD_CONFIG_DIRECTORY结构,它有一个字段,用于指向SecurityCookie图像中的值。

  2. 在非常旧的二进制文件中,可能不使用此结构,或者SecurityCookie即使二进制文件可能使用/GS. 在这种情况下,您可以扫描@__security_check_cookie@4函数的特征代码签名

    3B0D........7501C3E9 (VC7)  
    3B0D........0F85........C3 (VC7?)  
    3B0D........7502F3C3E9 (VC8+)
    
  3. 您还可以扫描BB40E64E二进制文件中的初始 cookie 值 ( )。虽然我猜这可能会产生一些误报。