用od反汇编,如何在反汇编里面插入自己要加入的代码??

用od反汇编,如何在反汇编里面插入自己要加入的代码??,第1张

如果空间足够,可以直接原地改,如果知道机器码,直接编辑二进制数据,否则选择菜单中的汇编,输入汇编指令。有空间剩余,用空指令补齐

如果没有足够空间,则需要跳转到足够大空白处,跳转处如有空间剩余,也用空指令补齐,完成后再跳回来,

-----------------------------------------------------------

PUSH ERSoe_Te.10925854

PUSH 5B

应是为子程序100A1FB0传递参数,不建议在此处插入代码,一定要这样做的话,我认为可以有两个方案:

1.常用的方法,一个短跳,跳到附近的空白处,retn语句后可能是一个好去处,具体是不是,要具体分析。完工后再跳回来。

PUSH 5B占用两个字节,短跳也占用两个字节,正好!

2.因为retn语句之后可能是片可以利用的空白,PUSH 5B附近是子程序调用,应该也不会有什么语句直接跳到这里来,且代码极少,可以考虑向下移动,将反汇编的代码依次汇编,工作量不大。

空白就是指程序没有使用的空间,我们拿来用,也不会影响到程序原有的功能,如果我们使用了程序使用的空间,就会破坏原有的代码或数据。大片的相同数据多数情况下就是空白,这个可以作为参考,但不是依据!

默认情况下隐藏只有在“选项”对话框中的“调试”节点下启用了地址级调试后,该功能才可用。

但对于脚本或

SQL

调试是不可用的。

反汇编

”窗口显示与

编译器

所创建的指令对应的汇编代码。

如果正在调试

托管代码

,则这些

汇编指令

对应于由实时

(JIT)

编译器创建的本机代码,而不是由

Visual

Studio

编译器生成的

Microsoft

中间语言

(MSIL)。

除汇编指令外,

“反汇编”窗口还可显示如下可选信息:

每条指令所在的

内存地址

对于本机应用程序,这是实际内存地址。

对于

Visual

Basic、C#

或托管代码,这是距离函数开头的偏移量。

程序集

代码派生于的源代码。

代码字节

实际计算机或

MSIL

指令的字节表示形式。

内存地址的符号名。

对应于源代码的行号。

汇编语言指令由

助记符

(指令名称的缩写)和代表变量、寄存器以及常量的符号所组成。

每一条

机器语言

指令由一个汇编语言助记符代表,通常其后还跟有一个或多个变量、寄存器或常量。

如果您无法阅读汇编语言但又想充分利用“反汇编”窗口,请参考有关汇编语言编程的好书。

汇编语言编程超出了我们对“反汇编”窗口进行简单介绍的讨论范围。

汇编语言代码在很大程度上依赖处理器的寄存器(对托管代码而言,依赖公共语言运行时寄存器),您将发现协同使用“反汇编”窗口和“寄存器”窗口将很有用,可以允许您检查寄存器内容。

您很可能愿意使用汇编语言,而从来不会愿意或需要查看原始的、数字形式的

机器代码

指令。

不过,如果愿意的话,可以利用“内存”窗口或从“反汇编”窗口的

快捷菜单

中选取“代码字节”来查看。

注意显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。

若要更改设置,请在“工具”菜单上选择“导入和导出设置”。

有关更多信息,请参见使用设置。

用 inline patch就行了。

地址你知道了,反汇编你也能看懂,写个这么个东西很难么?

找个nop填充的位置,一般在程序的最下边。

然后修改循环前的代码为jmp xxxx

xxx是你找到的nop段的地址

这时候你写入后,如果你用了OD,OD会自动nop填充来对齐代码,你写入的那个位置的汇编代码就覆盖掉了。

记住这个指令,然后在跳转后先执行这个,保证原始功能正常。

然后实现你自己的逻辑。

实现完了,用jmp指令调回你想调回的位置。

整个过程保证你的汇编代码的正确性,不要破坏寄存器的值。

基本过程就是这样了。

如果你想让一个循环无限执行,具体的写法你应该参考你的程序,核心思想就是修改源程序汇编指令,跳到程序nop填充的位置(程序为了字节对齐,一定会有一些nop填充段),执行你希望的逻辑,执行完后,用jmp将控制权正确转交个程序。程序是你写的,控制权在你手里,想怎么循环怎么循环。

这个是直接修改。用程序也能改,不过想写出个比较通用的inline hook代码,比较麻烦。你自用,手动来就行了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11461636.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存