OD修改软件文本字符串内容
软件没有壳的状态下,可以修改软件的资源,达到替换软件内容的功能。下面演示如何使用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
修改好以后,点击汇编,则修改成功
运行后成功,可以看到如下图,提示被成功的修改了