当然,首先得熟练基本编程.希望这个修改方法能被大家所学,且推广.
过程如下:
AlexTao 2006-04-26 11:55
主机防T修改方法(全完美版)
魔尊道:希望这类修改可以传开。
修改工具:winhex(16进制编辑器),OllyDbg(动态反汇编)
隐藏命令防踢修改方法
先给大家提供一个老生经验,某个关键子程序入口, call 49d3c0, 49d3c0处的子程序负责处理除主机外的玩家加入游戏的人物模型的过程。
用od加载meteor.exe,搜索字符串,找到“Warring!Load new character fail!"很明显的吧~
0048B784 > \E8 A7C0FFF>call Meteor.00487830
0048B789 . 8B10 mov edx,dword ptr ds:[eax]
0048B78B . 6A 00 push 0
0048B78D . 68 68925C0>push Meteor.005C9268 "Warring!, Load new character fail !"
上面的 0048B784处是由两个地方跳转来的 ,也就说明了存在两种“Load new character ”失败的情况。这两种情况一种是自己进场,一种是别人加场,不细说了。追溯其跳转源,寻找到下面的地方
0048B6E6 > \8B06 mov eax,dword ptr ds:[esi] ; Case 9 of switch 0048B6D6
0048B6E8 . 8B4E 04 mov ecx,dword ptr ds:[esi+4]
0048B6E8 . 8B4E 04 mov ecx,dword ptr ds:[esi+4]
0048B6EB 8B7E 08 mov edi,dword ptr ds:[esi+8]
0048B6EE 8B76 0C mov esi,dword ptr ds:[esi+C]
0048B6F1 894424 14 mov dword ptr ss:[esp+14],eax
0048B6F5 8D5424 14 lea edx,dword ptr ss:[esp+14]
0048B6F9 . 8D9D EC220>lea ebx,dword ptr ss:[ebp+22EC]
0048B6FF . 8D4424 30 lea eax,dword ptr ss:[esp+30]
0048B703 . 894C24 10 mov dword ptr ss:[esp+10],ecx
0048B707 . 52 push edx
0048B708 . 50 push eax
0048B709 . 8BCB mov ecx,ebx
0048B70B E8 B01C010>call Meteor.0049D3C0
看,关键的子程序49D3C0出场了,好,接下来进入游戏,找个朋友加你的游戏,然后切换回来直接在 Case 9 of switch 0048B6D6那行下断,我们要追踪人物模型代码的流向。这时切换回游戏,要你的朋友adddummy2 一个正常人物模型的 AI 比如律香川,(MODEL=19),成功中断,接下来F8单步运行,时刻留意左上的寄存器数值,最终在
0048B6E8 . 8B4E 04 mov ecx,dword ptr ds:[esi+4]
运行后发现,ECX=13,0h13=0d19,到这里就好办了,搞个跳转出去到个空白的地方对ECX做做手脚就OK了,比如,
0048b6b8 jmp ********
******** mov ecx,19
******** mov ecx,dword ptr ds:[esi+4]
******** jmp 0048b6** (跳回去)--------有效利用空白空间,这是修改的一个小技巧。
过程如下:
AlexTao 2006-04-26 11:55
主机防T修改方法(全完美版)
魔尊道:希望这类修改可以传开。
修改工具:winhex(16进制编辑器),OllyDbg(动态反汇编)
隐藏命令防踢修改方法
先给大家提供一个老生经验,某个关键子程序入口, call 49d3c0, 49d3c0处的子程序负责处理除主机外的玩家加入游戏的人物模型的过程。
用od加载meteor.exe,搜索字符串,找到“Warring!Load new character fail!"很明显的吧~
0048B784 > \E8 A7C0FFF>call Meteor.00487830
0048B789 . 8B10 mov edx,dword ptr ds:[eax]
0048B78B . 6A 00 push 0
0048B78D . 68 68925C0>push Meteor.005C9268 "Warring!, Load new character fail !"
上面的 0048B784处是由两个地方跳转来的 ,也就说明了存在两种“Load new character ”失败的情况。这两种情况一种是自己进场,一种是别人加场,不细说了。追溯其跳转源,寻找到下面的地方
0048B6E6 > \8B06 mov eax,dword ptr ds:[esi] ; Case 9 of switch 0048B6D6
0048B6E8 . 8B4E 04 mov ecx,dword ptr ds:[esi+4]
0048B6E8 . 8B4E 04 mov ecx,dword ptr ds:[esi+4]
0048B6EB 8B7E 08 mov edi,dword ptr ds:[esi+8]
0048B6EE 8B76 0C mov esi,dword ptr ds:[esi+C]
0048B6F1 894424 14 mov dword ptr ss:[esp+14],eax
0048B6F5 8D5424 14 lea edx,dword ptr ss:[esp+14]
0048B6F9 . 8D9D EC220>lea ebx,dword ptr ss:[ebp+22EC]
0048B6FF . 8D4424 30 lea eax,dword ptr ss:[esp+30]
0048B703 . 894C24 10 mov dword ptr ss:[esp+10],ecx
0048B707 . 52 push edx
0048B708 . 50 push eax
0048B709 . 8BCB mov ecx,ebx
0048B70B E8 B01C010>call Meteor.0049D3C0
看,关键的子程序49D3C0出场了,好,接下来进入游戏,找个朋友加你的游戏,然后切换回来直接在 Case 9 of switch 0048B6D6那行下断,我们要追踪人物模型代码的流向。这时切换回游戏,要你的朋友adddummy2 一个正常人物模型的 AI 比如律香川,(MODEL=19),成功中断,接下来F8单步运行,时刻留意左上的寄存器数值,最终在
0048B6E8 . 8B4E 04 mov ecx,dword ptr ds:[esi+4]
运行后发现,ECX=13,0h13=0d19,到这里就好办了,搞个跳转出去到个空白的地方对ECX做做手脚就OK了,比如,
0048b6b8 jmp ********
******** mov ecx,19
******** mov ecx,dword ptr ds:[esi+4]
******** jmp 0048b6** (跳回去)--------有效利用空白空间,这是修改的一个小技巧。