首页
社区
课程
招聘
[求助]远程线程注入
发表于: 2014-3-16 13:15 4341

[求助]远程线程注入

2014-3-16 13:15
4341
下面这段代码为什么要写入的函数没有执行?


#include "stdafx.h"
#include <stdio.h>


//要写入的函数
int KeyboardProc()  
{  
        MessageBox(NULL,"  执行! ",NULL,NULL);
        return 0;
}  

//远程创建线程函数
int InfusionFunc(DWORD dwProcId,LPVOID mFunc)  
{ 
	HANDLE hProcess;//远程句柄 
	LPVOID mFuncAddr;//申请函数内存地址 
	HANDLE hThread; //线程句柄 

	//打开被注入的进程句柄 
	hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,dwProcId); 
	if(!hProcess)
	{
			MessageBox(NULL,"打开进程失败",NULL,NULL);
	}
	//申请内存 
	mFuncAddr = VirtualAllocEx(hProcess,NULL,20000,MEM_COMMIT,PAGE_EXECUTE_READWRITE); 
 
	//写内存 
	WriteProcessMemory(hProcess,mFuncAddr,mFunc,20000, 0); 

	//创建远程线程 
	hThread = CreateRemoteThread(hProcess,NULL,0,(LPTHREAD_START_ROUTINE)mFuncAddr,0,0,0); 
		if(!hThread)
	{
			MessageBox(NULL,"创建远程线程失败",NULL,NULL);
	}
	WaitForSingleObject(hThread, INFINITE); //等待线程结束 
	//释放申请有内存 
	VirtualFreeEx(hProcess,mFuncAddr,128,MEM_RELEASE); 

	//释放远程句柄 
	CloseHandle(hThread); 
	CloseHandle(hProcess); 
	return 0;
}

//主函数
int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{

	HWND hwnd=::FindWindow(NULL,"计算器");
	if(!hwnd)
	{
		MessageBox(NULL,"打开计算器失败",NULL,NULL);
		return 0;
	}
	
	DWORD Tid,Pid;
	Tid=GetWindowThreadProcessId(hwnd,&Pid);

	InfusionFunc(Pid,KeyboardProc);   //调用线程创建函数

	return 0;
}




[招生]系统0day安全班,企业级设备固件漏洞挖掘,Linux平台漏洞挖掘!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 185
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
因为你使用的静态链接。
2014-3-16 15:38
0
雪    币: 73
活跃值: (923)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼主,你只是把函数地址地址写到了计算器的内存,但是函数对应的代码仍然在你主进程的地址空间。你可以调试下,跳转到的地址及其以后的内存,要么是无效的,要么全部是00
2014-3-16 16:58
0
雪    币: 73
活跃值: (923)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼主想要msgbox弹出来,可以参考这里http://blog.163.com/lhc__721721/blog/static/639133252010622359175/

不过,你的函数里面肯定不止这个msgbox,万一有其他的代码怎么办?只能把整个函数拷贝过去哦!
2014-3-16 17:11
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
WriteProcessMemory这个函数不是把整个函数拷贝进去吗?
2014-3-17 15:29
0
雪    币: 73
活跃值: (923)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
拷贝的是函数的地址!
2014-3-18 18:02
0
游客
登录 | 注册 方可回帖
返回
// // 统计代码