Hook任何软件,整体思路都是通过内存调试软件对软件运行时内存进行断点调试,找到想要hook的内存地址,转为可以通过程序主dll可以获得的相对地址,然后再此处插入自己的恶意汇编代码,如果代码比较复杂,还需要编写寄存器保护逻辑,避免自己的恶意代码修改了寄存器中的值后,程序正常的逻辑无法运行。
前言
在上一篇文章「微信Hook实战记录 1:找到个人信息」中,介绍了如何使用OD与CE来找到微信中存放个人信息的内存位置,本篇文章尝试通过C++编写一个简单的内存注入工具,将我们自己的恶意dll注入到微信的内存中。
本文记录了大量细节,完全可以模仿复现相同的效果。
内存注入工具的编写
打开 Visual Studio 2019(下载的时候勾选 C++ 桌面支持,6.9G左右),选择创建新项目

选择创建 Windows 桌面向导

然后创建就可以了,这里创面项目名为 Project1
创建完后,VS 会为我们创建一个默认的界面,我们在 解决方案 -> 源文件 中找到 Project1.cpp,这个文件就是我们要写逻辑的主要界面

将其中多余的代码删除,就留下如下代码
// Project1.cpp : 定义应用程序的入口点。
//
#include "framework.h"
#include "Project1.h"
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
return 0;
}
wWinMain 是界面程序的入口,所有不必删除
接着将 解决方案 --> 资源文件 中的内容删除,这是 VS 默认创建好的,删除后,自己新建一个资源文件

选择 Dialog,即弹出框

调整一下创建出的按钮位置以及整体大小

要设置按钮与整体的属性,如按钮要设置其内容与ID,而整体Dialog也要设置一下其ID,可以右键点击 --> 属性


其他控制以相同的方式去设置,设置后后,就可以写代码了
首先修改一下 Project1.h 中的内容,如下
#pragma once
#include "resource1.h"
具体内容要看你VS为你生成了什么,前面我们通过图像界面操作后,VS会生成的相应的头文件,这里我生成了 resource1.h 的头文件,其内容如下:
//{
{NO_DEPENDENCIES}}
// Microsoft Visual C++ 生成的包含文件。
// 供 Project1.rc 使用
//
#define ID_MAIN 101
#define UN_DLL 1001
#define INJECT_DLL 1002
// Next default values for new objects
//
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 103
#define _APS_NEXT_COMMAND_VALUE 40001
#define _APS_NEXT_CONTROL_VALUE 1003
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
#endif
可以看出,其实就是我们设置的ID等内容
接着来修改一下 Project1.cpp, 其 wWinMain 方法修改如下:
#include "framework.h"
#include "Project1.h"
#include <TlHelp32.h>
#include <stdio.h>
// 微信进程名
#define WECHAT_PROCESS_NAME "WeChat.exe"
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
// hInstance 将句柄传递给弹窗
// 传入 Dialgo 主体ID
// DialogProc 回调函数,是一个指针,即该函数的地址
DialogBox(hInstance, MAK

本文介绍如何使用C++编写一个内存注入工具,将恶意DLL注入到微信进程中。通过Hook技术,详细讲解了获取微信PID、申请内存、注入DLL路径以及调用Kernel32.dll的LoadLibraryA/W方法实现DLL注入的步骤。最后,讨论了恶意DLL可能实现的功能,如监控聊天和自动操作。
最低0.47元/天 解锁文章
674

被折叠的 条评论
为什么被折叠?



