首页
社区
课程
招聘
[讨论]每天一个小技巧。
发表于: 2020-7-23 15:55 2349

[讨论]每天一个小技巧。

2020-7-23 15:55
2349

今天在看一套驱动源码的时候发现了俩个问题。注意是驱动源码!

1.

hooks.hpp

hooks.cpp

他用的cpp和hpp
我理解他是为了面向对象开发
可能为了省去麻烦的配置,没有使用类而是使用了命名空间来做面向对象。
不知道我这么理解有没有问题?

2.

driver.cpp

在驱动入口处,他用的

NTSTATUS DriverEntry(xxx,xxxx)

而不是

extern "C" NTSTATUS DriverEntry(xxx,xxxx)

但是这是在.cpp文件中,不知道他是怎么编译过去的希望有大佬可以指点一下


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 889
活跃值: (4118)
能力值: ( LV6,RANK:98 )
在线值:
发帖
回帖
粉丝
2
加:DriverEntry 函数 我全局搜了一下  并没有在别的地方声明。
源码在github上:https://github.com/thesecretclub/CVEAC-2020/tree/master/
2020-7-23 15:57
0
雪    币: 9626
活跃值: (1838)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
3

驱动里本来就是可以用 C++ 语法。
用命名空间可以更好的分类代码,比如 hooks::xxx 和 hooks_xxx,从本质和实际都只是命名区别。
但是部分面向对象 class 操作在驱动中需要额外手动支持,比如 new free constructor destructor 等等。
至于入口处为什么没有 extern "C",因为修改了项目配置,链接器->高级->入口点。

最后于 2020-7-23 17:47 被Sprite雪碧编辑 ,原因:
2020-7-23 17:46
0
雪    币: 889
活跃值: (4118)
能力值: ( LV6,RANK:98 )
在线值:
发帖
回帖
粉丝
4
雪碧师傅,那个链接器->高级->入口点我只找到了 修改入口函数名的地方  但是没有找到这个相关的配置~这个是否可以在具体点呢?
2020-7-23 22:55
0
雪    币: 889
活跃值: (4118)
能力值: ( LV6,RANK:98 )
在线值:
发帖
回帖
粉丝
5
Sprite雪碧 驱动里本来就是可以用 C++ 语法。用命名空间可以更好的分类代码,比如 hooks::xxx 和 hooks_ ...
雪碧师傅,那个链接器->高级->入口点我只找到了 修改入口函数名的地方  但是没有找到这个相关的配置~这个是否可以在具体点呢?
2020-7-23 22:55
0
雪    币: 9626
活跃值: (1838)
能力值: ( LV5,RANK:73 )
在线值:
发帖
回帖
粉丝
6
情话布墨 雪碧师傅,那个链接器->高级->入口点我只找到了 修改入口函数名的地方 但是没有找到这个相关的配置~这个是否可以在具体点呢?
就是函数名啊,你自己对比他 Debug 和 Release 的那项区别,你再去试试 Debug 能不能编译过。
新建的项目这里默认是 GsDriverEntry
2020-7-23 23:05
0
雪    币: 889
活跃值: (4118)
能力值: ( LV6,RANK:98 )
在线值:
发帖
回帖
粉丝
7
Sprite雪碧 就是函数名啊,你自己对比他 Debug 和 Release 的那项区别,你再去试试 Debug 能不能编译过。 新建的项目这里默认是 GsDriverEntry
好的,了解了  谢谢雪碧师傅。
2020-7-23 23:16
0
游客
登录 | 注册 方可回帖
返回
//