发布于:2018-9-25 17:24 | 67977次阅读 作者: 外部投稿 | 原作者: 通化程序员
控件对象遍历都是从控件函数入手的,因为想通过控件的属性直接得到控件对象是很难的,控件名字等都不会显示在控件上。 以《天涯明月刀》为例,首先来到控件点击函数处(如图)
在控件点击函数中,ecx为控件对象,我们随便找一个控件,点击断下,取得ecx的值,并在ecx上下访问断点,游戏很快断下(如图) 向上分析控件对象的来源,在01D980F0 处得到edx+ecx的来源,而ecx来源于esi+7C,edx则来源于01D980CE处的add eax, eax,继续向上分析可以得出来源于eax*C,这说明对象来源于一个结构体数组,而结构大小为0xC(如图) 执行到返回几次后可以发现这里是一个递归函数,是一个数组嵌套数组的结构,为了能跳出循环,我们在函数头部下F2断点,并点击F9在堆栈中返回不同时直接返回,就可以跳出线程循环(如图) 继续分析ecx来源,得到mov ecx, [ecx+eax*8-4],而这里的eax始终为1,也就是说这里可以当做+4偏移,再向上可以得到+2C偏移。 执行到返回后得到+2C偏移,以及+4C偏移(如图)(如图) 再次返回就到了VM代码段,所以我们只能通过CE搜索来跳过这段代码,搜索之后可以得到较少的来源(如图) 这里出现了一个绿色的地址,也就是说明我们离基地址不远了,通过OD查找常量,可以得到5个结果(如图) 这样我们就可以得到完整的公式了,接下来只需要去对象中找到控件的名字等属性就可以正常调用控件点击函数了。 来源:通化程序员—投稿 GSLAB网站投稿文章仅代表作者本人的观点,与本网站立场无关。 *转载请注明来自游戏安全实验室(GSLAB.QQ.COM) |
最新评论
发表评论