编辑 PE 可执行文件以使其在启动时加载指定的 DLL 的最简单快捷的方法是啥?

Posted

技术标签:

【中文标题】编辑 PE 可执行文件以使其在启动时加载指定的 DLL 的最简单快捷的方法是啥?【英文标题】:What is the most easy and fast way to edit PE executable file to make it load specified DLL at startup?编辑 PE 可执行文件以使其在启动时加载指定的 DLL 的最简单快捷的方法是什么? 【发布时间】:2013-08-03 19:39:03 【问题描述】:

我需要制作一些 exe 文件来在启动时加载我的 DLL... 最简单的方法是什么? 我正是需要这个,没有任何注射器或启动器。 我想在 exe 中再添加一个代码部分,重写入口点逻辑并放置 DLL 加载代码,然后 NOPing 原始入口点并调用我自定义的入口点函数。这行得通吗? 还有其他更简单的方法吗?

我还考虑将十六进制编辑器中的系统 dll 名称之一更改为我的 DLL 的名称。这行得通吗?如果我的dll然后加载替换的系统dll? 有什么想法吗?

【问题讨论】:

尝试研究病毒是如何编写的,因为它与您正在做的事情相似,尽管我确信这不是您正在做的事情:)。也许将您的 dll 附加到文件的末尾并更改 exe 的入口点? 嗯,我想,我需要以某种方式从内存中加载这个 DLL,这比从磁盘加载更难。这是一个疯狂的程序激活系统,我的老板认为很容易制作。我必须保护我没有来源的第三方 exe,并且这个 exe 不会为我重建。所以,我想在它启动时执行自定义代码来检查许可证。 说真的,也许有病毒工具包可以轻松完成您的尝试。 嗯我想如果我在这里没有任何想法,我应该搜索病毒工具包:O,但我更喜欢一些一般的想法,甚至更好的分步指南:P 【参考方案1】:

将其添加到 PE 的导入表中就足够了。 Woodman 列出了一些可以做到这一点的工具:

http://www.woodmann.com/collaborative/tools/index.php/Category:Import_Editors

【讨论】:

以上是关于编辑 PE 可执行文件以使其在启动时加载指定的 DLL 的最简单快捷的方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在写入期间锁定文件以使其在打开时无法读取?

为啥我们需要将 Swift 类标记为 `public` 或 `open` 以使其在 Objective-C 框架项目中可访问?

如何放置时间戳以使其在保存时不会重复

用逗号替换分号,并在存储过程中的字符串的两端添加引号,以使其在IN子句中可搜索

我在哪里创建 .ebextensions 以使其在 AWS Elastic Beanstalk 中工作

如何将数据加载到 Hive 表并使其在 Impala 中也可访问