c++ PE注入附加功能

c++ PE injecting additional functionality

例如我有非常简单的 C++ 主函数

int main ()
{ 
    for (int i = 0; i < 10; i++) Sleep(10);
    return 0;
}

所以这个exe会在启动10秒后关闭。 现在的问题是: 有没有办法加入(连接)两个 PE 应用程序? 我正在尝试编写一个 C++ 程序,它将两个应用程序合并为一个新应用程序。例如: Ill 运行 我的程序,参数为 app:

My_app.exe %windir% / calc.exe 

Exe 包装器 一般说明 Exe wrapper 是一个命令行实用程序,可以编译和输出一个“启动器”exe 就像输入 exe 一样工作,并具有一些附加功能。包装器必须是命令 基于三个输入变量的行: 1.任何windows个可执行文件 2.到期日期时间 3. URL 到服务器指令和“下载exe” 示例命令: wrapper.exe “input_exe.exe” “20150528 15:00:00” “http://pemainin。 com/launch_askar.php?pid=2&tid=123&n=test” 包装器的输出是一个新的 exe 文件,它看起来与输入尽可能相似 可执行程序。 如果根本没有设置过期时间,输出的 exe 应该就像 exe 从一开始就过期一样。这 输出exe应该如下

你描述的不可行。您将不得不分析目标应用程序的原始代码并将您的自定义代码注入该代码中以执行您需要的操作,在到期时间打破其消息循环(如果它甚至有一个)等。实现起来非常复杂,甚至不值得努力的地步。

一种侵入性较小且更容易实施的方法是将自定义代码附加到目标 .exe 文件的末尾,然后读取文件的 PE header 以找到应用程序的入口点功能,并用绕道跳转到您的自定义代码和蹦床回到原始入口点代码,以便应用程序可以 运行 正常进行修补。您的自定义代码可以启动一个工作线程,在到期时杀死当前进程(最好通过优雅的方式 - WM_CLOSE/WM_QUIT,等等 - 在诉诸蛮力之前 - TerminateProcess()),或者在允许应用正常 运行 之前做任何它需要做的事情。

另一种方法是创建和 运行 您的启动器作为一个完全独立的进程,让它在启动时做任何 ot 需要做的事情,然后 运行 原始目标 .exe 文件通常和在到期时间杀死它。如果你想将两个.exe文件合并成一个.exe文件,你可以将目标应用程序存储到启动器的资源中,然后启动器可以将应用程序提取到一个临时文件,运行它,然后删除它(或者,有第三方解决方案 运行ning 可执行文件来自内存而不是文件)。这种方法的缺点是,知识渊博的用户可以在 运行ning 时复制提取的应用程序,从而绕过您的启动器。

您要构建的内容称为 "binder"。您可以通过包装器 "join" 两个 PE 文件 stubdecoy 来实现您想要的效果。 stub 将实现您概述的主要功能(从 link 下载,超时 e.t.c),还将负责删除并执行嵌入的 decoy PE 文件用包装纸放进去。包装器可以将 decoy PE 文件嵌入资源部分或将其附加在 stub 文件的末尾,并添加一个配置文件,告诉 stub 关于资源部分的位置和大小诱饵文件,URL,超时,e.t.c进入资源部分。因此,当 stub 为 运行 时,它所要做的就是定位并读取配置,并将 decoy PE 文件作为新进程删除并执行。为了使 "binded" 可执行文件看起来像 decoy PE 文件,包装器可以将 decoy PE 文件的图标和版本资源应用到 stub.

Here是我用源代码实现的活页夹。