龙马谷

 找回密码
 立即注册

QQ登录

只需一步,快速开始

龙马谷VIP会员办理客服QQ:82926983(如果临时会话没有收到回复,请先加QQ好友再发。)
1 [已完结] GG修改器新手入门与实战教程 31课 2 [已完结] GG修改器美化修改教程 6课 3 [已完结] GG修改器Lua脚本新手入门教程 12课
4 [已完结] 触动精灵脚本新手入门必学教程 22课 5 [已完结] 手游自动化脚本入门实战教程 9课 6 [已完结] C++射击游戏方框骨骼透视与自瞄教程 27课
7 [已完结] C++零基础UE4逆向开发FPS透视自瞄教程 29课 8 [已完结] C++零基础大漠模拟器手游自动化辅助教程 22课
以下是天马阁VIP教程,本站与天马阁合作,赞助VIP可以获得天马阁对应VIP会员,名额有限! 点击进入天马阁论坛
1 [已完结] x64CE与x64dbg入门基础教程 7课 2 [已完结] x64汇编语言基础教程 16课 3 [已完结] x64辅助入门基础教程 9课
4 [已完结] C++x64内存辅助实战技术教程 149课 5 [已完结] C++x64内存检测与过检测技术教程 10课 6 [已完结] C+x64二叉树分析遍历与LUA自动登陆教程 19课
7 [已完结] C++BT功能原理与x64实战教程 29课 8 [已完结] C+FPS框透视与自瞄x64实现原理及防护思路
查看: 1869|回复: 0

C++内存清零 强制结束进程代码

[复制链接]

27

主题

1

回帖

34

积分

编程入门

Rank: 1

龙马币
64

C++内存清零 强制结束进程代码

  1. //通过进程ID号,来结束进程
  2. NTSTATUS KillProcessByPID(HANDLE hProcess)
  3. {
  4.     PEPROCESS    m_process;
  5.     NTSTATUS     status = STATUS_SUCCESS;
  6.     KAPC_STATE   m_kapc_state;
  7.     ULONG        m_index=0;
  8.     BOOLEAN      m_is_valid;     
  9.     PVOID        m_base_address=NULL;

  10.     //分配一块只读类型的,大小为0x1000的内存块出来
  11.     //返回值为分配内存的指针
  12.     m_base_address=ExAllocatePoolWithTag(NonPagedPool,0x1000,'Read');   
  13.     //初始化相关内存,未初始化的变量会被系统赋初值为0xCC
  14.     memset(m_base_address,0xcc,0x1000);
  15.     //如果分配内存失败
  16.     if(m_base_address==NULL)
  17.     {
  18.         DbgPrint("ExAllocatePoolWithTag 函数调用失败!\n");
  19.         return STATUS_UNSUCCESSFUL;
  20.     }
  21.     //得到指定进程ID的进程环境块
  22.     status=PsLookupProcessByProcessId(hProcess,&m_process);
  23.     //返回失败
  24.     if(!NT_SUCCESS(status))  
  25.     {
  26.         DbgPrint("PsLookupProcessByProcessId 函数调用失败!\n");
  27.         return status;
  28.     }
  29.     //附加当前线程到目标进程空间内
  30.     KeStackAttachProcess (m_process,&m_kapc_state);  
  31.     //循环遍历
  32.     for(m_index=0;m_index<0x80000000;m_index+=0x1000)
  33.     {
  34.         //如果指定内存大小空间能读能写的话
  35.         if(MmIsAddressValid((PVOID)(m_index)))
  36.         {
  37.             __try
  38.             {        
  39.                 //复制m_base_address内存空间内容到m_index大小的空间
  40.                 RtlCopyMemory((PVOID)(m_index),m_base_address,0x1000);   
  41.             }
  42.             __except(1)
  43.             {continue;}
  44.         }
  45.         else
  46.         {
  47.             if(m_index>0x1000000)
  48.                 break;
  49.         }
  50.     }
  51.     //解除附加
  52.     KeUnstackDetachProcess(&m_kapc_state);
  53.     return status;
  54. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

龙马谷| C/C++辅助教程| 安卓逆向安全| 论坛导航| 免责申明|Archiver|
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表龙马谷立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2018-2021 All Right Reserved.
在线客服
快速回复 返回顶部 返回列表