其实我想做一个程序多开的外挂,只要知道某软件创建的互斥体的名称就可以将它删除并且打开另一实例比如我用Process Explorer获取到RealOne Player创建的互斥体对象名称是RPApplicationRunningMutex,当我用PE关闭这个互斥体的句柄后就可以同时打开N个RealOne Player了又如飞信客户端的事件对象名是FetionInstance,关闭它同样也能打开另外一个飞信客户端。请问PE是怎样做到这点的?我参考了你的“解锁文件”的技术文章,模仿着用SystemObjectInformation来枚举对象,可是每次都是产生STATUS_UNSUCCESSFUL错误后来查到网上说要使NtGlobalFlags带FLG_MAINTAIN_OBJECT_TYPELIST标记才能正常执行,我就修改了HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\Your Image File Name Here without a path下面的GlobalFlag子键(改成了0x000050F0)而且重启了计算机,但是还是产生了这个错误。另外
Private Declare Function RtlGetNtGlobalFlags Lib "NTDLL.DLL" () As Long
获取到的值一直是0分不是问题。。解决了我可以另外发帖再加~~~~先谢谢了!!!
Private Declare Function RtlGetNtGlobalFlags Lib "NTDLL.DLL" () As Long
获取到的值一直是0分不是问题。。解决了我可以另外发帖再加~~~~先谢谢了!!!
解决方案 »
- 大家来看看啊,这个弹出的提示框判断弹出完毕呢?
- VB又有新问题。我都不好意思了
- 哎 眼大肚小
- 你的礼物我很喜欢,谢谢
- 求助,winsock编程平台不管是 C++ Builder还是VB ,他的函数属性的代码表示都一样是吗?
- VB中如何才能在picture中让文字翻转角度呢?
- 奇怪问题,主窗体菜单自动隐藏
- 10054错误怎么解决?
- 目前再做用户密码登陆窗口碰到一些问题希望VB高手们帮帮我。我学VB已经2个星期了如果搞不定这个东东555~~~!……
- vba 连接 Sql Server数据库 问题
- 网页activeX控件如何实现?
- 我有个VB6写的程序,已经打包和生成EXE文件了,怎么反编译啊??谢谢了。
或者我的方法有错误么?其实我也不清楚到底是应该用SystemObjectInformation还是SystemHandleInformation又或者是其他?
我是因为用过SystemHandleInformation枚举不到OB_TYPE_EVENT和OB_TYPE_MUTANT类型的句柄才尝试用SystemObjectInformation的....
http://undocumented.ntinternals.net/UserMode/Undocumented%20Functions/NT%20Objects/Mutant/NtQueryMutant.html
下面是我的代码....请指正....Private Sub cmdUnlock_Click()
Dim lngHandles As Long
Dim Buff() As Byte, Rec() As Byte, objInfo() As SYSTEM_HANDLE
Dim StructLen As Long, Ret As Long, i As Long, j As Long, k As Long
StructLen = 1
Do
ReDim Buff(StructLen - 1)
Ret = NtQuerySystemInformation(SystemHandleInformation, VarPtr(Buff(0)), StructLen, 0&)
If (Not NT_SUCCESS(Ret)) Then
If (Ret <> STATUS_INFO_LENGTH_MISMATCH) Then
Erase Buff
Exit Sub
End If
Else
Exit Do
End If
StructLen = StructLen * 2
Loop
CopyMemory lngHandles, Buff(0), 4
ReDim objInfo(lngHandles - 1)
CopyMemory objInfo(0), Buff(4), Len(objInfo(0)) * lngHandles
For i = 0 To lngHandles - 1
'If objInfo(i).ObjectTypeIndex <> 5 Then
' ReDim Preserve Rec(j)
' For k = 0 To j
' If Rec(k) = objInfo(i).ObjectTypeIndex Then Exit For
' Next
' If k = j + 1 Then
' ReDim Preserve Rec(j)
' Rec(j) = objInfo(i).ObjectTypeIndex
' j = j + 1
' End If
'End If
If (objInfo(i).ObjectTypeIndex = OB_TYPE_EVENT) Or _
(objInfo(i).ObjectTypeIndex = OB_TYPE_MUTANT) Then
Debug.Print i,
End If
Next
End Sub没有看到调试窗口有输出....注释代码部分是将所有句柄的类型放到Rec()数组里面....
MUTANT我还没看明天帮你看
现在有事情做
OB_TYPE_UNKNOWN = 0
OB_TYPE_TYPE = 1
OB_TYPE_DIRECTORY '2
OB_TYPE_SYMBOLIC_LINK '3
OB_TYPE_TOKEN '4 令牌
OB_TYPE_PROCESS '5 进程
OB_TYPE_THREAD '6 线程
OB_TYPE_UNKNOWN_7 '7
OB_TYPE_EVENT '8 事件
OB_TYPE_EVENT_PAIR '9
OB_TYPE_MUTANT '10 互斥体
OB_TYPE_UNKNOWN_11 '11
OB_TYPE_SEMAPHORE '12 信号量
......
End Type这个是我在你解锁文件上面复制的系统句柄类型枚举....