怎么判断选择哪条代码?

这些都是本人学习找基址的体会,写作水平有限表达得不清楚,网友或看不懂,或这个体会本来就是错的。贴出来认吧!哎。。。-_-!

 

查找什么代码写入该地址:
首先,当然会弹出一个框框,有代码显示出来。之后,怎么去判断我们到底应该选择哪一条代码呢?
举个例: MOV [eax+1C],ebx 查找EAX的值的内存地址
 之后,框框就会显示这类格式的代码(中括号在后面);如果前面是EAX的话,就是对的了。
 MOV eax,[ecx+2F]
 MOV ecx,[ebp+1A]
 MOV ebx,[eax+3D]
因为在OD里是以这样的顺充执行代码 //也就是逆向;
 MOV eax,[ecx+2F]
 MOV [eax+1C],ebx
以上只是一般会遇到的情况,还有可能会出奇意料以外的,例如:
 MOV eax,[ecx+2F];
 PUSH eax
 EBP+18 //EBP就充当一个变量,变量EBP+偏移18的值指向其它寄存器的值;这样在框框中就找不到eax
,判断的难度又提高了;还有待以后继续学习。

查找什么代码读取该地址:
同样,框框里有很多代码,怎么判断,选择哪一条呢?无论选择哪一条代码,结果只有一个。就是查找到的内存
地址的值在当前游戏里是不会产生变化的。举个例:框框显示有代码如下,都是读取同一个内存地址。
 MOV eax,[edx+3E]
 MOV edx,[ecx+3E]
 MOV ebx,[eax+3E]
 MOV esi,[ebx+3E]
 MOV ecx,[esi+3E]
下一步,我们要做的就是用CE查找括号中的edx,ecx,eax,ebx,esi的值的内存地址。得出这些寄存器的值的内存
地址;然后,继续操作游戏,观察数值有没有变化,内存地址的值在当前游戏中是一定不会发生变化的(这个很重要)。
内存地址的值发生变化就不要选择了肯定是错的。

 
写到最后,综合概括一下吧:以目标代码为主:MOV EAX,[EDX+3E]选择有EAX的代码,如果没有EAX,就随便选择
,一般都是第一条代码,双击查看更从信息,查找值,得到值的内存地址,断续操作游戏,判断内存地址的值有
没有变化,变化的不要,选择不变化的。
内存地址+偏移 组成新的内存地址再加偏移 一直这样循环。在这个循环中,如果其中一个内存地址是变化的,
最终就不等于当前游戏数值内存地址。当前游戏数值内存地址指代的不是基址啊,是用CE查找数值直接找出来的内存地址。

 

//只有我才可以理解我在写什么。。。-_-~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值