【发布时间】:2013-02-10 04:54:30
【问题描述】:
我想知道是否可以在已编译的 DLL 中“编辑”代码。
I.E.想象在Math.dll 中有一个名为sum(a,b) 的函数,它将a 和b 这两个数字相加
假设我丢失了 DLL 的源代码。所以我唯一拥有的是二进制 DLL 文件。
有没有办法我可以打开该二进制文件,找到我的函数所在的位置并将sum(a,b) 例程替换为例如另一个返回a 和b 相乘(而不是总和)的例程?
总结一下,是否可以编辑二进制代码文件?
也许使用像 ollydbg 这样的逆向工程工具?
【问题讨论】:
-
在内存中比在磁盘上更容易。并且希望您没有任何类似于 AuthentiCode 或其他此类验证,以确保在相当智能的加载程序准备加载 PE 映像时磁盘上的映像不太可能被篡改。
-
如果你的函数是在dll中导出的,为什么不直接包装dll呢?
-
我说的不仅仅是 DLL 中的导出函数。如果 sum(a,b) 是 Dll 内部使用的私有函数怎么办?不是要公开使用的出口产品。是否可以找到这些例程并更改它们?
-
@RaymondChen 我认为这只是部分重复。
标签: c++ windows dll reverse-engineering disassembly