找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 7002|回复: 6

【紫水晶首发】VB小子玩转驱动程序(7):枚举线程活动链

 火.. [复制链接]

6

主题

196

回帖

0

精华

铜牌会员

菜鸟

积分
52
发表于 2010-1-25 20:07:02 | 显示全部楼层 |阅读模式
本帖最后由 xiaoly99 于 2014-7-10 20:41 编辑


VB小子玩转驱动程序(7):枚举线程活动链


作者:0.0


  
1.VB代码

  1. Public Sub EnumThread(ByVal EProcess As Long)
  2. Dim Thread(4) As Long
  3. frmMain.lstThread.Clear
  4. Thread(2) = ReadMemory(EProcess + &H190)
  5. Thread(3) = Thread(2)
  6. Do
  7. Thread(0) = Thread(2) - &H22C
  8. Thread(1) = ReadMemory(Thread(2) + &H1F4 + 4 - &H234)
  9. If Thread(1) Then
  10. frmMain.lstThread.AddItem Thread(1) & String(4 - Len(Trim(Thread(1))), " ") & "/" & Hex(Thread(0))
  11. Thread(4) = Thread(4) + 1
  12. End If
  13. Thread(2) = ReadMemory(Thread(2))
  14. Loop While Thread(2) And (Thread(2) <> Thread(3))
  15. frmMain.rmdModule.Caption = "路径/共" & Thread(4) & "个线程"
  16. End Sub
复制代码
摘自IceFreak ifThread.bas
2.枚举线程(ETHREAD)
Thread(2) = ReadMemory(EProcess + &H190) 这句代码获得进程活动链链表头
lkd> dt _EPROCESS
nt!_EPROCESS
   +0x000 Pcb              : _KPROCESS
   .......................................
   
+0x190 ThreadListHead   : _LIST_ENTRY                                          知识点1
--------------------------------------------------------------------------------------
Thread(0) = Thread(2) - &H22C 获得EThread

Thread(1) = ReadMemory(Thread(2) + &H1F4 + 4 - &H234) 获得TID
--------------------------------------------------------------------------------------
Thread(2) = ReadMemory(Thread(2)) 获得下一个EThread
lkd> dt _LIST_ENTRY
nt!_LIST_ENTRY
   +0x000 Flink            : Ptr32 _LIST_ENTRY
   +0x004 Blink            : Ptr32 _LIST_ENTRY                                             
知识点2
--------------------------------------------------------------------------------------
Loop While Thread(2) And
(Thread(2) <> Thread(3)) 校验
这句话的意思是如果Thread(2)是True和Thread(2)不是Thread(3)

为什么要判断Thread(2)是不是True呢?因为在VB中,除了0和负数之外的数值都可以说等于True
而Thread(2)是链表基址,Thread(3)是下一个EThread
这两个条件都为真就继续执行循环                                                                知识点3
--------------------------------------------------------------------------------------

IceFreak6

IceFreak6
IceFreak.rar (205.44 KB, 下载次数: 6929) 注:不要使用结束进程,还不稳定,结束线程还行

评分

参与人数 1水晶币 +40 收起 理由
HoviDelphic + 40

查看全部评分

38

主题

199

回帖

2

精华

钻石会员

积分
3408
发表于 2010-1-25 21:13:33 | 显示全部楼层
你的东西不能在我的机子上跑
如果附件无法下载,请点击这里

6

主题

196

回帖

0

精华

铜牌会员

菜鸟

积分
52
 楼主| 发表于 2010-1-25 21:16:58 | 显示全部楼层
你的东西不能在我的机子上跑
HoviDelphic 发表于 2010-1-25 21:13

试试看 源代码放上去了

90

主题

473

回帖

2

精华

钻石会员

积分
3261
发表于 2010-1-25 22:41:02 | 显示全部楼层
有没有这方面基础教材?
头越看越大~~~~

38

主题

199

回帖

2

精华

钻石会员

积分
3408
发表于 2010-1-25 22:58:22 | 显示全部楼层
这已经是很基础的教程了
如果附件无法下载,请点击这里

9

主题

210

回帖

0

精华

初来乍到

积分
904
发表于 2010-1-26 11:03:36 | 显示全部楼层
ok100fen   头没大吧。。。。!

0

主题

12

回帖

0

精华

初来乍到

积分
5
发表于 2010-1-30 22:17:15 | 显示全部楼层
我也看得,越来越迷糊了!
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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