Hey,all
the code can creat a user account. How can delete a user account?
;=============================
.586
.model flat, stdcall
option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include \masm32\include\kernel32.inc
include \masm32\include\netapi32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\netapi32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
USER DW 078H ; WCHAR *USER = L"X";
PASS DW 0
USERPOINTER DD OFFSET USER ; PBYTE USERPOINTER = (PBYTE) &USER;
D1 DD 0 ; DWORD D1 = 0;
D2 DD 0 ; DWORD D2 = 0;
GP DD 0 ; LOCALGROUP_INFO_1* GP = NULL;
UI DB 32 DUP(0) ; USER_INFO_1 U1 = {0};
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
MOV EDI, OFFSET UI
MOV dword ptr , OFFSET USER ; UI.usri1_name = USER;
MOV dword ptr , OFFSET PASS ; UI.usri1_password = (LPWCSTR) ((DWORD)USER+2);
MOV dword ptr , 00000001H ; UI.usri1_priv = USER_PRIV_USER;
MOV dword ptr , 00010021H ; UI.usri1_flags = UF_SCRIPT |
; UF_PASSWD_NOTREQD | UF_DONT_EXPIRE_PASSWD;
PUSH OFFSET USER
PUSH 00000000H
CALL NetUserDel ; NetUserDel(NULL, L"X");
PUSH OFFSET D2
PUSH OFFSET UI
PUSH 00000001H
PUSH 00000000H
CALL NetUserAdd ; if (NetUserAdd(NULL,1, &UI, &D2)
CMP EAX, 0 ; != 0)
JNE ERR ; goto ERR;
PUSH 00000000H
PUSH OFFSET D1
PUSH OFFSET D2
PUSH 0FFFFFFFH
PUSH OFFSET GP
PUSH 00000001H
PUSH 00000000H
CALL NetLocalGroupEnum ; if (NetLocalGroupEnum(0,1,&GP,0x0FFFFFFF,&D2,&D1,0)
CMP EAX, 0 ; != 0)
JNE ERR ; goto ERR;
MOV ECX, D2
GO: PUSH ECX ; for (D1=0;D1<D2;D1++) {
MOV EDX, DWORD PTR
MOV EDX, DWORD PTR
PUSH 00000001H
PUSH OFFSET USERPOINTER
PUSH 00000003H
PUSH EDX
PUSH 00000000H
CALL NetLocalGroupAddMembers ; NetLocalGroupAddMembers(
; NULL, GP.lgrpi1_name, 3,
; USERPOINTER, 1);
POP ECX
LOOP GO ; }
PUSH dword ptr
CALL NetApiBufferFree ; NetApiBufferFree(GP);
PUSH 0
JMP OK ; goto OK;
ERR: PUSH 1 ; ERR: ExitProcess(1);
OK: CALL ExitProcess ; OK: ExitProcess(0);
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start
;=============================
Greets
the code can creat a user account. How can delete a user account?
;=============================
.586
.model flat, stdcall
option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include \masm32\include\kernel32.inc
include \masm32\include\netapi32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\netapi32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
USER DW 078H ; WCHAR *USER = L"X";
PASS DW 0
USERPOINTER DD OFFSET USER ; PBYTE USERPOINTER = (PBYTE) &USER;
D1 DD 0 ; DWORD D1 = 0;
D2 DD 0 ; DWORD D2 = 0;
GP DD 0 ; LOCALGROUP_INFO_1* GP = NULL;
UI DB 32 DUP(0) ; USER_INFO_1 U1 = {0};
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
MOV EDI, OFFSET UI
MOV dword ptr , OFFSET USER ; UI.usri1_name = USER;
MOV dword ptr , OFFSET PASS ; UI.usri1_password = (LPWCSTR) ((DWORD)USER+2);
MOV dword ptr , 00000001H ; UI.usri1_priv = USER_PRIV_USER;
MOV dword ptr , 00010021H ; UI.usri1_flags = UF_SCRIPT |
; UF_PASSWD_NOTREQD | UF_DONT_EXPIRE_PASSWD;
PUSH OFFSET USER
PUSH 00000000H
CALL NetUserDel ; NetUserDel(NULL, L"X");
PUSH OFFSET D2
PUSH OFFSET UI
PUSH 00000001H
PUSH 00000000H
CALL NetUserAdd ; if (NetUserAdd(NULL,1, &UI, &D2)
CMP EAX, 0 ; != 0)
JNE ERR ; goto ERR;
PUSH 00000000H
PUSH OFFSET D1
PUSH OFFSET D2
PUSH 0FFFFFFFH
PUSH OFFSET GP
PUSH 00000001H
PUSH 00000000H
CALL NetLocalGroupEnum ; if (NetLocalGroupEnum(0,1,&GP,0x0FFFFFFF,&D2,&D1,0)
CMP EAX, 0 ; != 0)
JNE ERR ; goto ERR;
MOV ECX, D2
GO: PUSH ECX ; for (D1=0;D1<D2;D1++) {
MOV EDX, DWORD PTR
MOV EDX, DWORD PTR
PUSH 00000001H
PUSH OFFSET USERPOINTER
PUSH 00000003H
PUSH EDX
PUSH 00000000H
CALL NetLocalGroupAddMembers ; NetLocalGroupAddMembers(
; NULL, GP.lgrpi1_name, 3,
; USERPOINTER, 1);
POP ECX
LOOP GO ; }
PUSH dword ptr
CALL NetApiBufferFree ; NetApiBufferFree(GP);
PUSH 0
JMP OK ; goto OK;
ERR: PUSH 1 ; ERR: ExitProcess(1);
OK: CALL ExitProcess ; OK: ExitProcess(0);
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start
;=============================
Greets
NetLocalGroupDelMembers
OK!
Thanks
Thanks