首页 > 软件 > 获取进程EPROCESS

获取进程EPROCESS

软件 2023-09-22

VB如何根据进程PID获得EPROCESS?

一、把下面代码放入一个模块中 Option Explicit Public Declare Function ZwQueryInformationProcess _ Lib "NTDLL.DLL" (ByVal ProcessHandle As Long, _ ByVal ProcessInformationClass As PROCESSINFOCLASS, _ ByVal ProcessInformation As Long, _ ByVal ProcessInformationLength As Long, _ ByRef ReturnLength As Long) As Long Pu

如何获取ProcessStartInfo启动进程执行已执行完毕

在编写工具程序以及系统管理程序的时候。常常需要获取某个进程的主窗口以及创建此进程的程序名。获取主窗口的目的是向窗口发送各种消息。获取启动进程的程序名可以控制对进程的操作。但是有些进程往往有多个主窗口。你要的是哪一个主窗口呢?如果你用过Outlook程序,你就会发现它有多个主窗口,一个窗口列出收件箱和其它文件夹。如果你打开e-mail,便会有另外一个窗口显示信息。它们都是没有父窗口(或者说宿主窗口)的主窗口。运行一下Spy程序,你甚至会发现它们的窗口类名都相同:rctrl_renwnd32。资源管理器(Explorer.exe)也有不止一个主窗口。如图一所示,资源管理器有两个主窗口。一般来讲,想

在内核中怎么遍历进程,寻找每个eprocess

如果你不懂驱动,还是先学学驱动怎么写吧。隐藏进程不一定就是断活动链,可能csrss里面的也被擦掉了,甚至直接抹pspCidTable。如果全部抹了,那是没办法恢复的,只有抹的人才可以了(如果他有备份的话,这个应该有的,否则会蓝屏)

易语言软件怎么设置开机自启和隐藏进程

  1. 程序集 窗口程序集1
  2. .程序集变量 返回链表值, 整数型
  3. .子程序 _按钮1_被单击
  4. 返回链表值 = 进程隐藏 (, )
  5. .如果 (返回链表值 = -1)
  6. 信息框 (“隐藏进程失败。”, 48, “信息提示”)
  7. .否则
  8. 信息框 (“隐藏进程成功。”, 64, “信息提示”)
  9. .如果结束
  10. .子程序 _按钮2_被单击
  11. 返回链表值 = 进程隐藏 (, 返回链表值)
  12. .如果 (返回链表值 = -1)
  13. 信息框 (“显示隐藏的进程失败。”, 48, “信息提示”)
  14. .否则
  15. 信息框 (“显示隐藏的进程成功。”, 64, “信息提示”)
  16. .如果结束
  17. .子程序 进程隐藏, 整数型, 公开, 通过断链方式隐藏进程(返回链表值,用于恢复该进程,失败返回-1)
  18. .参数 进程ID, 整数型, 可空, 目的进程ID (默认自进程ID)
  19. .参数 链表值, 整数型, 可空, 欲还原的进程链表地址值 如果隐藏进程请留空
  20. .局部变量 eprocess, 长整数型
  21. .局部变量 hand, 整数型
  22. .局部变量 temp, 字节集
  23. .局部变量 fw_, 长整数型
  24. .局部变量 bw_, 长整数型
  25. .局部变量 fw, 字节集
  26. .局部变量 bw, 字节集
  27. .局部变量 返回值, 整数型
  28. .如果真 (提升进程权限D () = 假)
  29. 返回 (-1)
  30. .如果真结束
  31. .如果 (是否为空 (进程ID))
  32. hand = _打开进程 (2075311, 0, _取自进程ID ())
  33. eprocess = 取进程EProcess (_取自进程ID ())
  34. _关闭对象 (hand)
  35. .否则
  36. eprocess = 取进程EProcess (进程ID)
  37. .如果结束
  38. .如果真 (eprocess = 0)
  39. 返回 (-1)
  40. .如果真结束
  41. temp = 读物理内存 (eprocess + 136, 4)
  42. .如果真 (temp = { })
  43. 返回 (-1)
  44. .如果真结束
  45. fw_ = 取字节集数据 (temp, 4, )
  46. fw = temp
  47. temp = 读物理内存 (eprocess + 140, 4)
  48. .如果真 (temp = { })
  49. 返回 (-1)
  50. .如果真结束
  51. bw_ = 取字节集数据 (temp, 4, )
  52. bw = temp
  53. 返回值 = 取字节集数据 (读物理内存 (bw_, 4), 3, )
  54. .如果 (是否为空 (链表值))
  55. .如果真 (写物理内存 (fw_ + 4, bw) = -1)
  56. 返回 (-1)
  57. .如果真结束
  58. .如果真 (写物理内存 (bw_, fw) = -1)
  59. 返回 (-1)
  60. .如果真结束
  61. .否则
  62. .如果真 (写物理内存 (fw_ + 4, 到字节集 (链表值)) = -1)
  63. 返回 (-1)
  64. .如果真结束
  65. .如果真 (写物理内存 (bw_, 到字节集 (链表值)) = -1)
  66. 返回 (-1)
  67. .如果真结束
  68. .如果结束
  69. 返回 (返回值)
  70. .子程序 提升进程权限D, 逻辑型, 公开, 成功返回真,把一个进程的权限提升到调试级权限
  71. .参数 进程ID, 整数型, 可空, 可空为提升当前进程
  72. .局部变量 进程句柄, 整数型
  73. .局部变量 令牌句柄, 整数型
  74. .局部变量 destLuid, ebw4ythr
  75. .局部变量 进程权限, ebyrt
  76. .局部变量 返回值, 逻辑型
  77. .如果真 (是否为空 (进程ID))
  78. 进程ID = _取自进程ID ()
  79. .如果真结束
  80. 进程句柄 = _打开进程 (2035711, 0, 进程ID)
  81. _打开令牌对象 (进程句柄, 983551, 令牌句柄)
  82. _取权限令牌 (0, “SeDebugPrivilege”, destLuid)
  83. 进程权限.sd5gtyv = 1
  84. 进程权限.sv45y = 2
  85. 进程权限.sr5ybcthf = destLuid.s5hyb5r
  86. 进程权限.iund6gvry = destLuid.xsd65byf
  87. 返回值 = _置进程权限 (令牌句柄, 假, 进程权限, 0, 0, 0)
  88. _关闭对象 (进程句柄)
  89. 返回 (返回值)
  90. .子程序 取进程EProcess, 长整数型, , 0为失败(进程隐藏)
  91. .参数 pid, 整数型
  92. .局部变量 ret
  93. .局部变量 信息块, 字节集
  94. .局部变量 retlen
  95. .局部变量 temp, h4e6hhtrdes
  96. .局部变量 信息块指针偏移
  97. .局部变量 number
  98. .局部变量 结果, 长整数型
  99. retlen = 1
  100. .循环判断首 ()
  101. 信息块 = 取空白字节集 (retlen)
  102. _模块_调用转向 (“ntdll.dll”, “ZwQuerySystemInformation”)
  103. ret = ZwQuerySystemInformation (16, 信息块, retlen, 0)
  104. .如果 (ret = -1073741820)
  105. retlen = retlen × 2
  106. 信息块 = 取空白字节集 (retlen)
  107. .否则
  108. 跳出循环 ()
  109. .如果结束
  110. .循环判断尾 (ret = -1073741820)
  111. 信息块指针偏移 = _取指针_字节集 (信息块, 信息块, 0)
  112. _写内存3 (number, 信息块指针偏移, 4)
  113. 信息块指针偏移 = 信息块指针偏移 + 4
  114. .计次循环首 (number, )
  115. _写内存2 (temp, 信息块指针偏移, 16)
  116. .如果真 (pid = temp.a 且 temp.b = 5)
  117. 返回 (十六文本至长整数 (取十六进制文本 (temp.e)))
  118. .如果真结束
  119. 信息块指针偏移 = 信息块指针偏移 + 16
  120. .计次循环尾 ()
  121. 返回 (0)
  122. .子程序 十六文本至长整数, 长整数型, , (进程隐藏)
  123. .参数 x, 文本型, , 要转换的十六进制文本
  124. .局部变量 ret, 长整数型
  125. _模块_调用转向 (“shlwapi.dll”, “StrToInt64ExA”)
  126. _进制文本转整数 (“0x” + x, 1, ret)
  127. 返回 (ret)
  128. .子程序 读物理内存, 字节集, , 失败返回{},成功返回相应数据 (进程隐藏)
  129. .参数 地址, 长整数型
  130. .参数 长度, 整数型, , <=4096
  131. .局部变量 MEMORY_CHUNKS, 字节集
  132. .局部变量 ret, 字节集
  133. .局部变量 retlen, 整数型
  134. ret = 取空白字节集 (长度)
  135. MEMORY_CHUNKS = 取字节集左边 (到字节集 (地址), 4) + 到字节集 (_取指针_字节集 (ret, ret, 0)) + 到字节集 (长度)
  136. _模块_调用转向 (“ntdll.dll”, “NtSystemDebugControl”)
  137. NtSystemDebugControl (8, MEMORY_CHUNKS, 12, 0, 0, retlen) ' 12为MEMORY_CHUNKS的长度
  138. .如果真 (retlen ≤ 0)
  139. ret = { }
  140. .如果真结束
  141. 返回 (ret)
  142. .子程序 写物理内存, 整数型, , 失败返回-1,成功返回0 (进程隐藏)
  143. .参数 地址, 长整数型
  144. .参数 数据, 字节集, , <=4096
  145. .局部变量 MEMORY_CHUNKS, 字节集
  146. .局部变量 ret, 整数型
  147. .局部变量 retlen, 整数型
  148. .局部变量 len, 整数型
  149. len = 取字节集长度 (数据)
  150. MEMORY_CHUNKS = 取字节集左边 (到字节集 (地址), 4) + 到字节集 (_取指针_字节集 (数据, 数据, 0)) + 到字节集 (len)
  151. _模块_调用转向 (“ntdll.dll”, “NtSystemDebugControl”)
  152. NtSystemDebugControl (9, MEMORY_CHUNKS, 12, 0, 0, retlen) ' 12为MEMORY_CHUNKS的长度
  153. .如果真 (retlen ≤ 0)
  154. ret = -1
  155. .如果真结束
  156. 返回 (ret)
  157. .子程序 _模块_调用转向
  158. .参数 DLL文件名, 文本型
  159. .参数 函数名, 文本型
  160. .局部变量 hbe4htr, 文本型, 静态
  161. .局部变量 ye65ybtry5, 整数型, 静态
  162. .如果真 (hbe4htr = “”)
  163. hbe4htr = 取特殊目录 (37)
  164. .如果真结束
  165. .如果真 (DLL命令调用转向 (hbe4htr + DLL文件名, 函数名))
  166. 返回 ()
  167. .如果真结束
  168. 信息框 (“找不到文件:” + DLL文件名 + “中的函数:” + 函数名 + “!”, 16, “错误提示”)
  169. 结束 ()
  170. .子程序 取特殊目录, 文本型, 公开, 取特定的目录(返回所要取的指定目录名 无效返回空)
  171. .参数 欲获取目录类型, 整数型, 可空, 0我的桌面 1临时目录 5我的文档 6我的收藏夹 7我的启动 11我的开始菜单 20系统字体 36Windows安装目录 37系统目录 [99更多]
  172. .局部变量 路径, 文本型
  173. .局部变量 标示结构, xbsdy5sg
  174. .局部变量 目录类型, 整数型
  175. .如果真 (欲获取目录类型 = 99)
  176. 输出调试文本 (“0我的桌面 2我的程序 5我的文档 6我的收藏夹 7我的启动 8我最近的文档 9我的发送到 11我的开始菜单 13我的音乐 14我的视频 16我的桌面 20系统字体 22开始菜单组 23程序组 24启动组 25桌面 31收藏夹 32我的浏览器临时目录 33我的Cookies 34我的历史记录 36Windows安装目录 37系统目录 38文件安装目录 39我的图片 40用户目录 41系统目录 46文档 47管理工具 48我的管理工具 53音乐 54图片 55视频”)
  177. .如果真结束
  178. .如果 (欲获取目录类型 = 1)
  179. 目录类型 = 34
  180. .否则
  181. 目录类型 = 欲获取目录类型
  182. .如果结束
  183. 获取特别文件夹位置_ (0, 目录类型, 标示结构)
  184. 路径 = 取空白文本 (255)
  185. 从列表id取路径_ (标示结构.xzsybd, 路径)
  186. .如果真 (路径 = “”)
  187. 返回 (“”)
  188. .如果真结束
  189. .如果真 (欲获取目录类型 = 1)
  190. 路径 = 子文本替换 (路径, “History”, “Temp”, , , 真)
  191. .如果真结束
  192. 返回 (路径 + “\”)
  193. 2

vb中已经知道进程的EPROCESS,如何杀死该进程

EPROCESS中有进程ID,不同操作系统里EPROCESS中进程ID的偏移不同,windows 2000为0x9c,XP为0x84,2003为0x84。那么进程ID:ProcessId = *(PULONG)((PCHAR)Process + ProcessIdOffset);(其中Process为EPROCESS,ProcessIdOffset为偏移,此为我编程所用的C代码,是对的,对应VB你自己得想办法了,好久没用过VB了,设计内存地址就不会了)。得到进程后如果不用句柄的话可以用taskkill命令,不然非用代码的话我就只能说用OpenProcess和TerminateProcess了,

标签:编程 电脑网络 进程 vb eprocess

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved. 京ICP备11019930号-18