谁有可以将DLL插入到系统EXE文件的代码 目前网上流传的代码都是可以插入到 普通EXE文件的 几乎都不可以插入到系统EXE文件比如我想插入到SVCHOST.EXE 就做不到,而普通的计算器文件 cacl.exe就能插入。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一般都是通过挂钩消息来注入的吧,而SVCHOST等没有消息循环,因此不能用这种方法;可以用注册表注入法。 可以用注册表注入法。=================注册表注入好像只对GUI程序有效吧 挂钩消息需要有消息循环的进程,SVCHOST.EXE 没有消息循环 upps:楼主注入进程想干啥? 我看了一下注册表法这种方法虽然可以加载 但是不能运行dll里面的内容load不符合啊~! 你要将代码注入EXE?首先你得知道目标PE节之间有多少空余空间?不过这些空间长度不固定不好掌握,一般都是通过内存注入。一个思路 HANDLE hRemoteProcess= NULL;hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwRemoteProcessId );// 权限是这样的应该是最高了把 还要提升你程序的权限 HANDLE hToken; TOKEN_PRIVILEGES tp; OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken); LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid); tp.PrivilegeCount = 1; tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tp, NULL, NULL, NULL); BOOL EnabledDebugPrivilege() { // 兄台的代码和 我原来的代码是一样的 HANDLE hToken; TOKEN_PRIVILEGES tkp; if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return false; LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); //SeDebugPrivilege-->SE_SHUTDOWN_NAME 改成这样也不行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; } 你要将代码注入EXE? 首先你得知道目标PE节之间有多少空余空间? 不过这些空间长度不固定不好掌握,一般都是通过内存注入。 一个思路============注入EXE应该和PE节没有太多关系,这里的问题主要是我们远程注入的方法多是通过消息挂钩来处理的,但是一些系统后台程序没有消息队列,本身也不接受消息,所以无法注入,基本上,这个很难实现 smss进程你就注入不了,因为它根本不就调用user23,gdi32,kernel32 HINSTANCE calldll; calldll=LoadLibrary("../hello/Debug/hello.dll"); //hello.dll为你要加入到exe的dll文件,引号里面是他的路径 if (NULL==calldll) { MessageBox("load dll failed!"); // return FALSE; } typedef void(_stdcall *pFunShowDlg)(CString); pFunShowDlg pShowDlg; pShowDlg=(pFunShowDlg)GetProcAddress(calldll,"ShowDlg");//ShowDlg是dll提供的方法 if (NULL==pShowDlg) { MessageBox("Function load failed!"); // return FALSE; } pShowDlg; FreeLibrary(calldll); 关于QQ的问题,大侠们救命啊!!! 程序运行间隙性随机崩溃 如何才能知道SQL数据库的连接是否成功关闭? 【非用MFC吗???】做一个有界面的程序 我又来了,c/c++编译高手请发言,关于c/c++双语言编译问题(灌水一样有分) 用VC可以编出在DOS下用的程序吗?请各位高手不吝赐教!!! 提问,关于拆分窗体?! 关于传递多个recordset的问题 (特急*****) 为了google...... 哪里有《COM原理与应用》下载呀! 征求一下大家的意见 二进制结构体文件写入问题
=================
注册表注入好像只对GUI程序有效吧
up
ps:楼主注入进程想干啥?
首先你得知道目标PE节之间有多少空余空间?
不过这些空间长度不固定不好掌握,一般都是通过内存注入。
一个思路
hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwRemoteProcessId );
// 权限是这样的应该是最高了把
HANDLE hToken;
TOKEN_PRIVILEGES tp; OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, &hToken);
LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &tp.Privileges[0].Luid);
tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken, FALSE, &tp, NULL, NULL, NULL);
{ // 兄台的代码和 我原来的代码是一样的
HANDLE hToken;
TOKEN_PRIVILEGES tkp; if (!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken))
return false; LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid); //SeDebugPrivilege-->SE_SHUTDOWN_NAME 改成这样也不行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;
}
首先你得知道目标PE节之间有多少空余空间?
不过这些空间长度不固定不好掌握,一般都是通过内存注入。
一个思路
============
注入EXE应该和PE节没有太多关系,这里的问题主要是我们远程注入的方法多是通过消息挂钩来处理的,但是一些系统后台程序没有消息队列,本身也不接受消息,所以无法注入,基本上,这个很难实现
calldll=LoadLibrary("../hello/Debug/hello.dll"); //hello.dll为你要加入到exe的dll文件,引号里面是他的路径
if (NULL==calldll)
{
MessageBox("load dll failed!");
// return FALSE;
}
typedef void(_stdcall *pFunShowDlg)(CString);
pFunShowDlg pShowDlg;
pShowDlg=(pFunShowDlg)GetProcAddress(calldll,"ShowDlg");//ShowDlg是dll提供的方法
if (NULL==pShowDlg)
{
MessageBox("Function load failed!");
// return FALSE;
}
pShowDlg;
FreeLibrary(calldll);