代码碎片(1)
2013-03-23 00:08
239 查看
1、将进程名字转换为进程ID
2、关闭显示器
3、执行CMD命令,返回输出结果
4、进程提权
5、中国公民身份证校验算法,计算身份证最后一位校验值
6、映射文件
7、获取CPU序列号
// 将进程名字转换为进程ID, 返回非0表示成功,0表示失败 DWORD WINAPI ExeName2PID(LPCTSTR lpszExeName) { PROCESSENTRY32 pe32; pe32.dwSize = sizeof(pe32); HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(INVALID_HANDLE_VALUE != hSnapShot) { BOOL findResult; findResult = Process32First(hSnapShot, &pe32); while(findResult) { if(_tcscmp(pe32.szExeFile, lpszExeName) == 0) { CloseHandle(hSnapShot); return pe32.th32ProcessID; } findResult = Process32Next(hSnapShot, &pe32); } } CloseHandle(hSnapShot); return 0; }
2、关闭显示器
SendMessage(FindWindow(0,0), WM_SYSCOMMAND, SC_MONITORPOWER, 1);
3、执行CMD命令,返回输出结果
int CmdEcho(LPCTSTR lpszCmd, CString &strOutput) { SECURITY_ATTRIBUTES sa; HANDLE hRead,hWrite; sa.nLength = sizeof(SECURITY_ATTRIBUTES); sa.lpSecurityDescriptor = NULL; //使用系统默认的安全描述符 sa.bInheritHandle = TRUE; //创建的进程继承句柄 if (!CreatePipe(&hRead,&hWrite,&sa,0)) //创建匿名管道 { return FALSE; } STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si,sizeof(STARTUPINFO)); si.cb = sizeof(STARTUPINFO); GetStartupInfo(&si); si.hStdError = hWrite; si.hStdOutput = hWrite; //新创建进程的标准输出连在写管道一端 si.wShowWindow = SW_HIDE; //隐藏窗口 si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; char cmdline[200]; sprintf(cmdline,"cmd /C %s",lpszCmd); if (!CreateProcess(NULL,cmdline,NULL,NULL,TRUE,NULL,NULL,NULL,&si,&pi)) //创建子进程 { return FALSE; } CloseHandle(hWrite); //关闭管道句柄 char buffer[4096] = {0}; DWORD bytesRead; while (true) { if (ReadFile(hRead, buffer, 4095, &bytesRead, NULL) == NULL) //读取管道 break; strOutput += buffer; Sleep(10); } CloseHandle(hRead); return TRUE; }
4、进程提权
BOOL WINAPI AdjustPrivileges(LPCSTR lpName = SE_DEBUG_NAME, DWORD dwAttrib = SE_PRIVILEGE_ENABLED ) { HANDLE hToken; TOKEN_PRIVILEGES tkp; BOOL bResult=FALSE; //打开当前进程信令 if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken)) return bResult; //调整权限 LookupPrivilegeValue(NULL,lpName,&tkp.Privileges[0].Luid); tkp.PrivilegeCount=1; tkp.Privileges[0].Attributes = dwAttrib; //通知系统修改权限 AdjustTokenPrivileges(hToken,FALSE,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0); if(GetLastError() == ERROR_SUCCESS) bResult=TRUE; return bResult; }
5、中国公民身份证校验算法,计算身份证最后一位校验值
char GetIdCardChkSum(char* szIdCard) { if (NULL == szIdCard || strlen(szIdCard) < 17) { return 'E'; } char szVerifyMap[] = "10X98765432"; // 加权乘积求和除以11的余数所对应的校验数 char szFactor[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1}; // 加权因子 long sum = 0l; //加权乘积求和 int m = 0; // 加权乘积求和的模数 char *p = szIdCard; // 当前位置 while(*p) // 在 '\0' 之前一直成立 { sum += (*p - '0') * szFactor[p - szIdCard]; // 加权乘积求和 p++; // 当前位置增加1 } m = sum % 11; // 取模 return szVerifyMap[m]; }
6、映射文件
LPBYTE MapFile(LPCTSTR szFile, LPDWORD lpSize) { HANDLE hFile; hFile = ::CreateFile(szFile, GENERIC_READ, 0, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); if (INVALID_HANDLE_VALUE != hFile) { DWORD dwFileSize; dwFileSize = GetFileSize(hFile, NULL); if (NULL != lpSize) { *lpSize = dwFileSize; } if (dwFileSize > 0) { HANDLE hFileMapping; hFileMapping = ::CreateFileMapping(hFile, NULL, PAGE_READONLY, 0, 0, NULL); ::CloseHandle(hFile); if (NULL != hFileMapping) { LPBYTE pbFile = (PBYTE)::MapViewOfFile(hFileMapping, FILE_MAP_READ, 0, 0, 0); ::CloseHandle(hFileMapping); if (NULL != hFileMapping) { return pbFile; //::UnmapViewOfFile(pbFile); } } } } return NULL; } void UnmapFile(LPVOID lpFile) { if (NULL != lpFile) { ::UnmapViewOfFile(lpFile); } }
7、获取CPU序列号
CString GetCPUID() { CString strCpuId, strId1, strId2; ULONG s1, s2; __asm { mov eax, 01h //eax=1:取CPU序列号 xor edx, edx cpuid mov s1, edx mov s2, eax } strId1.Format("%08X%08X", s1, s2); __asm { mov eax, 03h xor ecx, ecx xor edx, edx cpuid mov s1, edx mov s2, ecx } strId2.Format("%08X%08X", s1, s2); strCpuId = strId1 + strId2; return strCpuId; }
相关文章推荐
- linux内核网络代码学习之碎片整理篇
- PYTHON代码:根据FileRecord和MAP的关系,拼接IBM V7000 精简卷碎片
- 第一代码第二版(郭霖著)笔记之第四章(探究碎片)
- 第一行代码笔记 (fragment)碎片的使用
- Scala基础入门-代码碎片
- PHPCMS V9模板中的常用变量、碎片代码详解
- phpstorm之自定义代码碎片(tab键自动填充代码)
- DUBBO代码碎片
- iPhone代码碎片:处理objective-c里html特殊字符显示问题的一个函数
- 第一行代码笔记,第四章-------探究碎片
- [翻译] 编写高性能 .NET 代码--第二章 GC -- 减少大对象堆的碎片,在某些情况下强制执行完整GC,按需压缩大对象堆,在GC前收到消息通知,使用弱引用缓存对象
- qq解析代码碎片
- (碎片代码)Button事件添加监听器
- [zhuan]自动整理索引碎片的代码
- (碎片代码)
- Jfinal开发代码碎片_导出报表_配置druid数据源_使用guava_获取当前操作系统_JDK版本_jfinal-utils_jfinal验证码
- Unity 项目中绘制血条的代码碎片
- Tarena代码-一些代码碎片
- Android代码碎片(二)
- 第二行代码学习笔记——第四章:手机平板要兼容——探究碎片