C++ 代码注入使注入的应用程序崩溃

2024-03-09

我试图将一个简单的可执行文件注入到我制作的另一个可执行文件中,不幸的是,每当我将代码注入到可执行文件中时,它都会说“simpleinjected.exe 已停止工作”,然后它就会关闭。我在用着CreateRemoteThread来注入代码。这就是我到目前为止所做的。

注射器.exe// 注入代码的文件

#include <stdio.h>
#include <windows.h>

#define procId 2844
#define executable "executable.exe"    // located in same directory

int main()
{
    HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, false, procId);
    LPVOID allocated = (LPVOID)VirtualAllocEx(hProc, NULL, strlen(executable), MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE);
    WriteProcessMemory(hProc, (LPVOID)allocated, executable, strlen(executable), NULL);
    LPVOID libaddr = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA");
    CreateRemoteThread(hProc, NULL, NULL, (LPTHREAD_START_ROUTINE)libaddr, NULL, NULL);
    CloseHandle(hProc);
    return 0;
}

简单注入程序// 正在注入的文件

#include <stdio.h>

int main()
{
    printf("Hello");
    return 0;
}

可执行文件// 可执行文件被注入到 simpleinjected 中

#include <windows.h>

int main()
{
    MessageBox(NULL, "Injected successfully", "Code Injection", MB_OK);
    return 0;
}

该消息未显示并且simpleinjected.exe崩溃。崩溃显示代码已插入,但我不明白为什么会崩溃。

当使用 DLL 和上述相同技术时,DLL 在“simpleinjected.exe”中执行,但在注入 Firefox 时不起作用。 dll代码如下。即使注入成功,它也会在自定义应用程序中执行,但不会在 Firefox 中执行。

dll注入程序

#include <windows.h>

int message(const char *msg)
{
    MessageBox(NULL, msg, "Message from Dll", MB_OK);
    return 0;
}

BOOL WINAPI DLLMain(HINSTANCE hInstDll, DWORD ulReason, LPVOID lpReserved)
{
    switch(ulReason)
    {
        case DLL_PROCESS_ATTACH:
            message("process attach");
            break;
        case DLL_THREAD_ATTACH:
            message("thread attach");
            break;
        case DLL_PROCESS_DETACH:
            message("process detach");
            break;
        case DLL_THREAD_DETACH:
            message("thread detach");
            break;
    }
    return true;
}

Simpleinjected.exe 的修改代码如下。然后再次尝试将 dllinject.dll 注入到 Simpleinjected.exe 中。

#include <stdio.h>

int main()
{
   while(true)
   {
      printf("Hello");
   }
   return 0;
}

您应该像 Simpleinjected.exe 一样修改下面的定义。

#define procId 2844 //process id of Simpleinjected.exe
#define executable "dllinject.dll"    // located in same directory
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 代码注入使注入的应用程序崩溃 的相关文章

  • 使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

    我正在尝试为线程构建块构建一些测试 不幸的是 我无法配置 tbb 库 链接器找不到库 tbb 我尝试在 bin 目录中运行脚本 但这没有帮助 我什至尝试将库文件移动到 usr local lib 但这又失败了 任何的意见都将会有帮助 确定您
  • 删除文件的最后 10 个字符

    我想删除文件的最后 10 个字符 说一个字符串 hello i am a c learner 是文件内的数据 我只是希望该文件是 hello i am a 文件的最后 10 个字符 即字符串 c learner 应在文件内消除 解决方案 将
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • WPF 数据绑定到复合类模式?

    我是第一次尝试 WPF 并且正在努力解决如何将控件绑定到使用其他对象的组合构建的类 例如 如果我有一个由两个单独的类组成的类 Comp 为了清楚起见 请注意省略的各种元素 class One int first int second cla
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • 如何在 Android 中使用 C# 生成的 RSA 公钥?

    我想在无法假定 HTTPS 可用的情况下确保 Android 应用程序和 C ASP NET 服务器之间的消息隐私 我想使用 RSA 来加密 Android 设备首次联系服务器时传输的对称密钥 RSA密钥对已在服务器上生成 私钥保存在服务器
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置

随机推荐

  • 验证错误:向后分支上存在未初始化的对象/JVM 规范 4.10.2.4

    The JVM 规范 4 10 2 4 版本 7 最后一段 http docs oracle com javase specs jvms se7 html jvms 4 html jvms 4 10 2 4 says 如果未初始化对象的特殊
  • 更改 EditText setError 可绘制重力

    对于将要填充 RTL 文本的 EditText 有没有办法改变错误可绘制对象 当然还有弹出窗口 的重力 这是一个常规错误可绘制的示例 因此 由于输入的文本是 RTL 我希望弹出窗口显示在 EditText 的左侧 我尝试应用自定义绘图 但是
  • JavaFX 在列表视图中显示字符串附近的图像[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我想在列表视图中的字符串附近显示一条消息我尝试查找它但我不太理解它我从网站上尝试了这个http docs oracle com javafx
  • 如何在 spring 中将图像转换为多部分文件

    我有一个图像文件并正在创建File具有该图像的对象 File file new File E Shared Data Images xyz jpg 上面的行正在创建一个file具有某种尺寸的物体 例如440272 我需要转换上面的image
  • 我使用 getifaddrs 得到错误的 IP 地址

    获取以太网指定IP地址的函数 char get ethernet ip const char ethernet char ip size t len struct ifaddrs ips int rc getifaddrs ips if r
  • 通过 mmap 文件进行 IPC:应该使用原子和/或易失性吗?

    我使用 mmap 文件在进程之间共享数据 代码是这样的 struct Shared int Data int file open file dat O RDWR Shared shared static cast
  • 在 Python 中利用蒙特卡洛预测收入

    我正在尝试在我的 Python 代码中实现蒙特卡罗模拟 这将帮助我确定实现与收入目标相关的各种阈值的几率 例如 我们每个财年达到 6 000 美元 7 000 美元或 8 000 美元的可能性有多大 我能够计算预期值 但还没有编写模拟代码
  • C中的浅拷贝和深拷贝

    我尝试用谷歌搜索这个 但结果只弹出面向对象的语言 根据我的理解 浅复制是复制结构的某些成员 所以可以说一个结构是 typedef struct node char ok int hi int yep struct node next nod
  • 如何避免在选项卡栏状态下堆叠导航历史记录

    选项卡 A 选项卡 B 选项卡 C 如下所示的状态 选项卡 a 选项卡 b 选项卡 c 我想关闭应用程序 就像在每个选项卡状态切换时没有导航历史记录一样 例如 我在选项卡 A 中 然后单击选项卡 B 然后从现在开始单击选项卡 C 如果用户按
  • 使用关联进行分页的 grails 中 Hibernate 查询的不同结果

    我有三个相互关联的班级 最初 我构建没有分页的查询 所有搜索结果都很好 但现在我需要分页并且不想打扰我的初始查询模式 有什么方法可以得到明显的结果 Class Department int id String name static has
  • 如何使用SwingWorker?

    朋友们 我正在开发一个java应用程序 这就是性能监控 在此基础上 我在一个类中获取值并在另一类中绘制图表 我想使用 Swingworker 交替执行这两堂课 ResultSet rs Connection conn null conn C
  • 如何让 Get-ADUser 在针对特定服务器时表现更好?

    我正在从域中的所有用户获取一系列属性 如果我不指定特定的域控制器 查询将在不到一秒的时间内返回有效结果 如果我指定目标控制器 即使在最近的域控制器上 结果也需要 18 秒才能返回 唯一的区别是我使用了目标服务器 Server serverN
  • 编号列表框

    我有一个已排序的列表框 需要显示每个项目的行号 在此演示中 我有一个带有 Name 字符串属性的 Person 类 列表框显示按姓名排序的人员列表 如何将行号添加到列表框的数据模板中 XAML
  • 使用 ASP.Net MVC 与 Web 表单相比的最大优势

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 使用其中一种相对于另一种有哪些优点 主要优点ASP net MVC are 启用对呈现的 HT
  • 使用 StringTemplate 中的参数调用 Java 函数?

    StringTemplate 允许程序员通过 getter 不带参数的函数 获取数据 我想知道是否可以使用字符串模板中的参数调用Java函数 有一个解决方法是滥用字典 这是一个实现 函数 的示例 用于限制列表中的项目数量 github 上的
  • 产生关键词附加值?

    仍在尝试找到在实际情况下我会在哪里使用 yield 关键字 我看到这个主题的帖子 C 中的yield关键字有什么用 https stackoverflow com questions 39476 what is the yield keyw
  • MVC3:从 HtmlHelper 对象获取视图路径的最佳方法是什么?

    我有一个 html 扩展方法来检索与视图位于同一文件夹中的文件的 URL Example Views Home Index cshtml Views Home Index js Views Home Index css 这是最好的方法吗 我
  • 触发自定义验证指令后,AngularJS ng-model 值丢失

    我创建了一个自定义验证指令并在表单中使用它 可以正常触发 但是触发验证后 发现model值就丢了 说我有 ng model project key 并在验证后 project key范围内不再存在 我认为我对 AngularJS 的理解是错
  • JPA 实体关系:删除时级联

    我正在使用 spring JPA 和 Hibernate 我得到了以下实体 Entity Table name Supplier public class Supplier Id Column name Supplier ID nullab
  • C++ 代码注入使注入的应用程序崩溃

    我试图将一个简单的可执行文件注入到我制作的另一个可执行文件中 不幸的是 每当我将代码注入到可执行文件中时 它都会说 simpleinjected exe 已停止工作 然后它就会关闭 我在用着CreateRemoteThread来注入代码 这