如何把DLL注入到 进程 SVCHOST.EXE 中

tianhuo_soft 2008-09-24 10:54:09
如何把DLL注入到 进程 SVCHOST.EXE 中
目前我的程序只能做到将DLL文件注入到普通的进程中,不能注入到系统进程中
例如 explorer.exe lsass.exe svchost.exe 都不可以

我想把dll文件注入到系统进程中,并且运行DLL中的代码

谢谢

zhq_0_0_0_1@163.com

分不够我在加
...全文
1152 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhsxsh 2008-09-26
  • 打赏
  • 举报
回复
UP
tianhuo_soft 2008-09-26
  • 打赏
  • 举报
回复
UP
Red_angelX 2008-09-25
  • 打赏
  • 举报
回复
很奇怪.我遇到了和你一样的问题 出在VirtualAllocEx上.. 关了360重启再看看.
Red_angelX 2008-09-25
  • 打赏
  • 举报
回复
如果代码注一般进程没问题的话,是不是装了什么杀软之类的防护工具,关掉防火墙杀软试试先
  • 打赏
  • 举报
回复
HANDLE WINAPI CreateRemoteThread(
HANDLE hProcess,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize,
LPTHREAD_START_ROUTINE lpStartAddress,//取这个参数稍微有点技巧
LPVOID lpParameter,
DWORD dwCreationFlags,
LPDWORD lpThreadId );
  • 打赏
  • 举报
回复
CreateRemoteThread
  • 打赏
  • 举报
回复
我也想知道
tianhuo_soft 2008-09-25
  • 打赏
  • 举报
回复
我在N太不同环境的机器试验过

吹泡泡的小猫 2008-09-24
  • 打赏
  • 举报
回复
svchost是个服务宿主程序,你只要按照服务的规范做一个这样的服务dll,然后在注册表中添加注册项,svchost就会自动加载你的dll,不需要注入
tianhuo_soft 2008-09-24
  • 打赏
  • 举报
回复

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;

return true;
}
Red_angelX 2008-09-24
  • 打赏
  • 举报
回复
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);

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;
}
Red_angelX 2008-09-24
  • 打赏
  • 举报
回复
不是打开进程的参数权限,而是你注入程序的权限,需要先提权到Debug级别以上
tianhuo_soft 2008-09-24
  • 打赏
  • 举报
回复
	HANDLE hRemoteProcess= NULL;
hRemoteProcess = OpenProcess( PROCESS_CREATE_THREAD | PROCESS_VM_OPERATION | PROCESS_VM_WRITE, FALSE, dwRemoteProcessId );
// 权限是这样的应该是最高了把
UDX协议 2008-09-24
  • 打赏
  • 举报
回复
主要是权限问题 。
CreateRemotethread,注意一定要提升权限。

另外一种方法是你做一个服务,在服务中再去注入,因为本身你是服务程序和其他的服务是同一级别。
tianhuo_soft 2008-09-24
  • 打赏
  • 举报
回复
那应该怎么弄呢
Red_angelX 2008-09-24
  • 打赏
  • 举报
回复
CreateRemotethread可以
你用消息钩子的话系统进程是没有消息的当然不行了.
清钟沁桐 2008-09-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 tianhuo_soft 的回复:]
我看一下 windwos 核心编程 里面是这样解释的


如果O p e n P r o c e s s返回N U L L,该应用程序就不是在允许它打开目标进程句柄的安全环境下
运行。有些进程,如Wi n L o g o n、S v c H o s t和C s r s s,是在本地系统帐户下运行的,这个帐户是已
经登录的用户不能改变的。如果你有权并且激活调试安全优先级,那么就能够打开这些进程的
句柄。

但是我的handle可以返回句柄,不管打开什么进程都可以返回句柄

我…
[/Quote]
这样是不是意味着需要在系统登录前进行注入?
scq2099yt 2008-09-24
  • 打赏
  • 举报
回复
up
tianhuo_soft 2008-09-24
  • 打赏
  • 举报
回复
UP
zoulie 2008-09-24
  • 打赏
  • 举报
回复
怎么还是这个帖子?贴代码吧
加载更多回复(5)

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧