| 修改众 |
08-07-02 12:29 |
已经明白指针了吧,那不算什么,入门而已。 想成为高手就要看这篇[s:2]
不过我还是要先声明,高手不是那么容易当的。 汇编是基本功,不会汇编就永远成不了高手。[s:1]
每次都要自己搜索指针很麻烦吧,我也不喜欢玩1次搜索1次。 咱就喜欢1劳永逸。
假如我们要用生命值做为指针。 被攻击生命值会减少,这个减少的过程其实就 将新的生命值写入生命的地址。 在生命值上右键"find out what write to this address",然后让怪打自己1下,就可以找到被怪攻击,自己hp减少的代码 从汇编代码上来说,代码几乎都是这样 -----mov 生命值地址,生命值 只要修改下这个代码,把生命值地址保存起来,这样就可以实现自动获得 通常只要在CE的汇编脚本中,申请1个新的内存地址做为指针,再申请1些空间写入我们的拦截代码即可。
假设CE得到的hp减少代码是这个 mov [esi+08],eax eax保存的是新的生命值,[esi+08]就是生命值的地址 汇编脚本中的代码就应该这样写
alloc(新的指针,4) //申请1个指针,存放1个地址用4个字节就够了 registersymbol(新的指针) //注册这个指针,这样才能在代码中当作地址使用 alloc(拦截hp指针,1000) //这里放我们的拦截代码,大小要足够 label(exit拦截hp) //设置返回标签
生命值减少的代码: jmp 拦截hp指针 //注意,1个jmp需要5个字节的代码长度 //如果原本的代码长度不足,就会把后面 的代码破坏掉,需要在返回前补足原本代码。 //如果原本的代码超过5个字节,就要补上足够的nop
拦截hp指针 : mov [新的指针],[esi+08] mov [esi+08],eax //补上原本的代码 //破坏掉的代码也要在这里恢复 jmp exit拦截hp //返回原本的代码位置
运行这个脚本后,只要被怪攻击,就可以记录下hp的地址,存放在我们定义的指针中。
然后在地址列表中,添加指针形式的地址,指针就用脚本中定义的那个新指针,写入对应偏移量就可以了。
有时候,改变自己hp的地址通常也用来改变敌人的hp, 这就有可能造成拦截到不是自己的hp指针。 所以,拦截脚本根据情况加上合适的判断代码 比如这样 cmp [新的指针],0 //对比指针是否已经保存 jne exit //已经保存就直接返回
所以,找到只改变自己hp代码是最好的。可以免去1些麻烦。
有些游戏,用来改变hp的代码,也用来改变经验值,魔法等等。 对于这样的游戏这个方法就不管用了。这种游戏比较少。通常windows游戏都不会这么做。 |
|