找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 7117|回复: 9

另类手段挂起进程

 火... [复制链接]

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2010-7-31 11:33:19 | 显示全部楼层 |阅读模式
本帖最后由 Tesla.Angela 于 2010-7-31 11:43 编辑

用ZwSuspendProcess挂起进程大家都会,其实用ntdll.dll导出的几个Dbg函数也是可以变相挂起进程的。废话不说,直接上码:

  1. Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
  2. Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
  3. Private Declare Function DbgUiConnectToDbg Lib "ntdll" () As Long
  4. Private Declare Function DbgUiDebugActiveProcess Lib "ntdll" (ByVal ProcessHandle As Long) As Long
  5. Private Declare Function DbgUiStopDebugging Lib "ntdll" (ByVal ProcessHandle As Long) As Long
  6. Private Function SuspendProcess(ByVal hProcess As Long) As Long
  7.     SuspendProcess = DbgUiDebugActiveProcess(hProcess)
  8. End Function
  9. Private Function ResumeProcess(ByVal hProcess As Long) As Long
  10.     ResumeProcess = DbgUiStopDebugging(hProcess)
  11. End Function
  12. Private Sub Command1_Click()
  13.     hProcess = OpenProcess(2035711, 0, CLng(Text1.Text))
  14.     SuspendProcess hProcess
  15.     CloseHandle hProcess
  16. End Sub
  17. Private Sub Command2_Click()
  18.     hProcess = OpenProcess(2035711, 0, CLng(Text1.Text))
  19.     ResumeProcess hProcess
  20.     CloseHandle hProcess
  21. End Sub
  22. Private Sub Form_Load()
  23.     Call EnablePrivilege(SE_DEBUG)
  24.     DbgUiConnectToDbg
  25. End Sub
复制代码

这个想法不是我提出来的,只是由我具体实现而已。

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2010-7-31 11:47:21 | 显示全部楼层
用户态下操作进程肯定要句柄啦!

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
 楼主| 发表于 2010-7-31 12:03:36 | 显示全部楼层
拿瑞星测试,发现此函数使用了ZwProtectVirtualMemory,没有使用ZwSuspendProcess和ZwDebugActiveProcess,只要杀软没有挂钩ZwDuplicateObject和ZwProtectVirtualMemory,就能成功挂起进程。

9

主题

210

回帖

0

精华

初来乍到

积分
904
发表于 2010-7-31 12:40:04 | 显示全部楼层
可以挂起360么?!呵呵··

4

主题

28

回帖

0

精华

铜牌会员

积分
199
QQ
发表于 2010-7-31 15:52:29 | 显示全部楼层
话说好久没来了,收藏下
上帝一样掷骰子!

2

主题

12

回帖

0

精华

初来乍到

积分
27
发表于 2010-8-3 11:41:26 | 显示全部楼层
的确很另类!学习了。
谢谢楼主。
cf聊天室5.5中文版 www.xsdownload.info

6

主题

196

回帖

0

精华

铜牌会员

菜鸟

积分
52
发表于 2010-8-3 13:43:42 | 显示全部楼层
让我们一起Hook本进程的ntdll!DbgBreakPoint吧.

评分

参与人数 1水晶币 +2 +39 收起 理由
Tesla.Angela + 2 + 39 好主意!我去试试!

查看全部评分

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

论坛牛人贡献奖关注奖最佳版主进步奖人气王疯狂作品奖精英奖赞助论坛勋章乐于助人勋章

QQ
发表于 2010-8-3 14:12:51 | 显示全部楼层
........是为了防止被下Debug断点吗?
我就是嗷嗷叫的老马了......

6

主题

196

回帖

0

精华

铜牌会员

菜鸟

积分
52
发表于 2010-8-3 14:45:38 | 显示全部楼层
还有一种办法:从本进程的ntdll!DbgBreakPoint为开始,到ntdll!DbgBreakPoint+0x10为结束(ntdll!DbgBreakPoint To ntdll!RtlpBreakWithStatusInstruction),搜索字节0xCC(int 3),经检测,出现0xCC字节的只有int 3这个指令,所以可以把这个范围内的所有0xCC(int 3)改成0x90(nop).把这些引发调试断点的int 3全部nop掉,理论上也是可以的.(基于Xp Sp1-Sp3的ntdll)

0

主题

34

回帖

0

精华

铜牌会员

积分
44
发表于 2010-8-3 20:30:17 | 显示全部楼层
楼上的够XX!······
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表