首页
社区
课程
招聘
[求助]对vmp进行 sys驱动加壳使用的的疑惑
2023-5-12 19:51 7475

[求助]对vmp进行 sys驱动加壳使用的的疑惑

2023-5-12 19:51
7475

我写了一个sys驱动,里面使用了
VMProtectDDK.h 里的
VMProtectBegin()
VMProtectEnd()
对一个函数进行了保护,
编译后的sys 我并没有进行使用 vmp 对sys文件执行加壳
只是签名了下,发现可以 安装服务 ,
但是却在执行 CreateFileA 这一步 时候 失败了,请问是什么 导致的?

 

我又做了尝试另外一个尝试,去掉函数里使用的 VMProtectBegin() 和
VMProtectEnd(),编译后的sys驱动文件签名后,
却可以正常 执行 CreateFileA 这一步,并且正常使用驱动。

 

无论是使用 VMProtectBegin()和 VMProtectEnd() 的sys 驱动文件

 

还是不使用 VMProtectBegin() 和 VMProtectEnd() 的sys驱动文件,
2个都没有进行 使用 VMProtect.exe 对它们加壳编译,
都只是进行了数字签名,然后进行 安装,但是执行 启动 时候 却是失败的。

 

为什么没有使用 VMProtectBegin()和 VMProtectEnd() 的sys 驱动文件却能正常启动 CreateFileA 这一步,

 

而使用了VMProtectBegin()和 VMProtectEnd() 的sys 驱动文件
却不能执行CreateFileA 这一步呢

 

百思不得其解!希望大神指点下,在线等!!!!

 

我用的是 vs2022,相关lib 都设置好了,编译没有任何报错提示!


[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

收藏
点赞0
打赏
分享
最新回复 (8)
雪    币: 2415
活跃值: (9240)
能力值: ( LV13,RANK:385 )
在线值:
发帖
回帖
粉丝
TkBinary 5 2023-5-12 19:57
2
0
文件被破坏了吧. 这个参考下VMP的 代码实现. 猜测大概率就是下个标记.你使用VMP加壳软件加壳的时候他会找到这块标记.然后修复. 修复完你再签名就能用了. 
雪    币: 126
活跃值: (907)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
我的研究 2023-5-12 20:13
3
0
可是我还没给sys进行 VMP加壳软件加壳,只是sys源码里一个函数 引用了  VMProtectBegin()和 VMProtectEnd() 

vs2019编译出来的驱动文件sys ,也会被破坏吗?

我先试试你说的,给使用的 VMProtectBegin()和 VMProtectEnd()  的sys 执行vmp软件加壳 后签名试试,看驱动加载 工具,安装后 能不能 启动 成功这步
雪    币: 126
活跃值: (907)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
我的研究 2023-5-12 20:13
4
0
TkBinary 文件被破坏了吧. 这个参考下VMP的 代码实现. 猜测大概率就是下个标记.你使用VMP加壳软件加壳的时候他会找到这块标记.然后修复. 修复完你再签名就能用了.
可是我还没给sys进行 VMP加壳软件加壳,只是sys源码里一个函数 引用了  VMProtectBegin()和 VMProtectEnd() 

vs2019编译出来的驱动文件sys ,也会被破坏吗?

我先试试你说的,给使用的 VMProtectBegin()和 VMProtectEnd()  的sys 执行vmp软件加壳 后签名试试,看驱动加载 工具,安装后 能不能 启动 成功这步
雪    币: 2448
活跃值: (1575)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
maxwudi 2023-5-13 02:55
5
0
简单理解都是PE文件,你可以弄个EXE,加入那些 后 (SDK) 看看能不能运行,一个原因。
雪    币: 13465
活跃值: (4793)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tDasm 2023-5-13 09:15
6
0
用IDA反汇编,看一下代码不就明白了?
雪    币: 9506
活跃值: (4413)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
lononan 2023-5-13 17:45
7
0

雪    币: 2415
活跃值: (9240)
能力值: ( LV13,RANK:385 )
在线值:
发帖
回帖
粉丝
TkBinary 5 2023-5-15 10:19
8
0
我的研究 可是我还没给sys进行 VMP加壳软件加壳,只是sys源码里一个函数 引用了 VMProtectBegin()和 VMProtectEnd() vs2019编译出来的驱动文件sys ,也会被 ...
我的猜想是. 你使用了它的库.  在使用 vmpbegin() 和 end()的时候. 在那个位置定义了一段自定义的代码.此代码可以理解为就是字节码.不能被执行的. 自己的一个标记. 但是你编译是可以正常编译的. 运行的时候不符合PE文件(类似损坏) 当你用它的加壳软件加壳的时候.它会读取自己的标记位置.然后删除标记.并且把你 begin()和end()的这块代码给vmp了. 详情原理需要自己反汇编看看文件. 在你引入begin()的位置.
雪    币: 405
活跃值: (1900)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
wowocock 1 2023-5-16 11:40
9
0
用了SDK,在没有加壳得情况下,你导入了他的SYS,而他的sys 没签名,所以加载不了,不过你可以把他的驱动拷贝到当前目录,或者SYSTEM DRIVER目录下,系统启动的时候选择禁止签名加载。
游客
登录 | 注册 方可回帖
返回