能力值:
( LV4,RANK:50 )
|
-
-
2 楼
太强了,要顶!
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
嘿嘿,vista自带了这个功能。
|
能力值:
( LV7,RANK:100 )
|
-
-
4 楼
权限问题~~~
在打开一个用户名为SYSTEM的进程的时候,因为权限不够,CreateToolhelp32Snapshot返回了-1(INVALID_HANDLE_VALUE)。
01014F00 > \60 pushad 01014F01 . BA 989C0000 mov edx, 9C98 01014F06 . 3BCA cmp ecx, edx 01014F08 . 75 37 jnz short 01014F41 01014F0A . FF70 08 push dword ptr [eax+8] ; /ProcessID 01014F0D . 6A 08 push 8 ; |Flags = TH32CS_SNAPMODULE 01014F0F . FF15 38100201 call dword ptr [<&kernel32.CreateToolhelp32Snapshot>] ; \CreateToolhelp32Snapshot //这个返回失败! 01014F15 . C705 006A0101>mov dword ptr [1016A00], 224 01014F1F . 68 006A0101 push 01016A00 ; /pModuleentry = mytaskmg.01016A00 01014F24 . 50 push eax ; |hSnapshot 01014F25 . FF15 3C100201 call dword ptr [<&kernel32.Module32First>] ; \Module32First 01014F2B . FF15 7C130001 call dword ptr [<&USER32.GetForegroundWindow>] ; [GetForegroundWindow 01014F31 . 6A 00 push 0 ; /Style = MB_OK|MB_APPLMODAL 01014F33 . 6A 00 push 0 ; |Title = NULL 01014F35 . 68 206B0101 push 01016B20 ; |Text = "?",06,"?眝?",06,"?,B6,"",B2,"",92,"?翽?",06,"衚",B2,"",92,"?",06,"蠪",B2,"",92,"?" 01014F3A . 50 push eax ; |hOwner 01014F3B . FF15 5D100201 call dword ptr [<&user32.MessageBoxA>] ; \MessageBoxA 01014F41 > 61 popad 01014F42 . BA 5C9C0000 mov edx, 9C5C 01014F47 .^ E9 E27FFFFF jmp 0100CF2E
提升权限的代码:
BOOL EnableDebugPrivileges() { /**********************************************************************/ //提升进程自身权限 BOOL bRet; HANDLE hToken; bRet = ::OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken); if(!bRet) { return FALSE; } TOKEN_PRIVILEGES tp; tp.PrivilegeCount = 1; ::LookupPrivilegeValue(NULL,SE_DEBUG_NAME,&tp.Privileges[0].Luid); tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; ::AdjustTokenPrivileges(hToken,FALSE,&tp,sizeof(tp),NULL,NULL); if(GetLastError() != ERROR_SUCCESS) { return FALSE; } return TRUE; /**********************************************************************/ }
|
能力值:
(RANK:350 )
|
-
-
5 楼
恩,问题解决了,非常感谢 安催 同学
开始我也想到是权限问题,我用了前几天用来修改特定进程内存的程序中的提权代码,看来是我写得有点问题。
|
能力值:
( LV12,RANK:530 )
|
-
-
6 楼
http://bbs.pediy.com/showthread.php?t=4003
得到路径后还可以干点儿别的事情。
|
能力值:
(RANK:1130 )
|
-
-
7 楼
没有人喜欢Process Explorer
|
能力值:
(RANK:350 )
|
-
-
8 楼
让Vegeta见笑了
|
能力值:
(RANK:350 )
|
-
-
9 楼
我喜欢用Norton Process Viewer
|
能力值:
( LV9,RANK:610 )
|
-
-
10 楼
记得我以前有发过任务管理器2000的代码,估计LZ以后修改可以参考~!
|
能力值:
(RANK:350 )
|
-
-
11 楼
任务管理器2000,就是Windows 2000带的任务管理器?
自带这个功能呀,好久没见过2000系统了
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
好文章, mark了
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
在SP3下出错了。不能用。
|
能力值:
( LV12,RANK:530 )
|
-
-
14 楼
太客气了,互相学习。
|
能力值:
( LV9,RANK:170 )
|
-
-
15 楼
I LIKE THIS DIY
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
这个还是有学习价值的。
|
能力值:
( LV13,RANK:350 )
|
-
-
17 楼
真是没想到啊,学习
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
我是来看一下的 看完我就走
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
试了一下,发现我的系统不是XP SP2,不能用。谢谢楼主。
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
写的好,要亲自试下!
|
能力值:
( LV5,RANK:71 )
|
-
-
21 楼
看雪如何发帖?
|
能力值:
( LV7,RANK:100 )
|
-
-
22 楼
01014F5A /$ 55 PUSH EBP
01014F5B |. 8BEC MOV EBP,ESP
01014F5D |. 83C4 E0 ADD ESP,-20
01014F60 |. B8 10000000 MOV EAX,10
01014F65 |. B8 08000000 MOV EAX,8
01014F6A |. C745 E0 00000>MOV DWORD PTR SS:[EBP-20],0
01014F71 |. FF15 14110001 CALL DWORD PTR DS:[<&KERNEL32.GetCurrentProcess>] ; [GetCurrentProcess
01014F77 |. 8D5D FC LEA EBX,DWORD PTR SS:[EBP-4]
01014F7A |. 53 PUSH EBX ; /phToken
01014F7B |. 6A 20 PUSH 20 ; |DesiredAccess = TOKEN_ADJUST_PRIVILEGES
01014F7D |. 50 PUSH EAX ; |hProcess
01014F7E |. FF15 20100001 CALL DWORD PTR DS:[<&ADVAPI32.OpenProcessToken>] ; \OpenProcessToken
01014F84 |. 6A 00 PUSH 0
01014F86 |. 68 6C656765 PUSH 6567656C
01014F8B |. 68 72697669 PUSH 69766972
01014F90 |. 68 62756750 PUSH 50677562
01014F95 |. 68 53654465 PUSH 65446553
01014F9A |. 8BDC MOV EBX,ESP
01014F9C |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
01014F9F |. 50 PUSH EAX
01014FA0 |. 53 PUSH EBX
01014FA1 |. 6A 00 PUSH 0
01014FA3 |. A1 2C100001 MOV EAX,DWORD PTR DS:[<&ADVAPI32.LookupPrivilegeValueW>]
01014FA8 |. 05 25060000 ADD EAX,625
01014FAD |. FFD0 CALL EAX
01014FAF |. 83C4 14 ADD ESP,14
01014FB2 |. C745 E4 01000>MOV DWORD PTR SS:[EBP-1C],1
01014FB9 |. FF75 F4 PUSH DWORD PTR SS:[EBP-C]
01014FBC |. 8F45 E8 POP DWORD PTR SS:[EBP-18]
01014FBF |. FF75 F8 PUSH DWORD PTR SS:[EBP-8]
01014FC2 |. 8F45 EC POP DWORD PTR SS:[EBP-14]
01014FC5 |. C745 F0 02000>MOV DWORD PTR SS:[EBP-10],2
01014FCC |. 6A 00 PUSH 0 ; /pRetLen = NULL
01014FCE |. 6A 00 PUSH 0 ; |pPrevState = NULL
01014FD0 |. 6A 10 PUSH 10 ; |PrevStateSize = 10 (16.)
01014FD2 |. 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C] ; |
01014FD5 |. 50 PUSH EAX ; |pNewState
01014FD6 |. 6A 00 PUSH 0 ; |DisableAllPrivileges = FALSE
01014FD8 |. FF75 FC PUSH DWORD PTR SS:[EBP-4] ; |hToken
01014FDB |. FF15 18100001 CALL DWORD PTR DS:[<&ADVAPI32.AdjustTokenPrivileges>] ; \AdjustTokenPrivileges
01014FE1 |. FF15 84110001 CALL DWORD PTR DS:[<&KERNEL32.GetLastError>] ; [GetLastError
01014FE7 |. 0BC0 OR EAX,EAX
01014FE9 |. 75 07 JNZ SHORT mytaskmg.01014FF2
01014FEB |. C745 E0 01000>MOV DWORD PTR SS:[EBP-20],1
01014FF2 |> FF75 FC PUSH DWORD PTR SS:[EBP-4] ; /hObject
01014FF5 |. FF15 78110001 CALL DWORD PTR DS:[<&KERNEL32.CloseHandle>] ; \CloseHandle
01014FFB |. 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20]
01014FFE |. C9 LEAVE
01014FFF \. C3 RETN
我在XP SP3下运行错误;
这个提权代码是从你的程序中反汇编出来的,其中加红的这一句是干嘛的呀?
本来是把函数的地址传给EAX,为什么还要加上625?
这样一加就不是查询特权值的函数地址了啊!
不是很明白,请楼主提示下。
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
。。厉害,支持下
|
能力值:
(RANK:350 )
|
-
-
24 楼
被你发现尴尬的地方拉 我的这个东西在sp2下是没问题的
我在做这个的时候,还不太会用LordPE来增加导入函数,当时导入了LookupPrivilegeValueA,但是找不到调用地址(后来查资料后知道了),所以当时使用了通过LookupPrivilegeValueW的地址加上LookupPrivilegeValueA相对于它的偏移来定位。你自己用LordPE打开程序找找它的ThunkRVA,直接call [imagebase+TnunkRVA]试试看。
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
占位,关注中!
|
|
|