这几天看了一块3毛钱的代码 觉得很奇怪
主要代码如下:
invoke _EnablePrivilege, CTXT("SeDebugPrivilege"), TRUE
invoke _GetPidFromProcName, CTXT("lsass.exe")
invoke OpenProcess, PROCESS_QUERY_INFORMATION, 0, eax
test eax, eax
jz _exit
mov hProc, eax
invoke OpenProcessToken, hProc, READ_CONTROL+WRITE_DAC, addr hToken
test eax, eax
jz _exit
invoke _ModifySecurity, hToken, TOKEN_ALL_ACCESS
test eax, eax
jz _exit
invoke CloseHandle, hToken
mov hToken, 0
invoke OpenProcessToken, hProc, TOKEN_ALL_ACCESS, addr hToken
test eax, eax
jz _exit
invoke [COLOR=orangered]DuplicateTokenEx[/COLOR], hToken, TOKEN_ALL_ACCESS, 0, SecurityImpersonation, TokenPrimary, addr hNewToken
test eax, eax
jz _exit
invoke [COLOR=orangered]ImpersonateLoggedOnUser[/COLOR], hNewToken
test eax, eax
jz _exit
mov stStartupInfo.cb, sizeof stStartupInfo
invoke [COLOR=orangered]CreateProcessAsUser[/COLOR], hNewToken, 0, CTXT("cmd.exe"), 0, 0, 0, 0, 0, 0, addr stStartupInfo, addr procinfo
我觉得有疑问的是红色的那几个API,首先对照其他人的代码,他们都配置了winstation和destop 以便新进程可以与当前桌面交互 默认为winsta0/default
但是这段代码没有配置过桌面 但是运行结果良好。
我又试着把其他相关代码的配置桌面去掉 却看不见运行结果了。不明白啊。
ps:一块3毛钱的完整代码见:http://www.cnblogs.com/F4ncy/archive/2005/07/24/199211.html
的第2种方法
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课