Gslab 发表于 2018-9-4 15:27

【游戏分析】《天涯明月刀》主线任务需求分析

大部分游戏的主线任务需求都在任务遍历的属性中存放的,而《天涯明月刀》的任务需求与任务遍历是分开存放的。首先我们搜索任务要求的打怪数量,用DWORD并不能得到任何的结果,于是我们尝试其他的数据类型,发现除了文本型都没有得到打怪数量的结果。于是我们在得到的4个文本型结果中进行筛选和分析(如图)
http://gslab.qq.com/data/attachment/portal/201809/04/113443c42863hag78w6c3i.png
在这4个结果中其中第一个结果和另外三个地址相差较大,我们用OD对这个比较特殊的结果下访问断点,游戏很快断下(如图)
http://gslab.qq.com/data/attachment/portal/201809/04/113444yb5yrj29nnr5y7my.png
我们继续分析ecx的来源,来源于头部的,执行到返回后得到+13C偏移(如图)
http://gslab.qq.com/data/attachment/portal/201809/04/113444p6tx56vemqx25mrv.png
继续向上分析edi的来源,执行到返回得到来源于(如图)
http://gslab.qq.com/data/attachment/portal/201809/04/113444cn3nnen8d317eu89.png
而继续向上分析则到了VM的代码段,我们在0531A76D处下F2断点,得到eax的值为040BDB08(如图)
http://gslab.qq.com/data/attachment/portal/201809/04/113444kmy6e01b1g1ge0jc.png
这看起来很像是一个基地址,因为之前得到的基地址和这个地址相差不大。于是我们在这个地址上下硬件访问断点,游戏断到了其他的位置,也得到了基地址040BDB08(如图)
http://gslab.qq.com/data/attachment/portal/201809/04/113444gy2nfenjfzp5rbyn.png
这样就得到了任务需求的公式[+13C]我们数据窗口中跟随这个公式,并用ASCII型查看,发现这里就是主线任务的需求描述(如图)
http://gslab.qq.com/data/attachment/portal/201809/04/113445sddddqqqxsxsc4ze.png
由于其中的汉字是UTF-8的,所以并不能正常的显示,而+140则是描述的结束地址。接下来我们只需要通过文本分割来将字符串分割开就可以正确的判断任务的需求了。



文章转载自《通化程序员》,如需转载请联系运作者

Asinw12321 发表于 2018-9-4 15:42

很好的技术贴,多谢分享!

曲径戎 发表于 2018-9-4 15:44

技术贴呀,可惜已经不玩啦~

husiyu317 发表于 2018-9-4 15:48

很好的技术贴,多谢分享!

北冥愚公 发表于 2018-9-4 16:09

可惜天刀我已经弃坑2年多了

sp3823 发表于 2018-9-4 16:10

膜拜大神

风流少年 发表于 2018-9-4 16:11

感谢大神的分享,学习了,谢谢

cs007 发表于 2018-9-4 16:20

技术贴呀,可惜我看不懂,像天书一样。

xieyi5166 发表于 2018-9-4 16:24

厉害了我的哥

holiness 发表于 2018-9-4 17:09

感谢楼主分享,支持一下!
页: [1] 2 3 4 5 6 7 8
查看完整版本: 【游戏分析】《天涯明月刀》主线任务需求分析