天马阁

 找回密码
 立即注册
                                        →→→→→→→→→→→→ 1点击查看所有VIP教程目录长列表(总教程数269个) 2办理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实现原理及防护思路 30课完结
64驱?封? 9 64反驱? 10 64位V? 11 绝? 12 ???课?
13 64透 ? 14 64U ? 15 64Q ? 16 64功 ?
17 64U ? 18 64模 ? 19 64多 ? 20 64网 ?
21 64注 ? 22 64火 ? 23 64棋 ? 24 64自二链L?
25 64破 ? VIP会员办理QQ: 89986068   
【请先加好友,然后到好友列表双击联系客服办理,不然可能无法接受到信息。】
27 加入2000人交流群637034024 3 28 免责声明?
查看: 5087|回复: 0

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

[复制链接]

11

主题

1

回帖

14

积分

编程入门

Rank: 1

天马币
22
发表于 2024-3-1 14:16:17 | 显示全部楼层 |阅读模式
//通过进程ID号,来结束进程
NTSTATUS KillProcessByPID(HANDLE hProcess)
{
    PEPROCESS    m_process;
    NTSTATUS     status = STATUS_SUCCESS;
    KAPC_STATE   m_kapc_state;
    ULONG        m_index=0;
    BOOLEAN      m_is_valid;     
    PVOID        m_base_address=NULL;

    //分配一块只读类型的,大小为0x1000的内存块出来
    //返回值为分配内存的指针
    m_base_address=ExAllocatePoolWithTag(NonPagedPool,0x1000,'Read');   
    //初始化相关内存,未初始化的变量会被系统赋初值为0xCC
    memset(m_base_address,0xcc,0x1000);
    //如果分配内存失败
    if(m_base_address==NULL)
    {
        DbgPrint("ExAllocatePoolWithTag 函数调用失败!\n");
        return STATUS_UNSUCCESSFUL;
    }
    //得到指定进程ID的进程环境块
    status=PsLookupProcessByProcessId(hProcess,&m_process);
    //返回失败
    if(!NT_SUCCESS(status))  
    {
        DbgPrint("PsLookupProcessByProcessId 函数调用失败!\n");
        return status;
    }
    //附加当前线程到目标进程空间内
    KeStackAttachProcess (m_process,&m_kapc_state);  
    //循环遍历
    for(m_index=0;m_index<0x80000000;m_index+=0x1000)
    {
        //如果指定内存大小空间能读能写的话
        if(MmIsAddressValid((PVOID)(m_index)))
        {
            __try
            {        
                //复制m_base_address内存空间内容到m_index大小的空间
                RtlCopyMemory((PVOID)(m_index),m_base_address,0x1000);   
            }
            __except(1)
            {continue;}
        }
        else
        {
            if(m_index>0x1000000)
                break;
        }
    }
    //解除附加
    KeUnstackDetachProcess(&m_kapc_state);
    return status;
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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