我们接着上次的遍历继续讲,上次我们得到的技能遍历只有名字和ID 的数据,对于我们来说还不够,所以今天我们将别的数据进行追踪然后和名字的遍历进行关联
用到的工具:
CE[attach]1100004[/attach]
X32dbg[attach]1100005[/attach]
我们首先要分析下,下图中我们可以看到有技能的等级,并且这里我们点击升级可以随意进行变更的.
[attach]1100006[/attach]
我们先打开CE并且附加游戏
然后通过反复变更等级搜索技能的等级来得到位置
[attach]1100007[/attach]
[attach]1100008[/attach]
[attach]1100009[/attach]
我们会得到两个地址,分别对其修改,一个改成4一个改成5
[attach]1100010[/attach]
然后对技能也进行一次访问可以看到他的等级变成5了,也就是说下面的这个地址就是我们需要的.
[attach]1100011[/attach]
这时我们打开X32dbg附加游戏,并且将地址拿到其中,然后在地址上下访问断,并且重新对技能进行访问.
[attach]1100012[/attach]
下面这里是断下的位置.
[attach]1100014[/attach]
我们可以看到来源esi+4里存放的就是技能的等级.
cmp dword ptr ds:[esi+0x4], 0x0 esi+0x4
mov esi, eax eax+0x4 到了eax我们需要CALL里去追
下面我们需要注意下,这里的数组下标是eax+eax*4 就是相当于eax*5,然后在替换到下面的
数组中就就是4个eax*5相加 就是eax*14
[attach]1100013[/attach]
lea eax, ds:[ecx+eax*4] ecx+eax*14+4
mov ecx, ebx ebx+0*14+0x4
add ebx, 0x710C ebx+710C+0*14+0x4
mov ebx, dword ptr ds:[0x00D4FF10] [D4FF10]+710C+0*14+0x4
这里我们就追到了完整的公式,然后我们将公式dd一下观察并分析发现:
[D4FF10]+710C+0*14+0 就是技能的ID需要我们和之前名字的遍历进行关联
[D4FF10]+710C+0*14+0x4 是该技能的技能等级
到这里我们技能的遍历有多了一个属性,但是显然还是不够的,我们还缺少技能的冷却,释放范围,是否为瞬发还是需要引导的标志,消耗等,才能做到完全智能释放技能.
我们会在后面的帖子中在将技能属性进行完善,我们下一次再见喽