Safengine Shielden v2.3.7.0 驱动脱壳

前言:

   之前找工作的时候,注意到有个公司找windows驱动开发/逆向工程师,所以他们公司产品里面应该包含有驱动程序(呐,必须的学习一波)。首先,安装他们公司的相关产品,然后找到里面的驱动文件;一看驱动文件几百k,应该是加壳了(Safengine Shielden v2.3.7.0)。如下图:

脱壳过程:

   文件丢进ida里面发现没法看,脱壳当然是不会脱壳的。嗯,先把驱动跑起来吧。创建服务,启动服务;驱动成功跑起来了。驱动程序运行之后,对应的会有一些数据产生:1,通过winObj类似工具,可以发现在driver目录下面有一个以服务名为名称的驱动项(一个DriverObject) 2, 写过驱动程序的应该了解,DriverObject数据结构里面包含有很多数据,例如驱动名称,驱动模块地址,MajorFunction数组等;直接通过winObj查看DriverObject的资源,定位MajorFunction函数数组,惊人的发现,相关函数已经被还原了(大喜).

    既然代码已经被还原了,直接通过winDbg把相应的代码段给dump出来(.writemem 文件路径 内存起始地址 长度)。dump 文件的大小一般是原驱动文件大小的10分之一左右,如果原加壳驱动文件大小640k,实际加壳之前应该不会超过64k。

修复文件:

 dump出来的代码片段中,调用系统api的地方是加壳程序修改的,变为call 立即数等形式。不过,dump出来的文件中立即数里面保存了当前系统api的地址,然后,直接在winDbg中,输入"u api地址“,winDbg会自动识别对应的api函数名称。以上相当于修复了pe文件的导入表。

驱动利用:

 这个驱动写的就行一个马一样,太邪恶了。已知可以进行提权利用:替换进程token.如下图,在win 10 1909中:

 

 总结:

网上传闻,SE 不是强壳吗?怎么这么容易就被干了。不知道是不是加壳的人没有设置好,导致SE没有发挥应有的效果(不应该啊)。哈哈,后面分析发现该驱动逻辑写的还是可以的。

***********************************************************************************************************

后续分析发现,这个驱动应该是这样设计的,因为里面的接口都是这种模式。

在vt上的结果:

在win11 (22000. 318)上驱动无法加载,错误如下图:

2022.02.16

经测试发现,在win11上无法加载该驱动是因为开启了secure boot;如果关掉secure boot,该驱动可以被加载。(在18363,22000上测试过)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
 Safengine的代码分析引擎将在保护应用程序时提供完整的分析,从而对应用程序进行系统化的保护,将您的原始代码移动和变形,并且加入无数垃圾代码和反调试、跟踪代码。   Safengine处理的范围是整个程序,而不是程序里的某一个过程。所以,即使您的关键代码在保护后未经变形,也需要耗费破解者很长的时间才能找到,而往往只是一行两行代码,穿插在数以万计的垃圾代码中,是极其隐蔽和猥琐的。   Safengine的代码虚拟机在同类产品中最稳定、最完善,整体运行架构线程安全,不会改变系统对受保护代码的线程的调度。虚拟处理器采用了逻辑门级的指令拆分,使用与非和加法两个基础运算指令实现了大部分复杂的x86指令,并且使用了随机的虚拟寄存器参与运算,极大程度提高了代码保护的安全性。   在同类的软件保护壳中,Safengine提供了最完整的解决方案,集代码加密、虚拟化、授权于一体,并且每一项功能都可圈可点。   Safengine支持多种类型的文件格式:   所有32位PE文件,包括:   ● Win32 可执行文件 (*.exe);   ● Windows 屏幕保护程序 (*.scr);   ● 动态链接库 (*.dll);   ● 32位 ActiveX 控件 (*.ocx);   ● 32位驱动程序 (*.sys); 编辑本段代码虚拟化   Safengine提供强大的代码虚拟机保护您的程序免受逆向工程和非法修改。将您的关键代码(x86汇编形式)转换成一个新的随机指令集,只有在嵌入您程序中的虚拟机解释器才能运行。这些虚拟机代码是随机生成的,并且经过高度混淆,确保唯一性。   在虚拟化过程中,您原始代码的执行流程将被重定向,并加入逻辑混淆。虚拟后的代码将用与非(NAND)实现所有的逻辑操作,大部分数学运算也将用加法实现,使得逆向者很难分辨原始指令的功能。此外,最容易被修改并绕过的条件跳转也将被转换成虚拟机的运算代码,从而使破解者无法改变程序走向。   代码虚拟化分三步:   首先,您的代码将被完整分析,以处理器执行的方式分析分支、外部数据参考、空余寄存器、栈桢以及对EFLAGS寄存器的修改。   然后,根据分析的结果,生成一个只包含必要指令的随机指令集表,通过多态代码生成引擎生成与之对应的x86实现代码。   最后,将根据随机指令集表,结合虚拟机内部混淆、常数加密、自效验等功能,生成最终的虚拟机字节码,模拟原始代码的功能。   Safengine的虚拟机的体积可控,兼容各种运行环境,支持保护包括内核驱动在内的任意32位PE文件。 编辑本段运行时保护   传统的软件保护工具将应用程序加密存放并在执行时解密,但在原程序解密后,保护代码与程序没有关联。这类保护可以通过抓取解密后的程序内存轻松的绕过。   Safengine提供了运行时保护,并与您的程序链接在一起,使得您的程序无法离开保护代码正常运行。保护代码将动态检查您的程序内存是否被修改,如果发现修改将立即中止程序运行。同时还会实时监视系统环境,及时检测调试破解工具。 编辑本段软件授权   Safengine提供内置的授权系统,您无需修改任何代码,即可通过它控制您的软件授权。您可以通过限制运行时间、使用次数、过期日期、机器码绑定等等授权限制来控制软件试用。 Safengine使用强加密算法保证授权模块的安全,如果没有您提供的合法授权,破解这需要数年时间穷举您的软件的解密密钥。 编辑本段网络授权   在Safengine Licensor的基础上,我们推出了基于网络的授权验证平台:   Safengine NetLicensor   它由三部分组成:   ● Safengine Code Protection 软件代码保护(代码变形、虚拟化)   ● Safengine Licensor本地授权认证系统   ● Safengine NetLicensor网络授权验证   受Safengine NetLicensor保护的应用程序,在启动时会连接NetLicensor服务器,验证授权的有效性,授权限制将以服务器时间为准,确保软件试用时间的准确可控。   Safengine NetLicensor解决了几个软件授权中的难题:   1.合法授权被恶意泄露   2.客户刻意修改系统时间   3.多人共享同一个授权   4.需要即时即刻吊销授权   Safengine NetLicensor采用了广泛使用的MySQL作为数据库后台,可以轻松整合到现有的服务器系统中,NetLicensor服务端采用了高效稳定的IOCP网络层架构,并在Safengine系列产品的网络验证系统中得到了充分的测试。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值