首先说明下,虽然我明白这个过程,但我的语言表达能力不是很强,可能会有让你不明白的地方,可以留言共同探讨。
这种修改过程等同于将动态内存地址变为静态地址差不多一个道理。 CE中的 Trainer maker 能够很简单的做出修改器,但对代码的修改支持不是很好,只能使用nop代码修改。这里就是向你讲述下怎么做出具有代码修改的修改器。 在CE中,有些游戏的指针是很难找,但我们找到第一个指针一般都很容易,找到第一个指针地址后,通过代码分析来对原代码进行修改来达到我们的目的。 第一步:找到游戏空闲的内存空间。(这步非常重要) 载入游戏后,进入CE主界面。 点击“Memory view”-> “View”->“Memory Regions” 在弹出的窗口里我们要注意观察的有三点 (图1)点击看大图 第二步:移植和修改代码 这里我用一个游戏的例子来说明,不然光说很容易乱。先看代码,为方便说明我用数字代替。 原代码 -------------------------- 1-3是游戏的原代码,其是2是我们要修改的地方,把eax换成数值,因为数值要占用四个字节,2处只有两个字节,1处正好有三个字节,我们的一个跳转刚好是五个字节,所以就在1处[004307EE]双击输入“jmp 00124000”,其中00124000就是我们先前找好的空闲内存的地址。点确定后因为要覆盖掉原来的代码,所以CE会问询问你,点两个同意就可以了。完成后1和3两行代码会变成4的样子。刚好占用了5个字节,而没伤到3。 其实也无所谓,我们这样做只是减少代码的输入量,到后来弄修改器时你就知道了。 修改后代码
添加的代码 此步的主意就是:破坏原程序的内存代码并在破坏处改成一个跳转语句,跳到先前找到的空闲内存处。 跳到空闲内存处后,恢复被破坏的那部分代码并加入修改后的代码,最后再跳回原程序没被破坏的代码处(就是跳到上面所讲的未被破坏的 3 处)让程序继续执行。 用数字代码说明就是:破坏原程序1和2两处代码,之后再被破坏的1 和2的地址上写上如 4 样的跳转代码。之后在空闲内存处,5是恢复了被破坏的1处代码,6则是我们对2处修改整理后的代码,7跳回未被破坏的原程序3处继续程序运行。这个过程就完成了对动态的内存地址变为静态的内存地址,因为我们需要修改的值已经放在了不变的地方。 因为有人问了所以就又加入了这些话,我的表达能力确实不太好,希望能让你明白。 如果你对这个过程还有混乱的话,就直接看看CE的自动代码注入的功能吧,参看CE教学的第七步“代码注入”,一样的道理和过程,这里只是用动来完成这个过程。
地址有了,值也有了,将下面内容应用到KTM里也就简单了。记得下面地址的值是十进制。 (图3) |
免责声明
本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件编程开发或软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习编程开发技术或逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者用于商业用途!否则,一切后果请用户自负!
|Archiver|手机版|小黑屋|联系我们|宝峰科技 ( 滇公网安备 53050202000040号 | 滇ICP备09007156号-2 )
Copyright © 2001-2023 Discuz! Team. GMT+8, 2024-12-21 21:58 , File On Powered by Discuz! X3.49