找使用物品CALL
思路:利用物品在包裹中的位置不同,用CE找出使用的物品在包袱第几格,然后利用找出的地址,在OD中找出使用物品CALL
例:
首先使用包裹第4格的物品,然后用CE首次搜索3(包裹第一格是从0开始的,第二格为1,以此类推),然后使用第3格的物品,再次搜索2,一次类推,多搜索几次,直到出现少数几个内存地址,我这里出现仅一个地址,而且是静态地址,如下图

右键,寻找所有操作这个地址的代码:

然后再到包袱使用物品,出现如下代码:
接下来OD附加传世进程,在反汇编窗口中Ctrl+G,输入代码 477555,OD跳转到如图界面:
然后在0047555这个地址的代码处下断:
回到游戏,使用物品,游戏断下,然后按ALT+K或 鼠标点击
,出现如图:
然后右键点击代码,如图:
点击“显示调用”,回到反汇编窗口:
出现调用的CALL,这里有两段代码,分辨对应了2个CALL,具体哪个CALL,就需要自己用测试CALL的工具测试了,我这里测试过了,是下面这个CALL:
CALL原型:
Push eax eax为包为袱第几格,第一格为0,第二格为1,以此类推
Mov ecx,esi esi为常量,esi =129e6a10
Call woool.00479fc0
以下是传奇世界另一种分析方法:
思想:根据选中的物品在背包中的位置,搜
如:选中第三格的物品,搜2,再选第四格的,搜3,,从而得到一个地址:
如图:

下访问此地址的代码,然后回到游戏中双击无法使用的物品,其目的是为了取得双击的关健代码,如图:

481625
然后od中直接在此处下断,返回游戏中双击使用武器,再分析堆栈即可。可能需要在找到关健call后,到关健call的头部下断才可,返回到最前面下断后才是
00487D11 > \53 PUSH EBX ; Case 10 of switch 00487D02
00487D12 > 8BCE MOV ECX,ESI
00487D14 . E8 97C7FFFF CALL woool.004844B0
00487D19 > 8B4C24 14 MOV ECX,DWORD PTR SS:[ESP+14]
00487D1D . 8B5424 10 MOV EDX,DWORD PTR SS:[ESP+10]
00487D21 . 51 PUSH ECX
00487D22 . 52 PUSH EDX
00487D23 . 8BCE MOV ECX,ESI
481ec0
注入如下代码成功:
push 1//物品的位置
mov ecx,1799EAE0//固定值
call 004844b0
分析固定值的来历:
直接在ce中搜固定值,看是否有基址,此时出现四个地址,但都不是基址,继续用这四个值一个一个搜,有一个能得到基址:如图:

所以这个固定值的来历,就是:[3fff1a3a]+0这个里面的值就是这个固定值
本文章根据手把手项目开发网中的视频教程整而来,工具和资料下载地址:http://www.shou8shou.cn,指导教师QQ:1026165915
也可百度:手把手项目开发