【发布时间】:2021-06-25 15:02:54
【问题描述】:
我正在尝试查看在常见使用场景下,常见软件不需要多少代码块。有没有静态二进制分析工具可以计算出一个Linux ELF的总基本块数?
【问题讨论】:
标签: linux elf static-analysis
我正在尝试查看在常见使用场景下,常见软件不需要多少代码块。有没有静态二进制分析工具可以计算出一个Linux ELF的总基本块数?
【问题讨论】:
标签: linux elf static-analysis
好的,我用Angr写了一个脚本来获取所有的基本块:
#!/usr/bin/env python3
# A script to dump function and basic block locations, size, etc.
# Install angr (https://docs.angr.io/introductory-errata/install) before use it.
# @author: xiaogw (https://stackoverflow.com/users/1267984/xiaogw)
import angr
import sys
def dump_functions_bbs(p, cfg):
for key in cfg.kb.functions:
for bb in cfg.kb.functions[key].blocks:
print("%s: %s" % (hex(bb.addr), hex(bb.size)))
def main(argv):
if (len(argv) < 2):
print("Usage %s <BIN>" % argv[0])
return 1
path_to_binary = argv[1]
p = angr.Project(path_to_binary, load_options={'auto_load_libs': False})
cfg = p.analyses.CFGFast()
dump_functions_bbs(p, cfg)
return 0
if __name__ == '__main__':
main(sys.argv)
【讨论】: