摘要:
1.什么是Access TokenAccess Token用来标识一个用户,其中包括用户的SID和用户所属组的SID,还包括这个用户和所属用户组的所拥有的权限列表。当用户输入用户名和密码登陆到Windows之后,Windows会创建一个Acess Token,用来标识这个用户。在这个用户下创建的进程都将得到一份这个Access Token的备份。当进程需要访问一个可以加密的对象(如文件,事件等)时,windows利用这个Access Token来跟对象的Security Descriptor进行比较,以确认这个进程是否有权限来访问这个对象。(关于SID和Security Descriptor请 阅读全文
摘要:
1,一个session中可以拥有多个winstation,一个winstation必然属于某个session,且无法更换。2,所有winstation的函数,包括OpenWindowStation,CreateWindowStation,EnumWindowStations等等,均仅限于调用Process的primary token的session。3,一个process仅对应一个session,也即其primary token的session。更简单的方法是ProcessIdToSessionId。当然也可以通过查询primary token的方法获得。一个process的thread可以拥 阅读全文
摘要:
用法: prog.exe address1:port1 address2:port2程序将从本地端口的port1接收的数据发往 address1:port1, 同时address1:port1发出的数据将转发会原始的发送者。#ifndef __WIN32__#include<time.h>#include<errno.h>#include<fcntl.h>#include<unistd.h>#include<signal.h>#include<sys/types.h>#include<netinet/in.h> 阅读全文
摘要:
#include<stdio.h>#include<assert.h>#include<windows.h>#defineLOCK_READ0#defineLOCK_WRITE1classrwlock{public:rwlock();~rwlock();public:voidlock(intdirect);voidunlock(intdirect);voidlock_exclusive(void);voidunlock_exclusive(void);voidwrlock(){lock(LOCK_WRITE);}voidwrunlock(){unlock(L 阅读全文
摘要:
HANDLE hToken;TOKEN_PRIVILEGES tkp;OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken);tkp.PrivilegeCount=1;tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);AdjustTokenPrivileges(hToken,FALSE,& 阅读全文
摘要:
1、对于CJK(多字节编码)的环境(泰文,日文,韩文,中文),CP_ACP与CP_OEMCP没有区别。2、对于非 CJK(单字节编码)的环境这两个代码页不同1)对应的实际代码页不同,例如English-US的环境,ACP对应1252,OEMCP而437。2)一个字节能表示的数值范围是(0-255),对于小于128的编码,437和1252对应的字符是一样的。3)对于大于128的编码,是不一样的,有可能有些OEM字符(大于128的编码)在437中不存在,有些ASCII(大于128的编码)字符在1252中不存在。4)相同的编码,对应的字符有可能不同。5)同理,相同的字符对应的编码有可能不同。3、wi 阅读全文