C++远程线程注入Dll模块代码,全系统通用,超简单。

//返回值 > 0 为错误代码,自己方便预览,参数1为进程PID,参数2为dll模块全路径
int 远程线程注入(int pid, const char* _fullPath)
{
        //打开进程获取操作句柄
        HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid);
        if (hProc == NULL)
                return 1;
        //获取dll路径长度 +1是因为strlen函数 返回长度是不带终止符的 \0
        size_t dllSize = strlen(_fullPath) + 1;
        //远程申请内存空间,用于存放dll路径字符串
        LPVOID adr = VirtualAllocEx(hProc, NULL, dllSize, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
        if (adr == NULL)
                return 2;
        //写入路径字符串
        if (!WriteProcessMemory(hProc, adr, _fullPath, dllSize, NULL))
                return 3;
        //创建远程线程,直接启动LoadLibraryA的地址,传入我们申请的字符串地址
        HANDLE tProc = CreateRemoteThread(hProc, NULL, 0, (LPTHREAD_START_ROUTINE)&LoadLibraryA, adr, 0, NULL);
        if (tProc)
        {
                // 等待远线程结束。
                WaitForSingleObject(tProc, INFINITE);
                //关闭线程句柄
                CloseHandle(tProc);
                //注入成功
                MessageBoxA(NULL, "注入成功", "提示", MB_ICONASTERISK);
        }
        else
                return 4;
        //释放远程字符串内存
        VirtualFreeEx(hProc, adr, 0, MEM_RELEASE);
        //关闭操作句柄
        CloseHandle(hProc);
        return 0;
}
int main(){
        //直接注入即可,x86 64 通用,根据自身项目变动
        int error = 远程线程注入(进程PID, dll模块全路径)
        if(error > 0)
                //注入失败
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值