VB程序,在XP中正常,在WIN7中OpenProcess返回成功,但是ReadProcessMemory得不到数据
VB程序,在XP中正常,在WIN7中OpenProcess(PROCESS_ALL_ACCESS,False,pid)返回成功,但是ReadProcessMemory得不...
VB程序,在XP中正常,在WIN7中OpenProcess(PROCESS_ALL_ACCESS, False, pid)返回成功,但是ReadProcessMemory得不到数据,提权也试了,附代码:
程序代码:
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If hProcess Then
GetWindowText hWd, sTrTitle, Len(sTrTitle)
ReadProcessMemory hProcess, ByVal &H12EFC4, Base, 4, 0&
ReadProcessMemory hProcess, ByVal Base + &H30, Base, 4, 0&
ReadProcessMemory hProcess, ByVal Base + &H6C0, name_temp, 4, 0&
ReadProcessMemory hProcess, ByVal name_temp + 0, nam(0), 32, 0&
Hwdlst(i) = pid
Combo1.List(i) = nam
Text5.Text = Hwdlst(i) & Combo1.List(i)
i = i + 1
Else
Text5.Text = "打不开目标进程"
End If
没有进入到 Text5.Text = "打不开目标进程"说明打开进程是成功的?
但是没读到数据,于是在网上搜索了提权的代码,代码如下:
Public Sub AdjustProcPriv()
//这里省略了变量的定义,因为超过字符限制了。
HCurProc = GetCurrentProcess
Ret = OpenProcessToken(HCurProc, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, HToken)
Ret = LookupPrivilegeValue("", SE_DEBUG_NAME, GetLuid)
NewPrivilege.PrivilegeCount = 1
NewPrivilege.Privileges(0).pLuid = GetLuid
NewPrivilege.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
PrevLen = Len(PrevPrivilege)
Ret = AdjustTokenPrivileges(HToken, False, NewPrivilege, PrevLen, PrevPrivilege, PrevNeed)
End Sub
我也不能确定提权是否成功,当前程序是否是SYSTEM权限,期待给解决思路,谢谢!
我的信箱765061@qq.com 展开
程序代码:
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, pid)
If hProcess Then
GetWindowText hWd, sTrTitle, Len(sTrTitle)
ReadProcessMemory hProcess, ByVal &H12EFC4, Base, 4, 0&
ReadProcessMemory hProcess, ByVal Base + &H30, Base, 4, 0&
ReadProcessMemory hProcess, ByVal Base + &H6C0, name_temp, 4, 0&
ReadProcessMemory hProcess, ByVal name_temp + 0, nam(0), 32, 0&
Hwdlst(i) = pid
Combo1.List(i) = nam
Text5.Text = Hwdlst(i) & Combo1.List(i)
i = i + 1
Else
Text5.Text = "打不开目标进程"
End If
没有进入到 Text5.Text = "打不开目标进程"说明打开进程是成功的?
但是没读到数据,于是在网上搜索了提权的代码,代码如下:
Public Sub AdjustProcPriv()
//这里省略了变量的定义,因为超过字符限制了。
HCurProc = GetCurrentProcess
Ret = OpenProcessToken(HCurProc, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, HToken)
Ret = LookupPrivilegeValue("", SE_DEBUG_NAME, GetLuid)
NewPrivilege.PrivilegeCount = 1
NewPrivilege.Privileges(0).pLuid = GetLuid
NewPrivilege.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
PrevLen = Len(PrevPrivilege)
Ret = AdjustTokenPrivileges(HToken, False, NewPrivilege, PrevLen, PrevPrivilege, PrevNeed)
End Sub
我也不能确定提权是否成功,当前程序是否是SYSTEM权限,期待给解决思路,谢谢!
我的信箱765061@qq.com 展开
1个回答
展开全部
从vista开始windows就提供了session0隔离,原来的时候,只要有一个system权限的程序A,用A运行B程序,那B程序也是system权限,自从有了这个session 0隔离,就不行了。
你从网上找的那段代码,是给当前进程添加调试的特权,在NT时代基本上都用它来进行DLL注入。在WIN7上默认运行程序是非管理员的,默认非管理员是不能开启特权的。 那可能写的程序只有在运行的时候选用管理员特权才可以,你可以看一下像od这样的调试器,不用管理员运行,是没法调试的。。 所以,只能在操作上以管理员运行程序,然后使用你搜索的代码提升特权,不过读取进程的信息,可能是那个特权,这个需要查MSDN了,你查一下那几个API函数的MSDN的说明就知道,读取进程信息需要哪个特权了。
你从网上找的那段代码,是给当前进程添加调试的特权,在NT时代基本上都用它来进行DLL注入。在WIN7上默认运行程序是非管理员的,默认非管理员是不能开启特权的。 那可能写的程序只有在运行的时候选用管理员特权才可以,你可以看一下像od这样的调试器,不用管理员运行,是没法调试的。。 所以,只能在操作上以管理员运行程序,然后使用你搜索的代码提升特权,不过读取进程的信息,可能是那个特权,这个需要查MSDN了,你查一下那几个API函数的MSDN的说明就知道,读取进程信息需要哪个特权了。
更多追问追答
追问
试了右键用管理员权限运行。
如何得知本程序是否是管理员权限?能给到相应的测试代码吗?
以上提升代码权限那里应该有判断是否是system权限的,能够告知
追答
管理员权限就是右键运行的时候 管理员运行,在程序中我不知道有什么方法判断
提升权限是给当前进行的token中设置一个特权,那个和system不system么关系 。。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询