角色对象的分析通常都是游戏中最简单的数据,但是也有些游戏会在这数据上面做一些手脚,让我们无法很快得到正确的公式。以《天堂2》为例我们来对角色对象进行分析。
首先通过CE对角色的蓝量进行扫描,可以得到较少的结果(如图)
用OD对这三个地址下访问断点,发现其断下的条件各不相同,而其中的一个地址只有在角色血量改变的时候才会断点,其他两个地址则可以直接断下,这样的情况下大多数人都会选择对后着进行分析,而真正可以得到角色对象公式的则是前者,更换装备后游戏断下(如图)
经过分析可以得出角色对象为ebp,我们继续向上分析ebp的来源,执行到返回后可以得到+4偏移(如图)
再次执行到返回可以得到来源于2068360F 处的 call 200E2560(如图)
到函数内部可以得到基地址(如图)
这样我们就得到了角色对象的公式,虽然过程很简单,但是能否发现真正的血地址才是关键。