软件没有壳的状态下,可以修改软件的资源,达到替换软件内容的功能。下面演示如何使用OD修改内容。

要修改的软件,运行效果如图

要求把内容:“大家好” 修改成“你好吗” 或者“我是古天乐”

一样长度的文本很好修改,不一样的长度的文本修改起来就要困难一点。

修改方法

“大家好” 修改成“你好吗”

1.使用OD载入软件,拖到最上面,在旁边的注释窗口,已经给我们显示出来了内容了,那么我们就可以很方便的修改了。

修改之前,先看看程序运行的原理,这儿拿易语言演示。

信息框 (“大家好”, 0, “我是渣渣辉”, ),这段代码,在机器执行的时候,把参数从右到左推入栈中

所以从上面的OD可以看到先PUSH的是“我是渣渣辉”

入栈后,就会调用相关命令,机器码中是使用的CALL方法,如下图,红色标注的为CALL方法

既然知道了原理,那么我们就动手开始修改吧。我们的第一个目标是修改“大家好”为“你好吗”

选择 0040102C |. 68 8FD54700 push 测试.0047D58F ; ASCII "大家好" 这行数据,右键->在数据窗口中跟随->立即数

可以在下面的HEX数据窗口看到已经跳到了指定的地址0047D58F,和上面机器码push 测试.0047D58F 的十六进制数一样

选择要修改的内容,双击或者任意按键内容,会弹出一个窗口,这个窗口就可以修改数据了

我们在上面的ASCII窗口输入要修改的内容:“你好吗”

输入内容显示为乱码,没关系,点击确定即可

【关于保持大小选项,取消勾选,则内容可以随意长度,不过可能保存后会溢出,导致程序运行报错的情况】

可以看到,内容已经成功的被修改成了你好吗

这个时候运行程序,可以看到弹窗提示为“你好吗”

“大家好” 修改成“我是古天乐”

上面的修改很简单,只要长度一致就可以任意修改。如果长度不一致,尽管有些时候可以取消勾选保持大小,但是很容易报错。可行的办法则是在数据窗口找一块空白的数据地址,键入内容。

首先找一块空白的区域,可以看到程序尾部有一大段空白的区域,那么这儿就能随意的填充内容。

按照上面的修改方法,修改内容

文本开始的地址为0048ED5F,这个则为数据地址,那么入栈也需要把这个数据推入

找到指令0040102C |. 68 8FD54700 push 测试.0047D58F ; ASCII "大家好"

双击修改汇编代码,默认入栈的地址为0047D58F,我们需要修改成我们添加文本的地址:0048ED5F

修改好以后,点击汇编,则修改成功

运行后成功,可以看到如下图,提示被成功的修改了

课件下载

https://storage.tirr.com.cn/s/apj7yn44

发表评论

共有 0 条评论