讲解FPS游戏内存crc检测原理教程(4)
2023-05-29 来源:百合文库
从上面两图所得出,他实际传入/检测的值是007B65CF的最后一个字节,再次将值修改为其他下段验证:通过多次下段验证,确认了传递给AL的值就是“透视地址”的值,如果给他传递的值不正确,服务器就会知道你修改内存,进行封号,踢下线等等操作。知道了此处代码的作用,我们应该如何采取怎么样的措施呢?是直接进行伪造?直接NOP掉 来不 让其执行检测代码?那肯定是不行的。将检测CALL或者某些关键的位置NOP,不让其执行检测代码,这是早期最为常用的手段。而经过这么多年的发展,游戏公司和逆向工作者都在进步(这里得BS下该死的游戏公司安全技术员)。那么假设将该CALL在某处NOP不让其执行,确实不会触发检测代码。但是假如CALL内有必要的心跳要发送至服务器,同时也会将心跳截断,服务器也会知道你修改了内存代码。
那么最好的办法就是在不影响代码正常执行的情况下进行伪造,可以在适当的位置进行HOOK,在自己的函数中给AL/或者eax赋值,即0x01或0x101。hook代码如下图(OD反汇编):========================================56AF3D5C 83C4 04addesp, 4我们在此处下HOOK56AF3D5F 8A00moval, byte ptr [eax]还原这两条代码56AF3D61 9Cpushfd跳回这个地址========================================
如此一来,在不影响代码正常执行的情况下便成功伪造了地址正常的值。假设他有多重检测,下一个检测地方应该在哪里?咱们修改了内存代码段,使其发生了变化,如果多重扫描和检测,只需扫描此处修改的JMP,当然,咱们也可以在此处下段,继续伪造。他检测了多少层,那就就伪造多少层。但是在win10系统上,在该处并未发现有其他代码访问。分析到这里,接下来的工作就是写HOOK了过掉,我们下次在写个帖吧,写帖好多图和字真是体力活!================================
那么最好的办法就是在不影响代码正常执行的情况下进行伪造,可以在适当的位置进行HOOK,在自己的函数中给AL/或者eax赋值,即0x01或0x101。hook代码如下图(OD反汇编):========================================56AF3D5C 83C4 04addesp, 4我们在此处下HOOK56AF3D5F 8A00moval, byte ptr [eax]还原这两条代码56AF3D61 9Cpushfd跳回这个地址========================================
如此一来,在不影响代码正常执行的情况下便成功伪造了地址正常的值。假设他有多重检测,下一个检测地方应该在哪里?咱们修改了内存代码段,使其发生了变化,如果多重扫描和检测,只需扫描此处修改的JMP,当然,咱们也可以在此处下段,继续伪造。他检测了多少层,那就就伪造多少层。但是在win10系统上,在该处并未发现有其他代码访问。分析到这里,接下来的工作就是写HOOK了过掉,我们下次在写个帖吧,写帖好多图和字真是体力活!================================