不同IDA Pro版本中的不同功能长度和控制流程图



我正试图分析IDAPro中x86.so库中的一个函数。我有IDA Pro 7.1在1台机器上,IDA Pro 6.8在另一台机器上。两个版本之间的函数长度和相应的控制流图(Graph View和WinGraph32(不同。

在6.8中,函数要大得多,并以通常的序言开始

push ebp
mov ebp, esp

不过,在7.1中,函数结束得更早,6.8仍然认为是相同函数的内存空间的其余部分被拆分为其他函数。然而,这些函数没有通常的序言。

可能值得注意的是,我正在分析的函数可能会被混淆,因此序言/尾声指令序列可能会被其他东西取代。这会干扰IDA Pro检测功能的方式吗?

我应该相信哪一个?

如果没有所有信息(汇编指令、相关代码的已识别交叉引用等(,我们只能得到不同的一般和高级解释。包括一些更具体的细节可能会得到更详细、更具体的答案。

分析函数边界是反汇编程序必须处理的任务之一。这意味着反汇编程序通常使用不同类型的启发式方法来(巧妙地(猜测函数的开始和结束位置。IDA最大的优势之一(尤其是在早期(是它的交互性——用户能够修复、调整和修改自动化分析结果。

由于这是一项艰巨的任务,不同的IDA版本可能会因逻辑的修复和改进而略有不同。在你的情况下,这些改进/修复实际上会恶化最终结果,而不是改善它。需要注意的是,一个例子并不意味着相关的改进是错误的。

被混淆的代码很难正确分析,这也很好地表明了试图阻止成功分析函数结构。

最新更新