关于用CE查找饥荒修改人物属性性的地址

用CE找 天龙八部 人物 基址_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
用CE找 天龙八部 人物 基址
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩1页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢帖子328&精华0&积分564&豌豆15 &阅读权限30&在线时间315 小时&注册时间&最后登录&
灵X背包偏移查找CE+OD实例——查找人物包裹信息
要想学会外挂制作先得学会找基址,这里我就做个实例了
首先我们用CE来找出是什么指令修改了我们包裹中物品的数量(怎么找我就不说了,不懂的看CCB老大的教程)
找到指令是
0048F0AB& &mov& &dword ptr [ecx+14], edx
用OD打开武林elementclient.exe,Ctrl+G转到表达式0048F0AB...
可以看到这条指令是在一个函数中
/$ 8B4424 04& &mov& &eax, dword ptr [esp+4]
|. 8B51 14& &&&mov& &edx, dword ptr [ecx+14]
|. 03D0& && & add& &edx, eax
|. 8BC2& && & mov& &eax, edx
0048F0AB |. 8951 14& &&&mov& &dword ptr [ecx+14], edx
0048F0AE |. 85C0& && & test& &eax, eax
|. 7D 07& && & jge& &short
|. C741 14 00000&mov& &dword ptr [ecx+14], 0
|& 8B41 18& &&&mov& &eax, dword ptr [ecx+18]
0048F0BC |. 8B51 14& &&&mov& &edx, dword ptr [ecx+14]
0048F0BF |. 3BD0& && & cmp& &edx, eax
|. 7E 03& && & jle& &short
|. 8941 14& &&&mov& &dword ptr [ecx+14], eax
|& 8B41 14& &&&mov& &eax, dword ptr [ecx+14]
\. C2 0400& &&&retn& &4
我们在开始的地方F2下断,F8单步步过看看每条指令都做了些什么...
粗略的看一下,可以发现,当前CALL传入的参数1也就是[ESP+4]是-1,也就是我们使用了这个物品(比如吃药),[ECX+14]是存放的当前物品
的数量,而[ECX+18]上存放的当前物品堆叠上限...因为是16进制的,所以大家要习惯看这些数值...
再看看程序流程,基本可以看出这个函数的功能是判断当前使用的物品是否超出1~99这个范围,也就是判断是否用完了或者是捡满了...
那么找包裹物品的地址,我们就要找出ECX的值是怎么来的!!!
OK,Ctrl+F9执行到返回,我们来看看是哪条指令调用了这个CALL...
返回到指令
0048908D |. E8 0E600000& &call& &
老习惯,我们上下拖动大致看看这段指令有多长...(其实主要是大概要回溯多长,因为我们要找ECX的值)
/$ 53& && && &push& &ebx
|. 8B5C24 08& &mov& &ebx, dword ptr [esp+8]
|. 56& && && &push& &esi
|. 57& && && &push& &edi
|. 85DB& && & test& &ebx, ebx
|. 8BF9& && & mov& &edi, ecx
0048906B |. 7C 3E& && & jl& &&&short 004890AB
0048906D |. 3B5F 10& &&&cmp& &ebx, dword ptr [edi+10]
|. 7D 39& && & jge& &short 004890AB
|. 8B47 0C& &&&mov& &eax, dword ptr [edi+C]
|. 8B3498& &&&mov& &esi, dword ptr [eax+ebx*4]
|. 85F6& && & test& &esi, esi
0048907A |. 75 08& && & jnz& &short
0048907C |. 5F& && && &pop& &edi
0048907D |. 5E& && && &pop& &esi
0048907E |. B0 01& && & mov& &al, 1
|. 5B& && && &pop& &ebx
|. C2 0800& &&&retn& &8
|& 8B4C24 14& &mov& &ecx, dword ptr [esp+14]
|. F7D9& && & neg& &ecx
0048908A |. 51& && && &push& &ecx
0048908B |. 8BCE& && & mov& &ecx, esi
0048908D |. E8 0E600000& &call& &
先看看指令,发现ECX=ESI,往上ESI=[EAX+EBX*4],OK!!!我们在
|. 8B3498& &&&mov& &esi, dword ptr [eax+ebx*4]
发现EBX的值实际上就是我们点击包裹的格子序号(当然,人家是从0开始计数的...)
恩,有门...再就是找EAX的值是怎么来的了...
往上看,EAX=[EDI+C],EDI=ECX...
没办法,ECX是由上一级函数传入的,好吧,继续Ctrl+F9...
|. E8 & &call& &
还是上下看看...有点长,中间还有好几个CALL,郁闷...
/$ 8B4424 04& &mov& &eax, dword ptr [esp+4]
|. 53& && && &push& &ebx
|. 55& && && &push& &ebp
|. 56& && && &push& &esi
|. 8B70 0C& &&&mov& &esi, dword ptr [eax+C]
004576BA |. 8BD9& && & mov& &ebx, ecx
004576BC |. 33C9& && & xor& &ecx, ecx
004576BE |. 57& && && &push& &edi
004576BF |. 8A0E& && & mov& &cl, byte ptr [esi]
|. 51& && && &push& &ecx
|. 8BCB& && & mov& &ecx, ebx
|. E8 C7860000& &call& &0045FD90& && && && && &&&
|. 8BE8& && & mov& &ebp, eax
004576CB |. 85ED& && & test& &ebp, ebp
004576CD |. 0F84 AC000000 je& &&&0045777F
|. 33D2& && & xor& &edx, edx
|. 6A 00& && & push& &0
|. 8A56 01& &&&mov& &dl, byte ptr [esi+1]
004576DA |. 8BCD& && & mov& &ecx, ebp
004576DC |. 52& && && &push& &edx
004576DD |. E8 EE0F0300& &call& &
|. 8BF8& && & mov& &edi, eax
|. 85FF& && & test& &edi, edi
je& &&&0045777F
004576EC |. 8B46 02& &&&mov& &eax, dword ptr [esi+2]
004576EF |. 8B4F 08& &&&mov& &ecx, dword ptr [edi+8]
|. 3BC8& && & cmp& &ecx, eax
jnz& &0045777F
004576FA |. 6A 00& && & push& &0& && && && && && && &; /Arg3 =
004576FC |. 6A 00& && & push& &0& && && && && && && &; |Arg2 =
004576FE |. 50& && && &push& &eax& && && && && && && &; |Arg1
004576FF |. 8BCB& && & mov& &ecx, ebx& && && && && &&&; |
|. E8 9A4A0200& &call& && && && && && &&&; \elementc.
|. 8B07& && & mov& &eax, dword ptr [edi]
|. 8BCF& && & mov& &ecx, edi
0045770A |. FF50 1C& &&&call& &dword ptr [eax+1C]
0045770D |. 66:8B46 06& &mov& &ax, word ptr [esi+6]
|. 66:85C0& &&&test& &ax, ax
|. 74 3C& && & je& &&&short
|. 33C9& && & xor& &ecx, ecx
|. 25 FFFF0000& &and& &eax, 0FFFF
0045771D |. 8A4E 01& &&&mov& &cl, byte ptr [esi+1]
|. 50& && && &push& &eax
|. 51& && && &push& &ecx
|. 8BCD& && & mov& &ecx, ebp
|. E8 & &call& &
打起精神,记住我们要找的是ECX的值...
仔细看,就可以看出,ECX=EBP,而EBP=EAX
004576DA |. 8BCD& && & mov& &ecx, ebp
|. 8BE8& && & mov& &ebp, eax
从函数开始下断,我们看看是什么指令修改了EAX的值...
恩,mov ebp, eax上面有个CALL,大家都应该知道对于高级语言,编译器一般习惯于将返回值放如EAX中的吧...
二话不说,先进call 0045FD90里面看看是个什么情况...
0045FD90 /$ 8B4424 04& &mov& &eax, dword ptr [esp+4]
0045FD94 |. 83F8 04& &&&cmp& &eax, 4& && && && && && & ; Switch (cases 0..4)
0045FD97 |. 77 34& && & ja& &&&short 0045FDCD
0045FD99 |. FF&jmp& &dword ptr [eax*4+45FDD4]
0045FDA0 |& 8B81 3C080000 mov& &eax, dword ptr [ecx+83C]& && & ; Case 0 of switch 0045FD94
0045FDA6 |. C2 0400& &&&retn& &4
0045FDA9 |& 8B81
mov& &eax, dword ptr [ecx+840]& && & ; Case 1 of switch 0045FD94
0045FDAF |. C2 0400& &&&retn& &4
0045FDB2 |& 8B81
mov& &eax, dword ptr [ecx+844]& && & ; Case 2 of switch 0045FD94
0045FDB8 |. C2 0400& &&&retn& &4
0045FDBB |& 8B81
mov& &eax, dword ptr [ecx+878]& && & ; Case 3 of switch 0045FD94
0045FDC1 |. C2 0400& &&&retn& &4
0045FDC4 |& 8B81 7C080000 mov& &eax, dword ptr [ecx+87C]& && & ; Case 4 of switch 0045FD94
0045FDCA |. C2 0400& &&&retn& &4
0045FDCD |& 33C0& && & xor& &eax, eax& && && && && &&&; Default case of switch 0045FD94
0045FDCF \. C2 0400& &&&retn& &4
0045FDD2& &&&8BFF& && & mov& &edi, edi
0045FDD4& &. A0FD4500& &&&dd& &&&elementc.0045FDA0& && && &&&; 分支表 被用于 0045FD99
0045FDD8& &. A9FD4500& &&&dd& &&&elementc.0045FDA9
0045FDDC& &. B2FD4500& &&&dd& &&&elementc.0045FDB2
0045FDE0& &. BBFD4500& &&&dd& &&&elementc.0045FDBB
0045FDE4& &. C4FD4500& &&&dd& &&&elementc.0045FDC4
发现是个分支处理的函数,至于吃药是怎么分支的,我们先出去看看这个参数[ESP+4]和ECX的值是怎么来的...
004576BF |. 8A0E& && & mov& &cl, byte ptr [esi]
|. 51& && && &push& &ecx
|. 8BCB& && & mov& &ecx, ebx
|. E8 C7860000& &call& &0045FD90
下断,可以知道push ecx的时候ECX是0,而mov ecx,ebx的时候不知道大家看出来什么没有...
当时我就觉得这个EBX的值很熟,后来一想,这个值不就是人物属性地址[[8BCB44]+1C]+24的值么...
而且,吃药的时候,那个CALL要传入的参数始终是0...
至此,所有的我们需要的信息都找到了...
那我们就可以总结了...
[[[[8BCB44]+1C]+24]+83C]+10 的值是角色包裹最大容量...
[[[[8BCB44]+1C]+24]+83C]+C 是角色包裹首地址...
[[[[[8BCB44]+1C]+24]+83C]+C]+4*格子序号 是格子物品首地址...
[[[[[[8BCB44]+1C]+24]+83C]+C]+4*格子序号]+14 是此格物品的数量...
[[[[[[8BCB44]+1C]+24]+83C]+C]+4*格子序号]+18 是此格物品的堆叠上限...
授人以鱼,不如授人以渔...关于其他的地址需要大家举一反三。
转载的,供大家学习。
期待你多发教程积分 + 2
帖子443&精华0&积分456&豌豆413 &阅读权限30&在线时间731 小时&注册时间&最后登录&
虽然看不懂 但是还要顶一下
帖子10794&精华0&积分14444&豌豆1622 &阅读权限80&在线时间1925 小时&注册时间&最后登录&
本帖最后由
07:15 编辑
传奇的包裹基址我以前找过,好像都是固定的,我当时上下线来回试了好几次,每次找都是固定的,记得好像是没有偏移的,写挂的时候,每个格子可以用单独的地址,也可以后一个格子的基址=前一个格子的地址+4,好像是+4,很早以前找过,忘得差不多了
帖子1745&精华0&积分1828&豌豆97 &阅读权限40&在线时间361 小时&注册时间&最后登录&
学习了,感谢楼主
帖子259&精华1&积分915&豌豆144 &阅读权限40&在线时间77 小时&注册时间&最后登录&
<td class="t_msgfont" id="postmessage_.0以前的传奇包裹格与格之间的地址距离是第一格的地址+40=第二个格的地址。
现在2.0的传奇包裹多了鉴定物品的项目和显示物品的属性方式也不同,格与格之间的地址距离
就变成了第一格的地址+60=第二格的地址。比以前的地址增加多了20个字节内容。
帖子834&精华0&积分897&豌豆114 &阅读权限40&在线时间208 小时&注册时间&最后登录&
elementclient.exe
=========================
你找的是完美的包裹吧?
帖子328&精华0&积分564&豌豆15 &阅读权限30&在线时间315 小时&注册时间&最后登录&
2.0以前的传奇包裹格与格之间的地址距离是第一格的地址+40=第二个格的地址。
现在2.0的传奇包裹多了鉴定物品的项目和显示物品的属性方式也不同,格与格之间的地址距离
就变成了第一格的地址+60=第二格的地址。比 ...
天天搞游戏 发表于
你是高手,出一个详细教程出来,大家跟你学习学习。
帖子712&精华1&积分290&豌豆28 &阅读权限30&在线时间321 小时&注册时间&最后登录&
For I := 0 To 45 do
& && &&&RoleBagAddr := Dword(RoleBagBaseAdr + I * $60);& && && &//物品地址
& && &&&RoleBagName := PChar(RoleBagBaseAdr + 1 + I * $60); //物品名
帖子4797&精华0&积分5123&豌豆918 &阅读权限70&在线时间927 小时&注册时间&最后登录&
<td class="t_msgfont" id="postmessage_姐,期待你出山啊..
&#3665;&#1769;&#1758;&#1769;&#3665;███████████████████████████████████████████████████████&#3665;&#1769;&#1758;&#1769;&#3665;
帖子328&精华0&积分564&豌豆15 &阅读权限30&在线时间315 小时&注册时间&最后登录&
000000老三520
老三的东西深奥,看不懂,咋办咋办呢?
帖子6&精华0&积分8&豌豆0 &阅读权限10&在线时间4 小时&注册时间&最后登录&
怎么找包裹物品数量
帖子3578&精华0&积分4004&豌豆484 &阅读权限50&在线时间807 小时&注册时间&最后登录&
怀念10的年传奇万宇时代。。。
传奇这个游戏打发时间还是个好东西。嗖一天过去了。嗖一年过去了。嗖十年过去。。。
帖子5259&精华0&积分10635&豌豆92 &阅读权限80&在线时间772 小时&注册时间&最后登录&
虽然看不懂 但是还要顶一下
帖子1159&精华0&积分2042&豌豆443 &阅读权限40&在线时间919 小时&注册时间&最后登录&
不懂................
帖子1125&精华0&积分1769&豌豆69 &阅读权限40&在线时间810 小时&注册时间&最后登录&
& & 怎么找包裹里物品的数量?
傲人雪白的双峰你攀登了吗
[通过 QQ、MSN 分享给朋友]&要想学会外挂制作先得学会找基址,这里我就做个实例了首先我们用CE来找出是什么指令修改了我们包裹中物品的数量(怎么找我就不说了,不懂的看CCB老大的教程)找到指令是0048F0AB&& mov&& dword ptr [ecx+14], edx用OD打开武林elementclient.exe,Ctrl+G转到表达式0048F0AB...可以看到这条指令是在一个函数中 /$ 8B4424 04&& mov&& eax, dword ptr [esp+4] |. 8B51 14&&&& mov&& edx, dword ptr [ecx+14] |. 03D0&&&&&& add&& edx, eax |. 8BC2&&&&&& mov&& eax, edx0048F0AB |. 8951 14&&&& mov&& dword ptr [ecx+14], edx0048F0AE |. 85C0&&&&&& test&& eax, eax |. 7D 07&&&&&& jge&& short
|. C741 14 00000&mov&& dword ptr [ecx+14], 0 |& 8B41 18&&&& mov&& eax, dword ptr [ecx+18]0048F0BC |. 8B51 14&&&& mov&& edx, dword ptr [ecx+14]0048F0BF |. 3BD0&&&&&& cmp&& edx, eax |. 7E 03&&&&&& jle&& short
|. 8941 14&&&& mov&& dword ptr [ecx+14], eax |& 8B41 14&&&& mov&& eax, dword ptr [ecx+14] /. C2 0400&&&& retn&& 4我们在开始的地方F2下断,F8单步步过看看每条指令都做了些什么...粗略的看一下,可以发现,当前CALL传入的参数1也就是[ESP+4]是-1,也就是我们使用了这个物品(比如吃药),[ECX+14]是存放的当前物品的数量,而[ECX+18]上存放的当前物品堆叠上限...因为是16进制的,所以大家要习惯看这些数值...再看看程序流程,基本可以看出这个函数的功能是判断当前使用的物品是否超出1~99这个范围,也就是判断是否用完了或者是捡满了...那么找包裹物品的地址,我们就要找出ECX的值是怎么来的!!!OK,Ctrl+F9执行到返回,我们来看看是哪条指令调用了这个CALL...返回到指令0048908D |. E8 0E600000&& call&& 老习惯,我们上下拖动大致看看这段指令有多长...(其实主要是大概要回溯多长,因为我们要找ECX的值) /$ 53&&&&&&&& push&& ebx |. 8B5C24 08&& mov&& ebx, dword ptr [esp+8] |. 56&&&&&&&& push&& esi |. 57&&&&&&&& push&& edi |. 85DB&&&&&& test&& ebx, ebx |. 8BF9&&&&&& mov&& edi, ecx0048906B |. 7C 3E&&&&&& jl&&&& short 004890AB0048906D |. 3B5F 10&&&& cmp&& ebx, dword ptr [edi+10] |. 7D 39&&&&&& jge&& short 004890AB |. 8B47 0C&&&& mov&& eax, dword ptr [edi+C] |. 8B3498&&&& mov&& esi, dword ptr [eax+ebx*4] |. 85F6&&&&&& test&& esi, esi0048907A |. 75 08&&&&&& jnz&& short 0048907C |. 5F&&&&&&&& pop&& edi0048907D |. 5E&&&&&&&& pop&& esi0048907E |. B0 01&&&&&& mov&& al, 1 |. 5B&&&&&&&& pop&& ebx |. C2 0800&&&& retn&& 8 |& 8B4C24 14&& mov&& ecx, dword ptr [esp+14] |. F7D9&&&&&& neg&& ecx0048908A |. 51&&&&&&&& push&& ecx0048908B |. 8BCE&&&&&& mov&& ecx, esi0048908D |. E8 0E600000&& call&& 先看看指令,发现ECX=ESI,往上ESI=[EAX+EBX*4],OK!!!我们在 |. 8B3498&&&& mov&& esi, dword ptr [eax+ebx*4]处下断...发现EBX的值实际上就是我们点击包裹的格子序号(当然,人家是从0开始计数的...)恩,有门...再就是找EAX的值是怎么来的了...往上看,EAX=[EDI+C],EDI=ECX...没办法,ECX是由上一级函数传入的,好吧,继续Ctrl+F9...转到指令 |. E8 && call&& 还是上下看看...有点长,中间还有好几个CALL,郁闷... /$ 8B4424 04&& mov&& eax, dword ptr [esp+4] |. 53&&&&&&&& push&& ebx |. 55&&&&&&&& push&& ebp |. 56&&&&&&&& push&& esi |. 8B70 0C&&&& mov&& esi, dword ptr [eax+C]004576BA |. 8BD9&&&&&& mov&& ebx, ecx004576BC |. 33C9&&&&&& xor&& ecx, ecx004576BE |. 57&&&&&&&& push&& edi004576BF |. 8A0E&&&&&& mov&& cl, byte ptr [esi] |. 51&&&&&&&& push&& ecx |. 8BCB&&&&&& mov&& ecx, ebx |. E8 C7860000&& call&& 0045FD90&&&&&&&&&&&&&&&&
|. 8BE8&&&&&& mov&& ebp, eax004576CB |. 85ED&&&&&& test&& ebp, ebp004576CD |. 0F84 AC000000 je&&&& 0045777F |. 33D2&&&&&& xor&& edx, edx |. 6A 00&&&&&& push&& 0 |. 8A56 01&&&& mov&& dl, byte ptr [esi+1]004576DA |. 8BCD&&&&&& mov&& ecx, ebp004576DC |. 52&&&&&&&& push&& edx004576DD |. E8 EE0F0300&& call&&
|. 8BF8&&&&&& mov&& edi, eax |. 85FF&&&&&& test&& edi, edi |. 0F84
je&&&& 0045777F004576EC |. 8B46 02&&&& mov&& eax, dword ptr [esi+2]004576EF |. 8B4F 08&&&& mov&& ecx, dword ptr [edi+8] |. 3BC8&&&&&& cmp&& ecx, eax |. 0F85
jnz&& 0045777F004576FA |. 6A 00&&&&&& push&& 0&&&&&&&&&&&&&&&&&&&& ; /Arg3 = 004576FC |. 6A 00&&&&&& push&& 0&&&&&&&&&&&&&&&&&&&& ; |Arg2 = 004576FE |. 50&&&&&&&& push&& eax&&&&&&&&&&&&&&&&&&&& ; |Arg1004576FF |. 8BCB&&&&&& mov&& ecx, ebx&&&&&&&&&&&&&&&& ; | |. E8 9A4A0200&& call&& &&&&&&&&&&&&&&&& ; /elementc. |. 8B07&&&&&& mov&& eax, dword ptr [edi] |. 8BCF&&&&&& mov&& ecx, edi0045770A |. FF50 1C&&&& call&& dword ptr [eax+1C]0045770D |. 66:8B46 06&& mov&& ax, word ptr [esi+6] |. 66:85C0&&&& test&& ax, ax |. 74 3C&&&&&& je&&&& short
|. 33C9&&&&&& xor&& ecx, ecx |. 25 FFFF0000&& and&& eax, 0FFFF0045771D |. 8A4E 01&&&& mov&& cl, byte ptr [esi+1] |. 50&&&&&&&& push&& eax |. 51&&&&&&&& push&& ecx |. 8BCD&&&&&& mov&& ecx, ebp |. E8 && call&& 打起精神,记住我们要找的是ECX的值...仔细看,就可以看出,ECX=EBP,而EBP=EAX004576DA |. 8BCD&&&&&& mov&& ecx, ebp |. 8BE8&&&&&& mov&& ebp, eax从函数开始下断,我们看看是什么指令修改了EAX的值...恩,mov ebp, eax上面有个CALL,大家都应该知道对于高级语言,编译器一般习惯于将返回值放如EAX中的吧...二话不说,先进call 0045FD90里面看看是个什么情况...0045FD90 /$ 8B4424 04&& mov&& eax, dword ptr [esp+4]0045FD94 |. 83F8 04&&&& cmp&& eax, 4&&&&&&&&&&&&&&&&&& ; Switch (cases 0..4)0045FD97 |. 77 34&&&&&& ja&&&& short 0045FDCD0045FD99 |. FF&jmp&& dword ptr [eax*4+45FDD4]0045FDA0 |& 8B81 3C080000 mov&& eax, dword ptr [ecx+83C]&&&&&& ; Case 0 of switch 0045FD940045FDA6 |. C2 0400&&&& retn&& 40045FDA9 |& 8B81
mov&& eax, dword ptr [ecx+840]&&&&&& ; Case 1 of switch 0045FD940045FDAF |. C2 0400&&&& retn&& 40045FDB2 |& 8B81
mov&& eax, dword ptr [ecx+844]&&&&&& ; Case 2 of switch 0045FD940045FDB8 |. C2 0400&&&& retn&& 40045FDBB |& 8B81
mov&& eax, dword ptr [ecx+878]&&&&&& ; Case 3 of switch 0045FD940045FDC1 |. C2 0400&&&& retn&& 40045FDC4 |& 8B81 7C080000 mov&& eax, dword ptr [ecx+87C]&&&&&& ; Case 4 of switch 0045FD940045FDCA |. C2 0400&&&& retn&& 40045FDCD |& 33C0&&&&&& xor&& eax, eax&&&&&&&&&&&&&&&& ; Default case of switch 0045FD940045FDCF /. C2 0400&&&& retn&& 40045FDD2&&&& 8BFF&&&&&& mov&& edi, edi0045FDD4&& . A0FD4500&&&& dd&&&& elementc.0045FDA0&&&&&&&&&& ; 分支表 被用于 0045FD990045FDD8&& . A9FD4500&&&& dd&&&& elementc.0045FDA90045FDDC&& . B2FD4500&&&& dd&&&& elementc.0045FDB20045FDE0&& . BBFD4500&&&& dd&&&& elementc.0045FDBB0045FDE4&& . C4FD4500&&&& dd&&&& elementc.0045FDC4发现是个分支处理的函数,至于吃药是怎么分支的,我们先出去看看这个参数[ESP+4]和ECX的值是怎么来的...004576BF |. 8A0E&&&&&& mov&& cl, byte ptr [esi] |. 51&&&&&&&& push&& ecx |. 8BCB&&&&&& mov&& ecx, ebx |. E8 C7860000&& call&& 0045FD90下断,可以知道push ecx的时候ECX是0,而mov ecx,ebx的时候不知道大家看出来什么没有...当时我就觉得这个EBX的值很熟,后来一想,这个值不就是人物属性地址[[8BCB44]+1C]+24的值么...而且,吃药的时候,那个CALL要传入的参数始终是0...至此,所有的我们需要的信息都找到了...那我们就可以总结了...[[[[8BCB44]+1C]+24]+83C]+10 的值是角色包裹最大容量...[[[[8BCB44]+1C]+24]+83C]+C 是角色包裹首地址...[[[[[8BCB44]+1C]+24]+83C]+C]+4*格子序号 是格子物品首地址...[[[[[[8BCB44]+1C]+24]+83C]+C]+4*格子序号]+14 是此格物品的数量...[[[[[[8BCB44]+1C]+24]+83C]+C]+4*格子序号]+18 是此格物品的堆叠上限...授人以鱼,不如授人以渔...关于其他的地址需要大家举一反三
本文已收录于以下专栏:
相关文章推荐
CE+OD无法附加游戏进程的破解方法 来吧 别在为这烦恼了 其实看过 windows 核心编程那本书的人都知道 计算机编程领域 那些所谓的游戏保护 真的只是为难菜鸟而已,对于大鸟基本不起作用. 游戏无...
更具上一篇文章,又对计算器ce
SAX解析XML实例——根据结点属性查找该结点包含的信息
看到第5章就会发现,作者用了好多包裹函数,封装原始的api,所以不可避免必须学习下unix里出错处理方面的知识。
sockfd = Socket(AF_INET, &#160; SOCK_STRAM, ...
Linux网络编程(六)——包裹函数
系统调用不能保证每次都成功,必须进行出错处理。包裹函数就是把一般函数加了出错处理。包裹函数首字母大写。
/****************************...
他的最新文章
讲师:韦玮
讲师:陈守元
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 符文剑士人物属性 的文章

 

随机推荐