【干货】如何使用CE进行游戏逆向?11:AOB注入
文摘
社会
2025-01-04 17:00
广西
本期教程让我们来谈一下AOB注入。如果你上期教程已经听懂了,那么本期教程将会非常简单。但如果你还没有理解,那我们正好可以复习一下什么是AOB注入。我也没去查,但我猜它的意思是"Array of Bytes",就是字节数组的意思。不管它具体是什么,总之我们先进入游戏,找到上期教程讲过的那个位置,就是用于判断生命值的地方。我们已经很熟悉这个过程了,对吧?
然后,我们选择这行代码,选中后点击工具,选择自动汇编之前。我们在之前的模板里已经用过这个代码注入。实际上,这个工具里还有一些别的功能,比如API钩子或者代码重定位等,但我没有用过。因为一般情况下,我们都是手动写这些钩子。我对这些功能不太熟悉。这期我们使用的是AOB注入。选择确定,然后选中相应的选项,起一个名字。如果你想自定义,那就自定义,不想的话就直接默认就可以了。这些都不太重要。确定以后,他会给你生成一个模板。上面那些蓝色的其实都是注释,包括游戏名称、日期、作者等。然后下面也有一堆蓝色,这些是原来的代码。注入以后,它会变成什么样子,在这里进行注入,然后当注入完成后,它会是什么样子。大概就是这个意思。这些蓝色的都是注释,方便你查看,方便你在注入后想要恢复原样或者进行其他操作时能够看到原来的样子。然后,我们继续找到这个新内存。我们要写的东西在这里,因为这个代码昨天我们已经写过了,今天我们就直接复制过来。好像还是和昨天一模一样。再梳理一下,我们是在这个位置,从这个位置,游戏原本的代码跳到我们这个新内存里来。首先我们比较这个ESI和我们这个人物的机制是否相同。如果相同的话,就跳走,跳到112的位置。看左边这个地址列表,在这里是什么位置,就是生命值大于零的位置。也就是说,只要这个人物是我们自己,那我们就永远跳到一个生命值大于零的位置,让他永远不会死掉。如果不是我们自己的话,就继续往下执行嘛。只要能够执行到,那一定是我们玩家。如果不是我们自己,我们就判断一下生命值到底是不是零。然后判断完以后,不管判断的结果是多少,我们直接跳到1AF的位置。1AF在哪呢?在这里跳到了JJ这里。JJ会根据当前卡片的结果去选择跳到大于零还是不大于零的位置。这就是一个完整的流程。我们点击执行,执行完后确认注入成功。注入成功后,我们来试一下,看看是否还会死。先去打一下友军,发现可以打死我。然后去找个敌军打一下,同样可以打死。再炸一下自己,如果炸不死的话,就说明我们的修改是成功的。好,没有问题,没有死掉。那就说明我们的修改是成功了。本期教程的内容也就这样。