如何用C++实现 向进程注入dll并传参(也就是程序和dll间通信) 或 不注入dll直接向进程调用汇编代码
注:我用的是VS2019,向x86,32-bit程序注入
如何用C++实现 向进程注入dll并传参(也就是程序和dll间通信) 或 不注入dll直接向进程调用汇编代码,求指导
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- MarkHan_ 2023-02-23 20:05关注
向进程注入dll并传参的实现步骤如下:
- 创建dll文件,编写对应的代码,并将dll编译成x86,32-bit格式。
- 创建主程序,编写代码并将其编译成x86,32-bit格式。
- 在主程序中调用Windows API函数LoadLibrary,加载dll文件。
- 在主程序中调用Windows API函数GetProcAddress,获取dll中需要调用的函数的地址。
- 在主程序中调用dll中的函数,并传递参数。
下面是一个示例代码:
#include <windows.h> #include <iostream> using namespace std; typedef void(*DLL_FUNCTION)(int); int main() { // 加载dll HMODULE hDll = LoadLibrary("dllname.dll"); if (hDll == NULL) { cout << "LoadLibrary failed" << endl; return -1; } // 获取dll中的函数地址 DLL_FUNCTION pFunction = (DLL_FUNCTION)GetProcAddress(hDll, "functionname"); if (pFunction == NULL) { cout << "GetProcAddress failed" << endl; return -1; } // 调用dll中的函数,并传递参数 pFunction(123); // 释放dll FreeLibrary(hDll); return 0; }
不注入dll直接向进程调用汇编代码的实现步骤如下:
- 创建主程序,编写代码并将其编译成x86,32-bit格式。
- 在主程序中将汇编代码作为字符串嵌入到代码中。
- 在主程序中将字符串中的汇编代码转换为二进制代码。
- 在主程序中分配一块内存,将二进制代码复制到该内存中。
- 在主程序中调用Windows API函数VirtualProtect,将内存设置为可执行状态。
- 在主程序中调用内存中的代码,并传递参数。
- 在主程序中调用Windows API函数VirtualFree,释放内存。
解决 无用评论 打赏 举报
悬赏问题
- ¥15 有偿四位数,节约算法和扫描算法
- ¥15 VUE项目怎么运行,系统打不开
- ¥50 pointpillars等目标检测算法怎么融合注意力机制
- ¥15 关于超局变量获取查询的问题
- ¥20 Vs code Mac系统 PHP Debug调试环境配置
- ¥60 大一项目课,微信小程序
- ¥15 求视频摘要youtube和ovp数据集
- ¥15 在启动roslaunch时出现如下问题
- ¥15 汇编语言实现加减法计算器的功能
- ¥20 关于多单片机模块化的一些问题