Bueno, posteo esto mas que nada para estrenar el SubForo :P
include 'win32ax.inc'
entry Main
section '.code' code readable executable
Main:
invoke IsUserAnAdmin
test eax, eax
jz .No
invoke MessageBoxA, 0, Sip, Title, 0
jmp .Exit
.No:
invoke MessageBoxA, 0, No, Title, 0
.Exit:
invoke ExitProcess, 0
;section '.data' data readable writeable
Sip db 'Si', 0
No db 'No', 0
Title db 'Somos Admin?', 0
section '.idata' import data readable
library K32, 'KERNEL32.DLL',\
S32, 'SHELL32.DLL',\
U32, 'USER32.DLL'
import K32, ExitProcess, 'ExitProcess'
import S32, IsUserAnAdmin, 'IsUserAnAdmin'
import U32, MessageBoxA, 'MessageBoxA'
Simplemente usa el API de Shell32 llamada 'IsUserAnAdmin'
Más información sobre el API:
http://msdn.microsoft.com/en-us/library/bb776463.aspx
Saludos ;D
PD:A disfrutar del SubForo! :P
PD2: Propongo mover los Mensajes relacionados con ASM que hay en Programacion General AQUI! :xD
Otra api que se puede usar es SHTestTokenMembership
include 'win32ax.inc'
.code
Main:
invoke SHTestTokenMembership,0,220h
push 0
push Title
cmp eax,FALSE
je @f
invoke MessageBox, 0,'Si'
ret
@@:
invoke MessageBox, 0,'No'
ret
Title : db 'Somos Admin?', 0
section '.idata' import data readable
library S32, 'SHELL32.DLL',\
U32, 'USER32.DLL'
import S32, SHTestTokenMembership, 'SHTestTokenMembership'
import U32, MessageBox, 'MessageBoxA'
Yo esto lo busco para C, sería interesante para ponerlo en un code como virus.
no hay que hacer mucho para pasarlo a c , solo tienes que cargar shell32.dll con LoadLibrary y sacar la direccion de la api con GetProcAddress
Tambien podes enlazar estaticamente como en el codigo original de este hilo.
if (IsUserAnAdmin())
{
}
else
{
}