本教程教你人造指针。首先感谢银河漫步的教程,没有他的教程,我也不懂人造指针。人造指针是个好东东,当你无法找到指针时,可以用人造指针的方法解决问题。鉴于目前,人造指针的教程很少,因此,我也来做一篇教程,希望可以让更多的人懂得人造指针。
教程分为两部分,上部为制造篇:教你如何制造人造指针。下部为技巧篇:教你人造指针的一些技巧,里面有精彩的内容,请大家不要错过。
本篇教程为上部:制造篇。
正题:以飞行小游戏《鹰击长空》为例子。我找到了导弹的内存地址,但是动态地址,于是去找指针,可是找不到,怎么办?让我们人造指针吧。
选中该地址,用“找出是什么访问了这个地址”,为什么用访问,用改写行不行?当然行,但是,人造指针做好后,你要改变一下导弹的数值,人造指针才生效,没有访问的好,访问的可以直接使用人造指针。
回到游戏,再切回来,就会找到一个代码地址:523994,点击“显示反汇编程序”,点击“工具/自动汇编”,点击“模板/自动汇编框架代码”,点击“代码注入”,注入刚才找到的那个代码地址:523994,在newmen:下面写上一段代码,人造指针就成功了。
=============================================================================================
人造指针有两种方法,方法一:用固定地址造指针。我们需要一个固定的、静态的地址作为基址。那么,我们就去找一个空白的绿色的地址。点“视图/内存区域”(建议用6.X版本的CE,因为可以看到游戏的进程,游戏的路径要设为全英文的,这样,CE才能正常显示游戏进程。)我们找到对应游戏进程的区域(见图)。

找到了一个合适的地址(见图)。

那么,我们就以 7DBO10 这个地址作为人造指针的基址。回到CEAA脚本,写上这么一段代码(见图)。

找那些可读可写的地址段(见上图)。可以从上往下找,也可从下往上找,个人认为,下面的地址段比较空旷,所以从下往上找。我们找 007DB000 这个地址段,即该地址段从 007DB00 起,到007DF000 止,是可读可写的(见图)。

你要明白,[eax +00000640]是导弹的动态地址,第二行是指:把导弹地址存入eax里。你应该明白 7DB010 是我们刚才所找的固定地址,第三行是指:把eax里的数值写入地址 7DB010 中,那么,人造指针就完成了。点击“文件/分配到当前的CT表”。
7DB010 就是人造指针的基址,偏移量为0,它的数值就是导弹的地址,数值可以任意变化,也就是导弹的地址可以任意变化,但它对应的地址 7DB010 却是静态的,这就是人造指针的原理。
测试一下,把人造指针 [7DB010] +0 添加到CT表,激活人造指针脚本,回到游戏再切回来,指针就生效了,关闭游戏重开再试,动态地址发生了改变,但指针仍然是生效的,这就证明:人造指针成功了。
接下来我要说的是,如果我们在找固定地址的过程中,可读可写的地址段已写满数据,找不到空白的地址,那么我们可以往只读内存地址段找,找到了一个固定地址,比如:7E0D18,回到CEAA脚本,在最上面加一句:fullaccess(7E0D18,4),4是指4字节,基址写上[7E0D18](见图)。

那么该地址就可读可写了,人造指针同样是成功了。为什么要把只读内存地址改为可读可写?因为往只读内存写数据会导致游戏崩溃,所以要转化,明白了没?
但我要说的是,这个方法不是万能的,有些游戏,你把只读内存地址改为可读可写,仍然是无效的,所以,不到迫不得已不要找只读内存地址段。
=============================================================================================
以上说的是方法一,用固定地址造指针,下面说方法二:用申请临时地址造指针。临时地址是一个会变化的地址,而且我们还看不到它,但仍然可以用来造指针哦。方法是:回到CEAA脚本,加上一句:alloc(point,4),point就是代表申请的临时地址,4是4字节,人造指针的基址就是[point](见图)。

脚本需要还原,就加一句:dealloc (point,4)(见图)。

申请的临时地址,需要可以让全局调用,就要加一句:registersymbol(point)(见图)。

脚本要还原,就加一句:unregistersymbol(point)(见图)。

人造指针就完成了。把人造指针 [point] +0 添加到CT表,测试效果。在这里point之所以能够添加到基址里,是因为我们加上了可以让全局调用那一行代码,否则,point就不能添加到基址里,懂了没?测试结果是成功。
=============================================================================================
最后,我要说的是,上面所说的方法是相对模块地址来说的,也就是代码注入的那个地址 523994 是模块地址,如果不是模块地址,就必须要找到特征码,并用特征码的方式写CEAA脚本,而人造指针的写法则不变,这个你要懂得特征码写法,如果你不懂特征码,请看看特征码的相关教程,我这里就不多说了。
“非模块地址的代码共用现象很普遍,如果该地址有代码共用,那么就不能用来造人造指针。”这是银河漫步说的。
以上就是《人造指针图文教程(上)-制造篇》的全部内容,下一部:技巧篇有更精彩的内容,敬请期待。
讲解完毕,谢谢大家!
教程分为两部分,上部为制造篇:教你如何制造人造指针。下部为技巧篇:教你人造指针的一些技巧,里面有精彩的内容,请大家不要错过。
本篇教程为上部:制造篇。
正题:以飞行小游戏《鹰击长空》为例子。我找到了导弹的内存地址,但是动态地址,于是去找指针,可是找不到,怎么办?让我们人造指针吧。
选中该地址,用“找出是什么访问了这个地址”,为什么用访问,用改写行不行?当然行,但是,人造指针做好后,你要改变一下导弹的数值,人造指针才生效,没有访问的好,访问的可以直接使用人造指针。
回到游戏,再切回来,就会找到一个代码地址:523994,点击“显示反汇编程序”,点击“工具/自动汇编”,点击“模板/自动汇编框架代码”,点击“代码注入”,注入刚才找到的那个代码地址:523994,在newmen:下面写上一段代码,人造指针就成功了。
=============================================================================================
人造指针有两种方法,方法一:用固定地址造指针。我们需要一个固定的、静态的地址作为基址。那么,我们就去找一个空白的绿色的地址。点“视图/内存区域”(建议用6.X版本的CE,因为可以看到游戏的进程,游戏的路径要设为全英文的,这样,CE才能正常显示游戏进程。)我们找到对应游戏进程的区域(见图)。

找到了一个合适的地址(见图)。

那么,我们就以 7DBO10 这个地址作为人造指针的基址。回到CEAA脚本,写上这么一段代码(见图)。

找那些可读可写的地址段(见上图)。可以从上往下找,也可从下往上找,个人认为,下面的地址段比较空旷,所以从下往上找。我们找 007DB000 这个地址段,即该地址段从 007DB00 起,到007DF000 止,是可读可写的(见图)。

你要明白,[eax +00000640]是导弹的动态地址,第二行是指:把导弹地址存入eax里。你应该明白 7DB010 是我们刚才所找的固定地址,第三行是指:把eax里的数值写入地址 7DB010 中,那么,人造指针就完成了。点击“文件/分配到当前的CT表”。
7DB010 就是人造指针的基址,偏移量为0,它的数值就是导弹的地址,数值可以任意变化,也就是导弹的地址可以任意变化,但它对应的地址 7DB010 却是静态的,这就是人造指针的原理。
测试一下,把人造指针 [7DB010] +0 添加到CT表,激活人造指针脚本,回到游戏再切回来,指针就生效了,关闭游戏重开再试,动态地址发生了改变,但指针仍然是生效的,这就证明:人造指针成功了。
接下来我要说的是,如果我们在找固定地址的过程中,可读可写的地址段已写满数据,找不到空白的地址,那么我们可以往只读内存地址段找,找到了一个固定地址,比如:7E0D18,回到CEAA脚本,在最上面加一句:fullaccess(7E0D18,4),4是指4字节,基址写上[7E0D18](见图)。

那么该地址就可读可写了,人造指针同样是成功了。为什么要把只读内存地址改为可读可写?因为往只读内存写数据会导致游戏崩溃,所以要转化,明白了没?
但我要说的是,这个方法不是万能的,有些游戏,你把只读内存地址改为可读可写,仍然是无效的,所以,不到迫不得已不要找只读内存地址段。
=============================================================================================
以上说的是方法一,用固定地址造指针,下面说方法二:用申请临时地址造指针。临时地址是一个会变化的地址,而且我们还看不到它,但仍然可以用来造指针哦。方法是:回到CEAA脚本,加上一句:alloc(point,4),point就是代表申请的临时地址,4是4字节,人造指针的基址就是[point](见图)。

脚本需要还原,就加一句:dealloc (point,4)(见图)。

申请的临时地址,需要可以让全局调用,就要加一句:registersymbol(point)(见图)。

脚本要还原,就加一句:unregistersymbol(point)(见图)。

人造指针就完成了。把人造指针 [point] +0 添加到CT表,测试效果。在这里point之所以能够添加到基址里,是因为我们加上了可以让全局调用那一行代码,否则,point就不能添加到基址里,懂了没?测试结果是成功。
=============================================================================================
最后,我要说的是,上面所说的方法是相对模块地址来说的,也就是代码注入的那个地址 523994 是模块地址,如果不是模块地址,就必须要找到特征码,并用特征码的方式写CEAA脚本,而人造指针的写法则不变,这个你要懂得特征码写法,如果你不懂特征码,请看看特征码的相关教程,我这里就不多说了。
“非模块地址的代码共用现象很普遍,如果该地址有代码共用,那么就不能用来造人造指针。”这是银河漫步说的。
以上就是《人造指针图文教程(上)-制造篇》的全部内容,下一部:技巧篇有更精彩的内容,敬请期待。
讲解完毕,谢谢大家!