找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 8022|回复: 7

枚举进程的模块的问题

[复制链接]

76

主题

375

回帖

0

精华

铜牌会员

积分
231
发表于 2009-10-17 00:38:51 | 显示全部楼层 |阅读模式
<font style="BACKGROUND-COLOR: #ffffff" size="4" face="Verdana">附件里的代码可以枚举进程,点某个进程的右键菜单,然后点查看模块,就能查看模块了。但我发现有的进程能查看模块,有的进程不能显示模块。请问怎么办?</font> l63zVgSN.zip (9.76 KB, 下载次数: 17066) <br/>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

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

QQ
发表于 2009-10-17 01:50:11 | 显示全部楼层
<p>测试了一下,在我这里貌似都行.</p>
<p>&nbsp;</p>
<p>估计是有安全软件限制了,或者用户权限过低之类.</p>
我就是嗷嗷叫的老马了......

76

主题

375

回帖

0

精华

铜牌会员

积分
231
 楼主| 发表于 2009-10-18 00:08:01 | 显示全部楼层

还是不行

<p><font style="BACKGROUND-COLOR: #ffffff" size="4" face="Verdana">我把代码生成为EXE文件。我又在一个没有安装杀毒软件的虚拟机里试了一下,结果还是有的能,有的不能。当前用户是管理员,安全模式下试了也是有的能,有的不能。</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" size="4" face="Verdana">alg.exe不能<br/>conime.exe能<br/>csrss.exe不能<br/>ctfmon.exe能<br/>explorer.exe能<br/>smss.exe不能<br/>lsass.exe不能<br/>services.exe不能<br/>svchost.exe不能<br/>winlogon.exe不能</font></p>
<p><font style="BACKGROUND-COLOR: #ffffff" size="4" face="Verdana">有的进程点右键打开显示模块的窗口后,ListView控件没有条目。有的却能显示模块。我用GetLastError和FormatMessage显示"操作成功完成"。不知您能查看上面那些标为不能的进程的模块吗?<br/>关于制作进程管理器,您推荐用什么函数?是CreateToolhelpSnapshot,还是EnumProcesses?<br/></font></p>

枚举进程的模块的问题

枚举进程的模块的问题
<br/>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

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

QQ
发表于 2009-10-18 12:49:57 | 显示全部楼层
<p>我又测试了一下,除了SYSTEM等无模块的进程外,其余都是能行的.</p>
<p>&nbsp;</p>
<p>我的系统是2003 SP2,没开任何安全软件.</p>
<p>&nbsp;</p>
<p>也许是系统本身的限制吧.</p>
<p>&nbsp;</p>
<p>你试一下提升进程权限: </p>
<div class="msgheader">QUOTE:</div><div class="msgborder"><b>
<p><font face="Verdana">Option Explicit<br/>'*************************************************************************<br/>'**模 块 名:ModSetProDebug<br/>'**说&nbsp;&nbsp;&nbsp; 明:将本进程运行级别设置为DEBUG<br/>'**创 建 人:马大哈<br/>'**日&nbsp;&nbsp;&nbsp; 期:2006年10月22日<br/>'**描&nbsp;&nbsp;&nbsp; 述:网上收集<br/>'**版&nbsp;&nbsp;&nbsp; 本:V1.0<br/>'*************************************************************************</font></p>
<p><font face="Verdana">Private Type LARGE_INTEGER</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; lowpart As Long<br/>&nbsp;&nbsp;&nbsp; highpart As Long</font></p>
<p><font face="Verdana">End Type</font></p>
<p><font face="Verdana">Private Const ANYSIZE_ARRAY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As Long = 1</font></p>
<p><font face="Verdana">Private Const SE_PRIVILEGE_ENABLED&nbsp;&nbsp;&nbsp; As Long = &amp;H2</font></p>
<p><font face="Verdana">Private Const TOKEN_ADJUST_PRIVILEGES As Long = &amp;H20</font></p>
<p><font face="Verdana">Private Const TOKEN_QUERY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; As Long = &amp;H8</font></p>
<p><font face="Verdana">Private Type LUID_AND_ATTRIBUTES</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; LUID As LARGE_INTEGER<br/>&nbsp;&nbsp;&nbsp; Attributes As Long</font></p>
<p><font face="Verdana">End Type</font></p>
<p><font face="Verdana">Private Type TOKEN_PRIVILEGES</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; PrivilegeCount As Long<br/>&nbsp;&nbsp;&nbsp; Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES</font></p>
<p><font face="Verdana">End Type</font></p>
<p><font face="Verdana">Private Declare Function LookupPrivilegeValue _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Lib "advapi32.dll" _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByVal lpName As String, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByRef lpLuid As LARGE_INTEGER) As Long</font></p>
<p><font face="Verdana">Private Declare Function AdjustTokenPrivileges _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Lib "advapi32.dll" (ByVal TokenHandle As Long, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByVal DisableAllPrivileges As Long, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByRef NewState As TOKEN_PRIVILEGES, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByVal BufferLength As Long, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByRef PreviousState As Long, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByRef ReturnLength As Long) As Long</font></p>
<p><font face="Verdana">Private Declare Function GetCurrentProcess Lib "KERNEL32.dll" () As Long</font></p>
<p><font face="Verdana">Private Declare Function GetCurrentProcessId Lib "KERNEL32.dll" () As Long</font></p>
<p><font face="Verdana">Private Declare Function CloseHandle Lib "KERNEL32.dll" (ByVal hObject As Long) As Long</font></p>
<p><font face="Verdana">Private Declare Function OpenProcessToken _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Lib "advapi32.dll" (ByVal ProcessHandle As Long, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByVal DesiredAccess As Long, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ByRef TokenHandle As Long) As Long</font></p>
<p><font face="Verdana">Private Declare Function GetLastError Lib "KERNEL32.dll" () As Long</font></p>
<p><font face="Verdana">Public Function EnableDebugPrivilege() As Boolean</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; Dim TP&nbsp;&nbsp;&nbsp;&nbsp; As TOKEN_PRIVILEGES</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; Dim hToken As Long, r As Long, e As Long</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; r = OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hToken)<br/>&nbsp;&nbsp;&nbsp; e = GetLastError</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; '&nbsp;&nbsp;&nbsp; Err.Raise 6<br/>&nbsp;&nbsp;&nbsp; If r And Not e Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r = LookupPrivilegeValue(vbNullString, "SeDebugPrivilege", TP.Privileges(0).LUID)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e = GetLastError</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If r And Not e Then<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TP.PrivilegeCount = 1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TP.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r = AdjustTokenPrivileges(hToken, False, TP, LenB(TP), 0, 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EnableDebugPrivilege = GetLastError = 0<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br/>&nbsp;&nbsp;&nbsp; End If</font></p>
<p><font face="Verdana">&nbsp;&nbsp;&nbsp; Call CloseHandle(hToken)<br/>End Function</font></p></b></div>
<p>启动时先调用<font face="Verdana">EnableDebugPrivilege就行.</font></p>
我就是嗷嗷叫的老马了......

76

主题

375

回帖

0

精华

铜牌会员

积分
231
 楼主| 发表于 2009-10-19 00:33:39 | 显示全部楼层
<p><font size="4">谢谢,提权后又有好多进程可以列出模块了。在有杀毒软件的系统里,360安全卫士、卡巴斯基这种进程仍然无法列出模块。</font></p>

275

主题

3017

回帖

1

精华

管理员

嗷嗷叫的老马

积分
17064

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

QQ
发表于 2009-10-19 01:11:32 | 显示全部楼层
<p>晕,这些安全软件随便让你几句普通函数就列出来了他们还混个啥- -!</p>
<p>&nbsp;</p>
<p>作为安全软件,如果连自己都保护不了,如何去保护别人呢.</p>
我就是嗷嗷叫的老马了......

76

主题

375

回帖

0

精华

铜牌会员

积分
231
 楼主| 发表于 2009-10-19 23:25:37 | 显示全部楼层
感谢老马的教导。

30

主题

693

回帖

0

精华

钻石会员

积分
2815
发表于 2015-7-18 10:14:05 | 显示全部楼层
支持老马 热心老马
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

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