win32 - 在cmd中禁用进程权限
C:\Users\path>whoami /priv
在cmd中输入whoami /priv后将获得当前令牌(标准用户)的权限。
C:\Users\path>tasklist /v /fo csv | findstr /i "Command Prompt"
输入上面的command命令后获得cmd.exe的pid,以及其他一些信息。
下面需要一些代码来禁用权限。
#include <windows.h>
#include <stdio.h>
#include <TlHelp32.h> void print_privileges(HANDLE hToken)
{
DWORD size = 0;
if (!GetTokenInformation(hToken, TokenPrivileges, NULL, 0, &size) && GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
PTOKEN_PRIVILEGES tp = (PTOKEN_PRIVILEGES)malloc(size);
if (tp != NULL && GetTokenInformation(hToken, TokenPrivileges, tp, size, &size)) {
size_t i;
for (i = 0; i < tp->PrivilegeCount; ++i) {
char name[64] = "?";
DWORD name_size = sizeof name;
LookupPrivilegeNameA(0, &tp->Privileges[i].Luid, name, &name_size);
PRIVILEGE_SET ps = {
1, PRIVILEGE_SET_ALL_NECESSARY, {
{ { tp->Privileges[i].Luid.LowPart, tp->Privileges[i].Luid.HighPart } }
}
};
BOOL fResult;
PrivilegeCheck(hToken, &ps, &fResult);
printf("%-*s %s\n", 32, name, fResult ? "Enabled" : "Disabled");
}
}
free(tp);
}
}
int disable_all_privileges(DWORD pid)
{
int ret = 1;
const HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, TRUE, pid);
if (hProcess) {
HANDLE hToken;
if (OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
ULONG return_length;
TOKEN_LINKED_TOKEN tlk;
puts("\nBefore:");
print_privileges(hToken); /* Disable all privileges. */
if (AdjustTokenPrivileges(hToken, TRUE, 0, 0, 0, 0) || GetLastError() != NOERROR) {
puts("\nAfter:");
print_privileges(hToken);
ret = 0;
}
CloseHandle(hToken);
}
}
return ret;
} void print_process_info(DWORD pid)
{
const HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hSnapshot != INVALID_HANDLE_VALUE) {
PROCESSENTRY32 pe32 = { pe32.dwSize = sizeof pe32 };
BOOL ok;
for (ok = Process32First(hSnapshot, &pe32); ok; ok = Process32Next(hSnapshot, &pe32))
if (pe32.th32ProcessID == pid) {
puts("Process info:");
printf("dwSize: %lu\n", pe32.dwSize);
printf("th32ProcessID: %lu\n", pe32.th32ProcessID);
printf("cntThreads: %lu\n", pe32.cntThreads);
printf("th32ParentProcessID: %lu\n", pe32.th32ParentProcessID);
printf("pcPriClassBase: %ld\n", pe32.pcPriClassBase);
wprintf(L"szExeFile: %s\n", pe32.szExeFile);
break;
}
CloseHandle(hSnapshot);
}
} int main(int argc, char* argv[])
{
int ret = 1;
if (argc > 1) {
DWORD pid;
if (sscanf_s(argv[1], "%u", &pid) == 1) {
print_process_info(pid);
ret = disable_all_privileges(pid);
}
}
return ret;
}
最后在cmd输入上面代码编译生成的exe可执行文件和cmd.exe的pid。 如果成功,将看到当前cmd的所有权限都被disable。那么你在cmd中运行其他exe后,将没有任何权限。
win32 - 在cmd中禁用进程权限的更多相关文章
- mysql 5.7中的用户权限分配相关解读!
这篇文章主要介绍了MySQL中基本的用户和权限管理方法,包括各个权限所能操作的事务以及操作权限的一些常用命令语句,是MySQL入门学习中的基础知识,需要的朋友可以参考下 一.简介 各大帖子及文章都会讲 ...
- 解决vista和win7在windows服务中交互桌面权限问题:穿透Session 0 隔离
在某国外大型汽车公司BI项目中,有一个子项目,需要通过大屏幕展示销售报表,程序需要自动启动和关闭.开发人员在开发过程中,发现在Win7的service中不能直接操作UI进程,调查过程中,发现如 ...
- Windows下提升进程权限
windows的每个用户登录系统后,系统会产生一个访问令牌(access token) ,其中关联了当前用户的权限信息,用户登录后创建的每一个进程都含有用户access token的拷贝,当进程试图执 ...
- 获取系统中所有进程&线程信息
读书笔记--[计算机病毒解密与对抗] 目录: 遍历进程&线程程序 终止进程 获取进程信息 获取进程内模块信息 获取进程命令行参数 代码运行环境:Win7 x64 VS2012 Update3 ...
- .NET中提升UAC权限的方法总结
[题外话] 从Vista开始,由于增加了UAC(用户账户控制,User Account Control)功能,使得管理员用户平时不再拥有能控制所有功能的管理员权限了,所以在调用很多比较重要的功能时需要 ...
- 在Winform程序中设置管理员权限及为用户组添加写入权限
在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行程序具有管理员权限或者设置运行程序的目录具有写入的权限,如果是在操作系统里面,我们可以设置运行程序以管理员身 ...
- phpcms中的RBAC权限系统
PHPCMS中的RBAC权限系统主要用到了4张数据表:管理员表,角色表,菜单表,菜单权限表.先来看看数据库的数据表结构: admin 管理员表 ID 字段 类型 Null 默认 索引 额外 注释 1 ...
- linux 中更改用户权限和用户组的命令chmod,chgrp实例
linux 中更改用户权限和用户组的命令实例; 增加权限给当前用户 chmod +wx filename chmod -R 777 /upload 用户组 chgrp -R foldname zdz ...
- linux下进程权限分析
转自http://blog.chinaunix.net/uid-27105712-id-3349522.html 在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知 ...
- (转)在Winform程序中设置管理员权限及为用户组添加写入权限
本文转载自:http://www.cnblogs.com/wuhuacong/p/5645172.html 在我们一些Winform程序中,往往需要具有一些特殊的权限才能操作系统文件,我们可以设置运行 ...
随机推荐
- [转帖]jmeter之foreach循环控制器-03篇
上篇我们通过正则表达式获取到了一组数据,那么怎么来用呢?下面就用foreach控制器来使用结果,如下图所示 然后再foreach控制器里添加要循环的请求,我们模拟百度搜索,value填入${id} 然 ...
- [转帖]Systemd 指令
一.由来 历史上,Linux 的启动一直采用init进程. 下面的命令用来启动服务. $ sudo /etc/init.d/apache2 start # 或者 $ service apache2 s ...
- 【转贴】java 进程运行状态图解
java 进程运行状态图解 原文博客地址 https://www.cnblogs.com/GooPolaris/p/8079490.html java中进程的状态有 6 种: NEW(新建).RU ...
- 隐私集合求交(PSI)协议研究综述
摘要 隐私集合求交(PSI)是安全多方计算(MPC)中的一种密码学技术,它允许参与计算的双方,在不获取对方额外信息(除交集外的其它信息)的基础上,计算出双方数据的交集.隐私集合求交在数据共享,广告转化 ...
- js加减乘除运算出现精度丢失
做乘法运算出现精度丢失 let aa= 2106.49 console.log( aa*10000 ) //21064899.999999996 console.log( Math.round(aa* ...
- flutter项目目录介绍
1 flutter项目目录介绍 android 安卓平台的的相关代理 build 编译后的 ios ios 平台的的相关代理 lib 自己写代码的目录 包好自己的代码 资源 test 放测试文件的 p ...
- vue数据不响应,可能是用法有问题
<template> <div> <div> <span>用户名: {{ userInfo.name }}</span> <span& ...
- C/C++ BeaEngine 反汇编引擎
反汇编引擎有很多,这个引擎没有Dll,是纯静态链接库,适合r3-r0环境,你可以将其编译为DLL文件,驱动强制注入到游戏进程中,让其快速反汇编,读取出反汇编代码并保存为txt文本,本地分析. 地址:h ...
- axios请求失败,获取接口返回错误信息
一般vue项目都会对axios进行封装,后台统一规范默认让服务器对所有请求都返回成功,然后在成功的对象里面包装一层对象result,里面也包含code,msg,result信息,前端拿这个result ...
- Visual Basic 6的安装与辅助插件 - 初学者系列 - 学习者系列文章
好久没玩VB6了,今天无聊,就把原来的VB6相关的代码翻了出来,然后上了VMWare虚拟机,把VB6安装上,然后把架构设计那个模板找出来完善了一下.看了一下,VB6这块需要记录一些内容,于是有了本文. ...