C++代码注入使注入的应用程序崩溃
C++ Code Injection crashes injected application
我正试图将一个简单的可执行文件注入我制作的另一个可执行文件中,不幸的是,每当我将代码注入可执行文件时,它都会说"simpleinjected.exe已停止工作",然后关闭。我正在使用CreateRemoteThread
来注入代码。这就是我迄今为止所做的。
Injector.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;
}
Simpleinjected.exe//要注入的文件
#include <stdio.h>
int main()
{
printf("Hello");
return 0;
}
executable.exe//被注入simple-injected 的可执行文件
#include <windows.h>
int main()
{
MessageBox(NULL, "Injected successfully", "Code Injection", MB_OK);
return 0;
}
消息未显示,simpleinjected.exe
崩溃。崩溃表明代码被插入,但我不明白为什么它会崩溃。
当使用DLL和上面相同的技术时,DLL在"simpleinjected.exe"中执行,但在注入Firefox时不起作用。dll代码如下。它在自定义应用程序中执行,但不会在Firefox中执行,即使它已成功注入。
dllinject.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
相关文章:
- 试图在visual studio上用C++创建一个桌面应用程序
- FFmpeg:制作一个应用程序比直接使用ffmepg更好吗
- 在C应用程序中运行C++(带有STL)函数
- 使用VerQueryValue检索应用程序的文件描述
- Qt C++静态thread_local QNetworkAccessManager是线程应用程序的好选择吗
- 使用调试/崩溃报告将应用程序部署到客户端
- C++控制台应用程序阻止退出
- 码头化的C++应用程序是否向后兼容早期的内核版本
- 将应用程序从32位移植到64位时出现问题
- 该代码注入第三方Qt应用程序并执行一些方法来获取Qt应用程序信息
- 使用注入的DLL从外部应用程序中渲染OpenGL场景
- 从注入的dll调用BeginPaint时失败,即使在目标应用程序中调用了EndPaint之后也是如此
- 是否可以从外部进程注入和执行应用程序
- 如何执行注入到进程中的应用程序
- C++代码注入使注入的应用程序崩溃
- 阻止向特定应用程序注入任何内存或DLL文件
- 向WPF应用程序消息泵注入消息
- 在多线程应用程序中为注入的mprotect调用切换标志
- 在 c# 接口应用程序之间进行通信并注入到另一个进程 dll
- 注入到Java应用程序中