vc实现无dll远程线程注入

    最近看了些大虾的文章,蛮有感触的,在看到远程dll后没想到还有无dll的线程函数注入,呵呵,有意思啊,我自己也写了一个,很简单,messagebox的注入.

    了解dll注入的一定知道,dll内的内容是要写到目标进程内存的,那么我们也推知我们要注入的线程函数也是一定要写入目标进程内存的,包括函数内要用到的数据也是一样,我们可以把要用到的数据写到一个结构体里即可.还有要对我们在函数里用到的api进行定义,其他的和dll注入没什么太大差别.下面看代码:

#include<stdio.h>
#include"windows.h"
typedef struct{
 DWORD address;
 char a[10];
}info;
typedef int (_stdcall *msgbox)(HWND, LPCTSTR, LPCTSTR, UINT);
DWORD WINAPI t(LPVOID p){
info *p1=(info*)p;
msgbox m=(msgbox)p1->address;
m(0,p1->a,p1->a,0);
return 0;
}
main()
{
 HANDLE ph=::OpenProcess(PROCESS_ALL_ACCESS,false,5388);
 void *s;
 s=::VirtualAllocEx(ph,0,1024*4,MEM_COMMIT,PAGE_READWRITE);
 ::WriteProcessMemory(ph,s,t,1024*4,0);
 info i;
 ZeroMemory(&i,sizeof(i));
 ::strcpy(i.a,"a");
 HINSTANCE m=::LoadLibrary("user32.dll");
 i.address=(DWORD)::GetProcAddress(m,"MessageBoxA");
 info *s1;
 s1=(info *)::VirtualAllocEx(ph,0,sizeof(info),MEM_COMMIT,PAGE_READWRITE);
 ::WriteProcessMemory(ph,s1,&i,sizeof(info),0);
 HANDLE hrt=::CreateRemoteThread(ph,0,0,(LPTHREAD_START_ROUTINE)s,s1,0,0);
}

代码也不长,我想明白dll注入原理的理解这个也不难,我只是做了个大概,说了下思路,如有疏漏之处还望高手见笑.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值