【干货】《DNF》反外挂逆向教程01:实现血量增减

文摘   社会   2025-01-05 00:00   广西  

本系列教程呢给大家讲一下这个DNF啊,然后本期就是通过血量实现一个血量增长秒杀敌人的这样的一个功能。那既然是啊通过血量,那我们就要来找一下这个血量了。打开C1附加一下啊,然后呢我们走到一个修炼场吧,打开人物版面,我们来看一下血量,是一个7592275922啊。

在这里呢我们就直接搜了啊,这个游戏比较简单啊,没有加密啊,也也不是浮点型的,直接搜,啊搜到了12条数据。然后呢我们改一下生命值设置,改一下10%来看一下,我们这边有三条数据变动了,其中这两条呢是在自增长的啊,和我们这边一样,再自己回血,那把这两条给拖下来。

这两条数据呢我们选哪条数据呢,我们可以直接改一下,看一下,改个十啊,被改写回来了,那我们看一下第一条,改个十哎,从十开始往上自增长了,那是不是就是第一条,第一条可以改变我们的血量是不是,复制一下啊,当然回满血也可以啊,比如说什么759922,是不是我血就回满了,那我们打开插debug啊附加一下,嗯这时候呢我们先观察一下这个地址啊,CTRLJ跳转到这个地址观察一下,看一下有没有我们想要的其他数据啊,我记得是什么,一般什么血量啊,血量上限,蓝量蓝量上限啊,这四条数据一般都在一块的,我们来看一下啊,是这一行12892是什么,75922十进制是75922,也就是我们的血量,再看看附近啊。

我在底下看到了一条157,第一是什么,是一个8801788017呢啊,是不是我们的魔法改一下,A r,啊我们的魔法减少了,然后再自增长,是不是,恢复选区,然后呢我们魔法就回来了,那这里呢就是我们的魔法地址了啊,但是呢我们没有看到任何血量上限和魔法上限,是不是这附近也没有第二个12892啊,是不是往下翻一下看一下啊,没有看到,也没有看到157D1。

这儿有一个啊不是啊,都没有看到。那这个血量上限和蓝量上限呢,我们以后再说。那现在呢我们找到了血量当前血量和当前蓝量,我们现在就要对它进行一个断点进行一个访问啊,找到他的基地址,找到它的偏移,这样我们就可以写代码了,是不是啊。我们找到它的公式啊,我们代码通过这个公式可以观察这里的地址啊,然后呢只要我们这里的地址啊减少了,我们再把它改回原样,这是不是实现了一个锁血高啊。我血量只要一减少,我就把它改回原样。哼那我们右键了下一个端点访问啊,读取四字节断在了这里,然后呢IEX来自于这个call,这时候呢我们下个段啊,看一下是不是每次访问都是访问了我们的血量,12892就是我们的血量是不是下个段啊。

12892运行断点不放开运行,他每次呢IX呢都是12892,那就说明了我们只要在这里下断点,这个断点啊,这个断点的时候呢就是为我们这个人物对象的血量而服务的,我们只要一下啊IX就是12892,那我们就可以放心的在这个call的地方啊下断点了。它返回的值啊一定是一个12892F8哎。好断点没放开啊。F嗯这是怎么回事啊,减号断点,然后呢F,哎为什么断点自动就掉了F8呢,没有用啊,那我们在这里直接下段下段失败啊,断点于这失败,那我们在这里下段RX就是12892,是不是,那我们F7直接就进去嘛,看一下嘛。

F7RCX加3528给了ax是L1A的,把复制出来啊,不需要括号,减号出来。我们追RCXRCX来自于上一层,那我们就在这里下一个F2端点,通过堆栈啊,回车返回,注意RCXRCX来自于RBX,那这时候呢我们写一个注释啊,RBX,阿BX呢我们往上追啊,复制一下RBX1BX零X六四,这里下段它是不断的,那继续往上追,这里呢我们下个段断下来了,RX啊,变成了RX,我们可以试一下。

这时候的REX呢,我们复制一下,在内存里面CTRLG看一下是不是12892,那我们就找到了啊。那IX呢我们继续往上追,来自于这个call像个断点。F7F8运行运行到return,减号。REX呢来自于2X加一个FFF10啊,如果我们双击呢,直接就可以看到它是RX加一个-20啊。不是-20啊,是二零。那这里呢是不是就等于2X减一个0X20,继续往上追RX啊,减号减号减号X来自于这个call,那我们就减号出去,下个断点F7F8运行到这个call,F7F8运行到return,减号ix来自于RCX加一零减号,RCX啊来自于这个基地址,这个基地址呢是L1A的,所以说呢括号就不要了,然后呢在这个call你们RCX是什么,加一零是move啊,那就需要这个括号,讲话出去。

然后这个基地址呢代替这个RCX是不是这样,我们得到了这个出来的这个IX。然后RX又减了一个啊,200x20。然后我们再出去减号出去,替换一下这个ix。那我们公式是不是这样复制一下,Ctrl g确定啊,还是这个地址啊,还是这些值,那我们就找到了这个,啊这个我们角色的血量和蓝量了啊。它的公式啊,我们就找全了,这是一个当前血量。

这里呢我们蓝量是在它加八的地方,那就是这个28+8是三零当前蓝量。这时候呢啊我们找到了当前血量的公式啊,我们也可以通过公公式来更改我们的血量我们能量,包括呢敌人呢啊,我们也可以通过血量能量来更改。那这时候呢,我们就要找一下敌人的血量和蓝量了,包括呢我们啊怎么秒杀这个敌人,我们秒杀敌人是不是把他的血量呢改成零,是不是就能秒杀敌人了啊,我们可以试一下我们自己啊,现在我们还没有找敌人,我们可以用我们自己的公式来试一下,这里呢我们把它改成零,但是我没有死啊。

应该是在竞技场里练习场练习场里啊,我们去一个副本里看一下啊。often哎,找个地方看一下。哎,找哪个地方呢?诶怎么出去啊?还真不知道,我靠,什么鬼!就是这个,随便找一个地方。那我们在这张地图里呢,我们把我们的血量改成零,看一下我们会不会直接就死亡了啊?没有死亡。

那么呢我们可以找一个啊,我这个死亡是因为我被怪打的啊。X复活。我们可以找一个怪物啊,来看一下啊,这个怪物吧未知初始值啊。我们直接搜怪物的血量,未知初始值。然后呢我们攻击一下啊,直接就死了啊。装备给退一下,还是直接就死了。这怪物不禁打呀。

我们还是回到训练场吧。这怪物不禁打。训练场,召唤一个有生命值的怪物啊。现在呢是一个新的扫描未知初始值首次扫描。然后呢我们攻击一下是不是减少的,再攻击一下减少的,再攻击一下减少的,然后是未变动的,未变动的减少的,减少的减少的减少的减少的,然后呢还有45条数据。我们来看一下啊啊这45条数据呢都挺大的。我觉得是这两个,打一下减了19点血啊,我还没算啊。现在是313,我们看一下12点血是不是301了,是不是9345301,本来是9345313的,减了12点血,那就是这个了啊。

这时候呢我们把它改成零,看一下哎怪物的血量是不是就清零了,但是他没有爆炸,也没有死亡,那说明我们这个值呢只可以修改嗯,他的血量啊,可以让他的血量增加,也可以也可以让他的血量减少,但是呢这个血量呢,我们不可以让他进行一个死亡,除非我再攻击他一把,是不是他就死亡了,那我们要找的是一个秒杀call啊,不是一个变化血量的call,那我们下期教程再说吧。


暮色的狐
这是一只高强度上网冲浪、高质量输出内容的狐狸。主打ACGN杂谈、技术干货分享、第九艺术鉴赏、网梗百科解析、情感树洞鸡汤、正能量价值观~
 最新文章