然后去打怪 让血减少 选减少的数值
然后加血 选增加的数值
然后去打怪 让血减少 选减少的数值
然后加血 选增加的数值
……
这样反复多次以后 就会剩下几个 你自己再试试就知道了这明显是dll里的一个基址。
简单说就是dll里的一个全局变量。但是要注意的一点是,dll里的模块基址可能会变的,这就导致了你说的情况。
这里,你可以计算出这个变量到模块基址的偏移,这个值是不会变的,再用它加这次打开游戏时coreclientdll的模块基址,就可以得到具体的地址。
写程序的话,你直接可以用Win32API得到模块加载时的基址。
另外说一句,看看汇编和OD吧。。。这么玩是玩不转的,局限性太大。exe这个应该是模块基址,执行模块一般是0x0040 0000,8BBC1C是相对于进程空间的绝对地址。也就是8BBC1C这可能存放的是一个全局变量(或对象或结构体),这个变量映射在内存空间中的虚地址应为0x0040 0000 + 8BBC1C,你可以定位到这个内存地址值,然后根据上面的偏移找到存放血量的内存地址。偶然
看见了缘分我
来说说我的心得吧
你找一个技能冷却时间长点的
反正时间要大于
你的CE搜的时间
先搜0吧
试试看
然后
使用技能
让他处于冷却时间
然后
每隔一小会
搜减小了的数值
直到最后搜到一个唯一数
如果不行就
先搜
4字节
未知初始值
使用后
搜改变了的数值
直到剩一个
这样就得到了
该技能的冷却时间
用CE往回查
就应该会查到一个数组
然后慢慢上去
就是了加了驱动保护的。。。。现在一般网络游戏都这样,说个不治本的方法。以CE55为例!
打开CE的设置
把
“内存区域查询程序”
“可能时使用内核模式调试器”
“ 使用全局调试程序”
“隐秘模式(用户模式)”
“隐秘模式(内核模式)”
这几个选项全部选上!!!(看下面有个警告,看清楚,系统崩溃了别怪我!)
隐秘模式(内核模式)下面有个“更多”的选项,点击进去,将“防止所有模块溢出”这个选项选中!
按确定保存。。。保存。!这样,加载的话,游戏应该就不会停止了。。
治本的方法嘛。。。。用CE比较方便,但OD也是可以的,基址就是静态地址
1、首先要先确定某一内存数据,即血蓝XY什么的
2、然后看地址,基址就是固定在程序中的某一位置的地址,具体点就是data区段里的地址
通常来说刚开始找到的地址是动态的,即临时分配的内存中
3、这个时候需要在你找的地址上下读写断点,一般来说会断到形如“mov 寄存器1, [寄存器2 + 偏移]”的指令
4、去搜索"寄存器2"的值,看看有没有静态地址存放,如果没有,重复上述步骤,直到找到静态地址。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)