怎么判断选择哪条代码?

    技术2022-05-19  21

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

     

    查找什么代码写入该地址:首先,当然会弹出一个框框,有代码显示出来。之后,怎么去判断我们到底应该选择哪一条代码呢?举个例: 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)