weixin_45461329 2019-11-24 23:40 采纳率: 0%
浏览 638

C,C++,在pc微信进程注入dll

求大神帮忙看看,注入dll总是失败
感觉像是最后远程注入的时候错了。
微信这么提醒

图片说明

// Project1.cpp : 定义应用程序的入口点。
//

#include "stdafx.h"
#include "Project1.h"
#include <Windows.h>
#include "resource.h"
#include <TlHelp32.h>
#include<stdio.h>
#define WECHAT_PROCESS_NAME "WeChat.exe"
INT_PTR CALLBACK DialogProc(HWND Arg1, UINT Arg2, WPARAM Arg3, LPARAM Arg4);
VOID InjectDll();


int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
    _In_opt_ HINSTANCE hPrevInstance,
    _In_ LPWSTR    lpCmdLine,
    _In_ int       nCmdShow)

{
    DialogBox(hInstance, MAKEINTRESOURCE(ID_MAIN), NULL, &DialogProc);
    return 0;
}

INT_PTR CALLBACK DialogProc(
    HWND Arg1,
    UINT Arg2,
    WPARAM Arg3,
    LPARAM Arg4
)
{
    if (Arg2 == WM_INITDIALOG)
    {
        //MessageBox(NULL, "首次加载", "标题", 0);
    }
    if (Arg2 == WM_CLOSE) {
        EndDialog(Arg1, 0);
    }
    if (Arg2 == WM_COMMAND) {
        if (Arg3 == INJECT_DLL) {
            InjectDll();
        }
        if (Arg3 == UIN_DLL) {
        }
    }
    return FALSE;
}
DWORD ProcessNameFindPID(LPCSTR ProcessName) {

    HANDLE ProcessALL = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);
    PROCESSENTRY32 processInfo = { 0 };
    processInfo.dwSize = sizeof(PROCESSENTRY32);
    do
    {
        if (strcmp(ProcessName, processInfo.szExeFile) == 0) {
            return processInfo.th32ProcessID;
        }
    } while (Process32Next(ProcessALL, &processInfo));

    return 0;
}
VOID InjectDll() {
    CHAR pathStr[0x100] = { "D://wechatdell//reader//raeder//Debug//reader.dll" };
    DWORD PID = ProcessNameFindPID(WECHAT_PROCESS_NAME);
    if (PID == 0)
    {
        MessageBox(NULL, "没有找到微信进程或者微信没有启动", "错误", 0);
        return;
    }
    HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
    if (NULL == hProcess)

    {
        MessageBox(NULL, "进程打开失败,可能权限不足或者关闭了应用", "错误", 0);
        return;

    }
    LPVOID  dllAdd = VirtualAllocEx(hProcess, NULL, sizeof(pathStr), MEM_COMMIT, PAGE_READWRITE);
    if (NULL == dllAdd) {
        MessageBox(NULL, "内存分配失败", "错误", 0);
        return;
    }
    if (WriteProcessMemory(hProcess, dllAdd, pathStr, strlen(pathStr), NULL) == 0) {
        MessageBox(NULL, "路径写入失败", "错误", 0);
        return;
    }

    CHAR test[0x100] = { 0 };
    /*sprintf_s(test, "写入的地址:%p", dllAdd);
    OutputDebugString(test);
*/
    HMODULE k32 = GetModuleHandle("Kernel32.dll");
    LPVOID loadAdd = GetProcAddress(k32, "LcadLibraryA");
    /*  LoadLibraryW("test.dll");*/
    HANDLE exec = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)loadAdd, dllAdd, 0, NULL);
    if (NULL == exec)
    {
        MessageBox(NULL, "y远程注入失败", "错误", 0);
        return;
    }

}
  • 写回答

1条回答 默认 最新

  • zqbnqsdsmd 2019-11-25 12:50
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 这个电路是如何实现路灯控制器的,原理是什么,怎么求解灯亮起后熄灭的时间如图?
  • ¥15 matlab数字图像处理频率域滤波
  • ¥15 在abaqus做了二维正交切削模型,给刀具添加了超声振动条件后输出切削力为什么比普通切削增大这么多
  • ¥15 ELGamal和paillier计算效率谁快?
  • ¥15 file converter 转换格式失败 报错 Error marking filters as finished,如何解决?
  • ¥15 ubuntu系统下挂载磁盘上执行./提示权限不够
  • ¥15 Arcgis相交分析无法绘制一个或多个图形
  • ¥15 关于#r语言#的问题:差异分析前数据准备,报错Error in data[, sampleName1] : subscript out of bounds请问怎么解决呀以下是全部代码:
  • ¥15 seatunnel-web使用SQL组件时候后台报错,无法找到表格
  • ¥15 fpga自动售货机数码管(相关搜索:数字时钟)