如何注入代码到exe中使用OD进行操作

 我来答
盘默M2
2016-06-16 · TA获得超过2.9万个赞
知道大有可为答主
回答量:9723
采纳率:93%
帮助的人:8206万
展开全部
前期准备:

首先,我们需要一个调试器,这里我比较喜欢OLLYDBG ---我认为他是这个世界上最好的调试器 :P)
第二,我们需要一个拿来注入我们代码的应用程序,我选择的是windows的记事本(notepad.exe),把notepad.exe拷贝到一个新的目录下,
并把它重命名为CodeInjectTest。

开始

我们的目标是往Notepad.EXE 注入一些我们想要的代码,在例子中我们将在Notepad.EXE启动的时候注入一个简单的对话框。
启动记事本,如下是原本的记事本的样子。

用OD打开原始的notepad,如果没什么差错的话,你应该会看到下面的窗口。

因为我们需要往exe中注入自己的代码,因此需要遭到应用程序的空白处,这个空白处我们把它叫做CodeCaves。滚动od中的cpu窗口,
知道我们找到CodeCaves。如下:

地址从01008747开始。

在标红的区域中,就是notepad的CodeCave。在这里我们可以写一些自己想要的代码,而且他不会影响程序的正常运行。如果我们想要调用 Messagebox,
你需要知道一下关于Messagebox的介绍:

int MessageBox(
HWND hWnd, // handle of owner window
LPCTSTR lpText, // address of text in message box
LPCTSTR lpCaption, // address of title of message box
UINT uType // style of message box
);

这些就是你必须知道的一些关于MessageBox的东西,现在我们可以在CodeCaves 下做一些自己的事情了。首先,我们要创建MessageBox里显示的
提示信息的字符串,这里我们选择几行CodeCaves,如下:
点击 Binary=>Edit or (CTRL+E)你将看到如下的窗口,在窗口中输入你自己想填写的:

点击ok,你将会看到那些红色代码就是你修改的:
现在用CTRL+A 在分析一下代码。

Ok,如果你希望MessageBox ,有不同的标题属性,你可以重复上述的操作,创建另外一个字符串,如"INJECTED NOTEPAD"。

现在是时候编写 asm代码的时候了 ;)
我们需要编写触发MessageBox 的asm代码。这是一些快速的例子如下:
PUSH 0 ; BUTTONS = <OK ONLY>
PUSH 1008751 ; CAPTION = Our adress of the "INJECTED NOTEPAD"
PUSH 1008751 ; MESSAGE = Same like above.
PUSH 0 ; ICON = <NO ICON>
CALL MessageBoxA ; Run MessageBoxA with the Params above.

这些代码在od上看起来应该是这个样子的:

看到上面的箭头了没,接下来是重要的一步!如果你现在保存它并运行它,你将看不到任何的效果,为什么呢?
因为这段代码并没有被调用。
我们必须记住" PUSH 0" 的偏移位置,因为我们需要从程序的开始位置跳转过来,然后在跳回去 ;)
再记住了这个地址以后,跳转到程序的开头位置如下:

现在来到了程序开始执行的位置。还记得我们一开始我们想往程序里加入什么吗? ;) 从开始选择几段的代码,拷贝到剪贴板中。

把这些代码保存在文件中去,可能等下我们会使用到它。回到刚才程序的开头位置 (在图片中是 PUSH 70)
双击它,在弹出来的地方下 编写如下的代码"JMP <adress of your first push>"

按下Assemble 按钮,将看到如下红色的代码。

注意下红色盒子里的地址,这是我们等下需要跳回来的地方。

对比一下新的代码和刚才拷贝到剪贴板的代码,你会发现原来的一些代码被覆盖带了,为了保持程序可执行我们必须补上这些被重写的代码。

在这个例子中,被覆盖掉的代码如下:
PUSH 70
PUSH NOTEPAD.01001898

在 CALL MessageBoxA的后面,补上这段代码,然后跳回到原处。

一切都已经就绪了。

如下,保存一下新的记事本:

选择"All modifications",在弹出来的对话框中选择"Copy All" ,给程序去一个名字,保存它,如果你成功的话,你讲看到如下的窗体。

点击ok,记事本将正常启动了。

总结:

1.明白要注入的代码该怎么编写
2.记得恢复原来被代替掉的代码。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式