代码注入
0x00 原理简述
代码注入,也是一种注入技术,通过CreateRemoteThread,创建远程线程,线程函数可自写,传入参数要注意,如果有多个参数,需要定义一个结构用来存放参数。详细代码如下:
0x01 代码实现
本次注入CreateFile
1,定义一个结构体存放CreateFile参数,及函数地址。
typedef struct {
DWORD addr;
LPCTSTR lpFileName;
DWORD dwDesiredAccess;
DWORD dwShareMode;
LPSECURITY_ATTRIBUTES lpSecurityAttributes;
DWORD dwCreationDisposition;
DWORD dwFlagsAndAttributes;
HANDLE hTemplateFile;
}Point;2,远程注入的函数如下:
DWORD _stdcall hCreateFile(LPVOID lParam)
{
typedef HANDLE (WINAPI * PFN_CreateFile)(
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
Point *p=(Point *)lParam;
PFN_CreateFile pfnCreateFile;
pfnCreateFile =(PFN_CreateFile)p->addr;
pfnCreateFile(p->lpFileName,p->dwDesiredAccess,p->dwShareMode,p->lpSecurityAttributes,
p->dwCreationDisposition,p->dwFlagsAndAttributes,p->hTemplateFile);
return 0;
}3,获得CreateFile函数地址,定义注入函数hCreateFile的参数,其中LPCTSTR lpFileName这个参数是一个指向字符串的指针,所以我们要在目标进程里面分配一个空间,并写入路径字符串。
4,将hCreateFile函数地址和参数结构体对象地址写入目标进程,最后调用CreateRemoteThread().
0x02 完整代码
目标进程为crackme.exe,在D盘的根目录,创建一个test.txt.
0x03 运行结果
测试环境为win10 x64
在D盘根目录创建一个test.txt文档,不能删除,除非关闭掉目标进程。

Last updated
Was this helpful?