能力值:
(RANK:410 )
|
-
-
2 楼
未定义的符号:
..\MyProc.asm(10) : error A2006: undefined symbol : OpenProcessToken
..\MyProc.asm(12) : error A2006: undefined symbol : LookupPrivilegeValue
..\MyProc.asm(18) : error A2006: undefined symbol : AdjustTokenPrivileges
,在ASM文件里将下面两个文件包含进去。
include advapi32.inc
includelib advapi32.lib
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
最初由 小虾 发布 未定义的符号: ..\MyProc.asm(10) : error A2006: undefined symbol : OpenProcessToken ..\MyProc.asm(12) : error A2006: undefined symbol : LookupPrivilegeValue ..\MyProc.asm(18) : error A2006: undefined symbol : AdjustTokenPrivileges ,在ASM文件里将下面两个文件包含进去。 ........
多谢了,我改了一下,还是通不过
..\MyProc.asm(14) : error A2084: constant value too large
..\MyProc.asm(14) : error A2114: INVOKE argument type mismatch : argument : 2
这个应该是说,第二的参数有问题,不知道要怎么改才对
.code
;函数作用:为当前进程取得系统特权的函数
MyGetPrivileges proc
LOCAL hToken:DWORD
LOCAL stTokenPrivilege:TOKEN_PRIVILEGES
LOCAL hProcess:DWORD
;取得当前进程的 Token 标识 句柄
invoke GetCurrentProcess
mov hProcess,eax
invoke OpenProcessToken,hProcess,(TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY),addr hToken
;取得关闭系统的 LUID 本地唯一的标识符 值
invoke LookupPrivilegeValue,NULL,SE_SHUTDOWN_NAME,addr stTokenPrivilege.Privileges[0].Luid
;设置特权数组的元素个数
mov stTokenPrivilege.PrivilegeCount,1
;设置[LUID]的属性值
mov stTokenPrivilege.Privileges[0].Attributes,SE_PRIVILEGE_ENABLED
;为当前进程取得关闭系统的特权
invoke AdjustTokenPrivileges,hToken,FALSE,addr stTokenPrivilege,0,NULL,NULL
invoke CloseHandle,hToken
ret
MyGetPrivileges endp
|
能力值:
(RANK:410 )
|
-
-
4 楼
你的源码第14行的内容有错误,你检查一下你的源码的第14行。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
最初由 小虾 发布 你的源码第14行的内容有错误,你检查一下你的源码的第14行。
第14行是这行:
invoke LookupPrivilegeValue,NULL,SE_SHUTDOWN_NAME,addr stTokenPrivilege.Privileges[0].Luid
SE_SHUTDOWN_NAME这个参数有问题,不知道怎么写才对
这个在WINDOWS.INC是这样定义的:
SE_SHUTDOWN_NAME equ ("SeShutdownPrivilege")
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
顶一下,请各位大侠救救我
|
能力值:
( LV8,RANK:130 )
|
-
-
7 楼
HANDLE handle;
TOKEN_PRIVILEGES tp;
// 提升权限
OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &handle);
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tp.Privileges[0].Luid);
tp.PrivilegeCount = 1;
tp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(handle, FALSE, &tp, 0, (PTOKEN_PRIVILEGES)NULL, 0);
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
最初由 红火蚁 发布 HANDLE handle; TOKEN_PRIVILEGES tp; // 提升权限 OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &handle); LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tp.Privileges[0].Luid); ........
请问用汇编应该怎么写这一句?
LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tp.Privileges[0].Luid);
上面我写的说是SE_SHUTDOWN_NAME参数有问题,可我怎么也找不出是什么问题
|
能力值:
( LV8,RANK:130 )
|
-
-
9 楼
以前做过一个定时关机程序就用到了提升权限
http://bbs.pediy.com/showthread.php?s=&threadid=27156
我现在还不回汇编
这个暑假学
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
最初由 红火蚁 发布 以前做过一个定时关机程序就用到了提升权限
http://bbs.pediy.com/showthread.php?s=&threadid=27156 我现在还不回汇编 这个暑假学
谢了,我现在就是在学汇编,所以写了个小东东,写到这里就停了
搞不懂那个参数错在哪了
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
再顶一下,请大家有空帮我看看,到底是哪出错了
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
弄了几天也没弄懂问题在哪
请大家帮帮我吧
|
能力值:
(RANK:410 )
|
-
-
13 楼
;查看了一下C语言的SE_SECURITY_NAME的定义。只是将SE_SECURITY_NAME定义为一个字符串指针常量(指向字符串常量"SeSecurityPrivilege"的指针常量)
;#define SE_SECURITY_NAME TEXT("SeSecurityPrivilege")
;所以,在MASM32里直接改成这样就行了。
.data
MY_SE_SHUTDOWN_NAME db "SeShutdownPrivilege",0
;使用的时候就这样使用。
mov stTokenPrivilege.Privileges[0].Attributes,offset MY_SE_PRIVILEGE_ENABLED
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
最初由 小虾 发布 ;查看了一下C语言的SE_SECURITY_NAME的定义。只是将SE_SECURITY_NAME定义为一个字符串指针常量(指向字符串常量"SeSecurityPrivilege"的指针常量) ;#define SE_SECURITY_NAME TEXT("SeSecurityPrivilege")
;所以,在MASM32里直接改成这样就行了。 .data ........ 多谢版主!!!
按你的方法改了一下,终于解决了:)
不过还是有点不明白,在MASM32的windows.inc里面已经有这个样的定义了
SE_SHUTDOWN_NAME equ ("SeShutdownPrivilege")
为什么还有我们自己定义一个呢???
|
能力值:
( LV12,RANK:210 )
|
-
-
15 楼
这个定义充其量只是一个字符替换,任何引用这个定义的地方都会被替换成那个引号括起来的字符串
|
|
|