类型推断即通过代码的组织形式,已知类型等可用信息对变量的类型进行推断。
如在DegToRad函数中,使用fld指令
0x40002040 fld qword [0x40003038]
我们即可推断[0x40003038]这个全局变量的类型为double类型。
在当前函数中,由于[esp + 4]这个局部变量来自于第一个参数,而第一个参数的类型为fnCallback113,因此可以推断[ESP + 4]这个局部变量的类型也为fnCallback113。
但是在更多的代码中,并不存在这样一种简单的递推关系,因此我们引入类型推断树:
在多次迭代后,基本可以得到比较准确的分析结果。