【天刀系列】任务遍历分析

[复制链接]
查看: 26   回复: 0

41

主题

41

帖子

271

积分

超级版主

Rank: 8Rank: 8

积分
271
发表于 2021-5-27 20:08:50 | 显示全部楼层 |阅读模式
任务遍历本身的突破口比较少,而对于《天涯明月刀》这款游戏来说,很多的突破口都无法得到正常的结果,首先,任务需求数量不在正常的任务遍历中,其次,任务是无法放弃的,也就是说任务标志位无法扫描,这样的话,我们就只有接取任务参数和任务的名字可以使用了。
我们对任务的名字进行扫描,这里用到的是UTF-8编码,得到十几个结果(如图)
C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\90b8cba307374959a2c53b8e2786744a\1.png
1.png

分别对结果进行修改,发现并没有能对本地的任务名字进行修改的,也就是说任务接取之后任务名字就被初始化了,这样就无法对任务名字进行访问,所以我们要先得到下一个任务的名字,并提前进行扫描,当任务接取时下访问断点,才能让游戏断下。或者在执行任务的过程中,对NPC进行访问也有可能会访问到任务的名字。
重新对下一个任务进行提前搜索,得到较少的结果(如图)
2.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\d4da60ee345a4563af17e3b36785acd7\2.png
这些结果只有一个地址是被4整除的,我们先对这个地址下访问断点,并提交当前任务,游戏在接取下一个任务时断下(如图)
3.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\fc7e4e01b7a2406e8cb800f3316c618a\3.png
执行到返回后,得到来源于00772BF3  处的call    eax(如图)
4.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\972883d82e8b4650a0071fef9487a074\4.png
下F2断点并再次提交任务,游戏断下。对函数内部进行分析,得到+2C和+C偏移(如图)
5.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\f13ab33006fe40c094a1eec1c47203f8\5.png
继续分析ecx的来源,在00772BDD 处的  call    edx中得到+24偏移(如图)
6.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\878aa76c70844154bf0879715cfbe2c2\6.png
返回后分析ecx来源,得到来源于00772BC8  处的call    006B3C80的返回值,在函数内部可以得到数组结构和+4偏移(如图)
7.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\f75a38f6f7c946158427a2b13742d06c\7.png
继续向上分析,可以得到+20偏移,执行到返回后可以得到8A0偏移和基地址(如图)
8.png


C:\Users\AKM\AppData\Local\YNote\data\qq4EBD6EA8DB709B20B5FA91D19DC75C0E\42916ebc7f2746ab81526df643dc2c08\8.png
这样我们就得到了任务遍历的公式,对公式进行整理和观察,可以得处这是整个游戏所有任务的库,而任务总数量则来源于[[414A7A8]+8A0]+28,共有0xF61个。在任务对象中还可以得到任务完成标志位,任务ID等重要的属性。


来亦何哀, 去亦何苦?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4 © 2001-2018 Comsenz Inc.