Odyssey
驱动小牛
驱动小牛
  • 注册日期2004-12-15
  • 最后登录2008-03-29
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望115点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
阅读:2664回复:18

如何从kernel mode创建user mode的进/线程?

楼主#
更多 发布于:2005-02-22 00:57
各位前辈,可以从kernel mode直接创建一个运行在user mode线/进程吗?类似Win32 Api的CreateProcess/CreateThread ?
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-02-22 09:13
可以试试用ZwCreateProcess/ZwCreateThread看看

NTSYSAPI
NTSTATUS
NTAPI
ZwCreateThread(

  OUT PHANDLE             ThreadHandle,
  IN ACCESS_MASK          DesiredAccess,
  IN POBJECT_ATTRIBUTES   ObjectAttributes OPTIONAL,
  IN HANDLE               ProcessHandle,
  OUT PCLIENT_ID          ClientId,
  IN PCONTEXT             ThreadContext,
  IN PINITIAL_TEB         InitialTeb,
  IN BOOLEAN              CreateSuspended );


NTSYSAPI
NTSTATUS
NTAPI
ZwCreateProcess(

  OUT PHANDLE           ProcessHandle,
  IN ACCESS_MASK        DesiredAccess,
  IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
  IN HANDLE             ParentProcess,
  IN BOOLEAN            InheritObjectTable,
  IN HANDLE             SectionHandle OPTIONAL,
  IN HANDLE             DebugPort OPTIONAL,
  IN HANDLE             ExceptionPort OPTIONAL );
在交流中学习。。。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-02-22 09:55
可以试试用ZwCreateProcess/ZwCreateThread看看

NTSYSAPI
NTSTATUS
NTAPI
ZwCreateThread(

  OUT PHANDLE             ThreadHandle,
  IN ACCESS_MASK          DesiredAccess,
  IN POBJECT_ATTRIBUTES   ObjectAttributes OPTIONAL,
  IN HANDLE               ProcessHandle,
  OUT PCLIENT_ID          ClientId,
  IN PCONTEXT             ThreadContext,
  IN PINITIAL_TEB         InitialTeb,
  IN BOOLEAN              CreateSuspended );


NTSYSAPI
NTSTATUS
NTAPI
ZwCreateProcess(

  OUT PHANDLE           ProcessHandle,
  IN ACCESS_MASK        DesiredAccess,
  IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
  IN HANDLE             ParentProcess,
  IN BOOLEAN            InheritObjectTable,
  IN HANDLE             SectionHandle OPTIONAL,
  IN HANDLE             DebugPort OPTIONAL,
  IN HANDLE             ExceptionPort OPTIONAL );
 

很奇怪ZwCreateProcess,ZwCreateProcessEx只不过是NtCreateProcess,NtCreateProcessEx的外包装,这四个函数均在ntoskrnl中,系统服务号分别为2f,30。为什么在内核中要这样无聊的重复,难道是为了接口兼容与稳定?
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
地板#
发布于:2005-02-22 15:52
[quote]可以试试用ZwCreateProcess/ZwCreateThread看看

NTSYSAPI
NTSTATUS
NTAPI
ZwCreateThread(

  OUT PHANDLE             ThreadHandle,
  IN ACCESS_MASK          DesiredAccess,
  IN POBJECT_ATTRIBUTES   ObjectAttributes OPTIONAL,
  IN HANDLE               ProcessHandle,
  OUT PCLIENT_ID          ClientId,
  IN PCONTEXT             ThreadContext,
  IN PINITIAL_TEB         InitialTeb,
  IN BOOLEAN              CreateSuspended );


NTSYSAPI
NTSTATUS
NTAPI
ZwCreateProcess(

  OUT PHANDLE           ProcessHandle,
  IN ACCESS_MASK        DesiredAccess,
  IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
  IN HANDLE             ParentProcess,
  IN BOOLEAN            InheritObjectTable,
  IN HANDLE             SectionHandle OPTIONAL,
  IN HANDLE             DebugPort OPTIONAL,
  IN HANDLE             ExceptionPort OPTIONAL );
 

很奇怪ZwCreateProcess,ZwCreateProcessEx只不过是NtCreateProcess,NtCreateProcessEx的外包装,这四个函数均在ntoskrnl中,系统服务号分别为2f,30。为什么在内核中要这样无聊的重复,难道是为了接口兼容与稳定? [/quote]
你觉得MS无聊吗???
你用系统里的函数根本是无法创建进程的,看看INSIDE WIN2000里的介绍吧.
至于驱动代用应用代码的方法,可以参考这里
http://www.driverdevelop.com/forum/html_86969.html?1109058718
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
Odyssey
驱动小牛
驱动小牛
  • 注册日期2004-12-15
  • 最后登录2008-03-29
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望115点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-02-23 03:03
刚才试了一下wowocock 大虾的alertdrv.sys,成功了。
我用osrloader加载的,要等一段时间才能激活对话框。

wowocock能把alertdrv.sys的源代码发一份给我吗?chongwu@msn.com
多谢!送分 20。
Odyssey
驱动小牛
驱动小牛
  • 注册日期2004-12-15
  • 最后登录2008-03-29
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望115点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-02-23 03:42
在DriverEntry里调用ZwCreateProcess(动态查找NTDLL.DLL)
导致蓝屏,代码是:
kd> !analyze -v

ACTIVE_EX_WORKER_THREAD_TERMINATION (e9)
An executive worker thread is being terminated without having gone through
the worker thread rundown code.  A stack trace should indicate the cause.
Arguments:
Arg1: 82fb7da8, The exiting ETHREAD.
Arg2: 00000000
Arg3: 00000000
Arg4: 00000000

不知道有没有大虾在kernel里调用ZwCreateProcess成功的?

bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-02-23 09:01
[quote][quote]可以试试用ZwCreateProcess/ZwCreateThread看看

NTSYSAPI
NTSTATUS
NTAPI
ZwCreateThread(

  OUT PHANDLE             ThreadHandle,
  IN ACCESS_MASK          DesiredAccess,
  IN POBJECT_ATTRIBUTES   ObjectAttributes OPTIONAL,
  IN HANDLE               ProcessHandle,
  OUT PCLIENT_ID          ClientId,
  IN PCONTEXT             ThreadContext,
  IN PINITIAL_TEB         InitialTeb,
  IN BOOLEAN              CreateSuspended );


NTSYSAPI
NTSTATUS
NTAPI
ZwCreateProcess(

  OUT PHANDLE           ProcessHandle,
  IN ACCESS_MASK        DesiredAccess,
  IN POBJECT_ATTRIBUTES ObjectAttributes OPTIONAL,
  IN HANDLE             ParentProcess,
  IN BOOLEAN            InheritObjectTable,
  IN HANDLE             SectionHandle OPTIONAL,
  IN HANDLE             DebugPort OPTIONAL,
  IN HANDLE             ExceptionPort OPTIONAL );
 

很奇怪ZwCreateProcess,ZwCreateProcessEx只不过是NtCreateProcess,NtCreateProcessEx的外包装,这四个函数均在ntoskrnl中,系统服务号分别为2f,30。为什么在内核中要这样无聊的重复,难道是为了接口兼容与稳定? [/quote]
你觉得MS无聊吗???
你用系统里的函数根本是无法创建进程的,看看INSIDE WIN2000里的介绍吧.
至于驱动代用应用代码的方法,可以参考这里
http://www.driverdevelop.com/forum/html_86969.html?1109058718 [/quote]
好书有门了,老大不来努力一把,看来老大对INSIDE WIN2000情有独钟,那么他的第四版最新版更好,站在巨人的肩膀上。。。
1000多页,25%新内容。。。
看<a href=\"http://www.driverdevelop.com/forum/html_86918.html?1109119645\" target=\"_blank\">http://www.driverdevelop.com/forum/html_86918.html?1109119645</a>
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
northpointstar
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2007-01-05
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-02-24 11:21
http://www.rootkit.com/newsread.php?newsid=259
很详细
freewindows
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
8楼#
发布于:2005-02-24 14:00
http://www.rootkit.com/newsread.php?newsid=259
很详细

对,我就是在这个例子上修改的....
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
Odyssey
驱动小牛
驱动小牛
  • 注册日期2004-12-15
  • 最后登录2008-03-29
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望115点
  • 贡献值0点
  • 好评度115点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-02-24 14:21
[quote]http://www.rootkit.com/newsread.php?newsid=259
很详细

对,我就是在这个例子上修改的.... [/quote]

那个后面的汇编看不太懂啊,wowocock能把你的代码发给我一份吗?
dalaoban
驱动牛犊
驱动牛犊
  • 注册日期2004-02-02
  • 最后登录2009-12-07
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-05-12 17:27
    谁解决了ring0下创建ring3进程的问题?能否给我发一份,送分20。  
    我的邮箱: panqz_1980@163.com,谢谢。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2005-05-13 08:55
   谁解决了ring0下创建ring3进程的问题?能否给我发一份,送分20。  
    我的邮箱: panqz_1980@163.com,谢谢。

已发给你
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
wywwwl
驱动大牛
驱动大牛
  • 注册日期2002-08-16
  • 最后登录2018-04-07
  • 粉丝1
  • 关注0
  • 积分-10分
  • 威望135点
  • 贡献值6点
  • 好评度76点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2005-05-13 12:56
[quote]    谁解决了ring0下创建ring3进程的问题?能否给我发一份,送分20。  
    我的邮箱: panqz_1980@163.com,谢谢。

已发给你 [/quote]

给我也来份 wywwwl@163.com
琢磨悟真知
fire2fire
驱动牛犊
驱动牛犊
  • 注册日期2004-03-04
  • 最后登录2013-04-07
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-05-14 22:16
能不能在Ring3进入Ring0后创建内核线程?
hzjdriver
驱动牛犊
驱动牛犊
  • 注册日期2004-04-27
  • 最后登录2018-12-09
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望54点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2005-05-15 12:53
给我也来份 boy1h@yahoo.com.cn
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2005-05-15 16:33
能不能在Ring3进入Ring0后创建内核线程?

这是最容易的呀,这里是讨论在Ring0 创建进程的
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
fire2fire
驱动牛犊
驱动牛犊
  • 注册日期2004-03-04
  • 最后登录2013-04-07
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2005-05-15 19:27
这是最容易的呀,这里是讨论在Ring0 创建进程的

是吗?能不能给个例子?谢谢~

这样岂不是可以使得进程“不死”?
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2005-05-16 09:19
这是最容易的呀,这里是讨论在Ring0 创建进程的

是吗?能不能给个例子?谢谢~

这样岂不是可以使得进程“不死”?
 

看这个
http://www.driverdevelop.com/forum/html_88451.html?1116206350
但是进程不是\"不死\"
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
EICAR
驱动牛犊
驱动牛犊
  • 注册日期2005-06-22
  • 最后登录2009-06-21
  • 粉丝0
  • 关注0
  • 积分38分
  • 威望6点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2005-06-28 13:46
好吧,俺改改,如何获得一个_ETHREAD呢?望不吝赐教
游客

返回顶部