发布于:2018-8-31 14:33 | 140203次阅读 作者: 外部投稿 | 原作者: 通化程序员
任务遍历本身的突破口比较少,而对于《天涯明月刀》这款游戏来说,很多的突破口都无法得到正常的结果,首先,任务需求数量不在正常的任务遍历中,其次,任务是无法放弃的,也就是说任务标志位无法扫描,这样的话,我们就只有接取任务参数和任务的名字可以使用了。 我们对任务的名字进行扫描,这里用到的是UTF-8编码,得到十几个结果(如图)
分别对结果进行修改,发现并没有能对本地的任务名字进行修改的,也就是说任务接取之后任务名字就被初始化了,这样就无法对任务名字进行访问,所以我们要先得到下一个任务的名字,并提前进行扫描,当任务接取时下访问断点,才能让游戏断下。或者在执行任务的过程中,对NPC进行访问也有可能会访问到任务的名字。 重新对下一个任务进行提前搜索,得到较少的结果(如图) 这些结果只有一个地址是被4整除的,我们先对这个地址下访问断点,并提交当前任务,游戏在接取下一个任务时断下(如图) 执行到返回后,得到来源于00772BF3 处的call eax(如图) 下F2断点并再次提交任务,游戏断下。对函数内部进行分析,得到+2C和+C偏移(如图) 继续分析ecx的来源,在00772BDD 处的 call edx中得到+24偏移(如图) 返回后分析ecx来源,得到来源于00772BC8 处的call 006B3C80的返回值,在函数内部可以得到数组结构和+4偏移(如图) 继续向上分析,可以得到+20偏移,执行到返回后可以得到8A0偏移和基地址(如图) 这样我们就得到了任务遍历的公式,对公式进行整理和观察,可以得处这是整个游戏所有任务的库,而任务总数量则来源于[[414A7A8]+8A0]+28,共有0xF61个。在任务对象中还可以得到任务完成标志位,任务ID等重要的属性。 来源:通化程序员-投稿 GSLAB网站投稿文章仅代表作者本人的观点,与本网站立场无关。 *转载请注明来自游戏安全实验室(GSLAB.QQ.COM) 收藏
|
最新评论
发表评论