radare2 的结果不正确

逆向工程 艾达 拆卸 雷达2
2021-07-11 03:25:23

我用radare2分析libpng_amd64.so.1.6.34,命令如下:

r2 = r2pipe.open(binary_file)
r2.cmd('aaa')
funcs = r2.cmdj('aflj')

len(funcs) 是461,但是IDA得到的函数个数是526,除了字符串的个数,import、export... 我查看了radare2的结果,发现了一些问题,比如函数png_write_row后面是png_write_rows. Radare2 无法识别第二个函数png_write_rows并考虑这两个函数的所有代码png_write_rowIDA 工作正常。

为什么它们不同?为什么radare2不能正确识别功能?我如何使用它来获得正确的结果?

1个回答

这可能是由于用于分析的不同算法或为这些算法设置的不同选项。r2(以及IDAGhidra)有多个选项可以影响代码的分析方式以及函数(和其他元素)的识别方式。

在这种情况下,png_write_rows据我所知,这个函数没有在 lib 中的任何地方调用,也没有标准的函数序言,所以可能是因为r2无法识别它并正确标记为函数。

怎么修?您始终可以修改最终分析并定义一个函数,其中标志为png_write_rows您可以通过键入“df”(定义函数)在可视模式下执行此操作。

无论如何,如果这是正确的情况(检查)或为什么由于其他原因无法正确识别此库中的某些元素,我将打开一个r2 问题以获取更多信息analysis flagse~analr2