Windows内核开发:如何使用STL

前言

大家都知道应用层c++的STL非常强大,非常好用,但是在内核下就没法用了。针对这个问题,经过我不懈的寻找,终于找到了解决内核无法使用STL的方法。

使用new/delete关键字

先说一下常用关键字如何在内核中使用。其实只需要在一个全局头文件中重写这两个关键字就好了,如下:

c++ 复制代码
void * __cdecl operator new (size_t size )
{
    PAGED_CODE();
    return ExAllocatePoolWithTag(PagedPool, size, '.ppc');
}

void *__cdecl operator new[](size_t Size)
{
    PAGED_CODE();
    return ExAllocatePoolWithTag(PoolType, Size, '.ppc');
}

void __cdecl operator delete(void *Object)
{
    PAGED_CODE();
    if (Object != NULL) ExFreePoolWithTag(pObject, '.ppc');
}

void __cdecl operator delete[](void *Object)
{
    PAGED_CODE();
    if (Object != NULL) ExFreePoolWithTag(pObject, '.ppc');
}

内核中使用STL

这里需要用到一个开源库:内核下的STLPort。在visual studio 2019中打开你的项目,然后在项目属性-》VC++目录-》包含目录中输入STLPort项目中的stlport 文件夹目录。
为了更好的使用这个库,建议再引入一个第三方内核crt开源库。这个库我忘了是在哪找到的了,但我把他放到了我的github上,你可以在这里取得。

用同样的方法,加入到你的项目中。然后就可以畅快的使用STL了。

相关推荐
小白勇闯网安圈3 小时前
supersqli、web2、fileclude、Web_python_template_injection
python·网络安全·web
白帽子黑客罗哥5 小时前
零基础转行渗透测试 系统的学习流程(非常详细)
学习·网络安全·渗透测试·漏洞挖掘·护网行动
介一安全5 小时前
【Frida Android】实战篇13:企业常用非对称加密场景 Hook 教程
android·网络安全·逆向·安全性测试·frida
Suckerbin5 小时前
Gaara: 1靶场渗透
安全·web安全·网络安全
小白勇闯网安圈7 小时前
Training-WWW-Robots、command_execution、baby_web、xff_referer
网络安全·web
老王头的笔记7 小时前
Spring支持的消费器模式,支持在当前事务提交、或回滚的前、后执行业务操作
java·windows·spring
小白勇闯网安圈9 小时前
unserialize3、php_rce、Web_php_include、warmup、NewsCenter
sql·网络安全·web
专注代码七年10 小时前
Spring Boot DevTools 热部署完整配置指南
windows
bleach-10 小时前
buuctf系列解题思路祥讲--[ZJCTF 2019]NiZhuanSiWei1——文件包含漏洞和伪协议的利用
安全·web安全·网络安全·php
bleach-11 小时前
文件描述符及Linux下利用反弹shell的各种方法
linux·websocket·web安全·网络安全·系统安全·信息与通信