首页
社区
课程
招聘
[求助]
发表于: 2018-3-22 11:41 2783

[求助]

2018-3-22 11:41
2783
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 782
活跃值: (3430)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
2
你这问题有点多。。
1.你函数调用的afxmessagebox,在目标进程未必存在,不要调用可能不存在的函数;
2.即使目标进程存在afxmessagebox,你本地的导入表和远程进程的导入表未必相同,需要根据目标导入表修复你的函数调用;
3.弹出信息的内容文本只存在你本地,目标进程是没有的,需要在远程进程空间写入内容;
4.即使写入了内容,函数调用的时候传递的文本指针也要根据你写入的内容进行修复。
DLL没有以上问题,上面提到的都在dll里
2018-3-22 14:05
0
雪    币: 775
活跃值: (2292)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
楼上正解
最后于 2018-3-22 14:13 被AperOdry编辑 ,原因:
2018-3-22 14:11
0
雪    币: 84
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4

其实我想写一个远程代码注入,找了一些源码包括在本站里找的源码,注入目标进程就崩溃,我是wind7-32系统,不知道问题出在哪里了


BOOL EnableDebugPrivilege()//获得进程权限
{
	HANDLE hToken;
	TOKEN_PRIVILEGES tkp;
	if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
		return(FALSE);
	LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tkp.Privileges[0].Luid);
	tkp.PrivilegeCount = 1;
	tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
	AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
	if (GetLastError() != ERROR_SUCCESS)
		return FALSE;

	return TRUE;
}

DWORD WINAPI lpDllName(LPVOID lParam)
{
	__asm{
		push eax
		push edx

		mov eax, 0x00FE60A4
		mov edx, 0x00E717F2
		push 0
		push 0
		push eax

		call edx

		pop edx
		pop eax
	}

	return 0;
}

void InjectToolclass::injectionProcess(DWORD *dwPId)
{


	if (!EnableDebugPrivilege())//获得权限
	{
		MessageBox(NULL, L"获得权限失败", L"", MB_OK);
	}

	HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,*dwPId);
	if (hProcess == NULL)
	{
		MessageBox(NULL, TEXT("打开指定进程失败"), NULL, MB_OK);
		return;
	}
	//进程分配内存
	LPVOID lpDllNameAddr = VirtualAllocEx(hProcess,NULL,4096,MEM_COMMIT,PAGE_READWRITE);
	if (lpDllNameAddr == NULL)
	{
		MessageBox(NULL, TEXT("指定进程中内存申请失败"), NULL, MB_OK);
		return;
	}

	BOOL bRet = WriteProcessMemory(hProcess,lpDllNameAddr,lpDllName,4096,NULL);
	
	if (!bRet)
	{
		MessageBox(NULL, TEXT("写入进程失败"), NULL, MB_OK);
		VirtualFreeEx(hProcess, lpDllNameAddr,4096,MEM_DECOMMIT);
		CloseHandle(hProcess);
		return;

	}

	HANDLE hRemote = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)lpDllNameAddr, NULL, 0, NULL);
	
	CloseHandle(hProcess);
	return;

}

2018-3-22 19:13
0
雪    币: 84
活跃值: (143)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
谢谢  问题解决了
2018-3-24 12:04
0
雪    币: 1795
活跃值: (63)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
1楼正解
2018-3-24 12:21
0
游客
登录 | 注册 方可回帖
返回
//