.Net 加密原理,加密壳核心的兼容性以及安全性讨论(六)

简介: 前面我们介绍了目前主流的双层加密壳核心实现原理, 同时提到了应对兼容性,同时考虑安全性的前提下对加密壳核心进行简化。 今回主要讨论一下安全性、兼容性需要注意哪些因素。 关于安全性,主要应对两类破解者。

前面我们介绍了目前主流的双层加密壳核心实现原理,
同时提到了应对兼容性,同时考虑安全性的前提下对加密壳核心进行简化。
今回主要讨论一下安全性、兼容性需要注意哪些因素。

关于安全性,主要应对两类破解者
1、静态分析脱壳
对于这一类,行之有效的方法就是增加加密算法的数量和复杂度。
加密壳核心的实现方式对其影响可忽略。

2、动态框架核心层拦截
对于这一类有两种防范,一是针对框架核心层进行检测,对Hook进行反制。
二是构造合理的加密壳核心模式,将核心数据局限在加密壳运行库范围内,
使破解者在加密壳运行库范围外拦截不到全部所需的信息。

关于兼容性,主要有两类
1、对未知框架环境的兼容
因为不同框架核心中各个函数的物理地址可能不一样,这就是兼容的最大麻烦,
所以尽可能少的hook框架核心函数能增加对未知框架的兼容性。

2、和其它加密壳并存的兼容性问题
这种情况比较少见,但也是不容忽视的。

如:某.Net中间件厂商使用A加密了其产品,另一家软件公司使用了该中间件,而这家公司又要使用B加密自己的产品。
这时就出现了一个软件环境中出现两种加密壳核心的情况。
不过这种情况基本上可以不用太多顾虑,一般这两家公司之间可以协调解决。

但是另外一种情况就比较难办了:
Web应用在虚拟主机上的问题,如果在同一虚拟主机上部署两种不同加密壳加密的web应用,也同样要面临这个问题。

怎么处理这个问题
在安全性方面对框架进行检测,反制拦截破解者,这样将对第2个兼容性产生问题。

所以理想的方案是使用第二种构造合理加密壳核心来加强安全性,这样不会对兼容性造成负面影响。
当然,如果你决定不考虑和其它加密壳的兼容性问题也就不用理会这个问题了。

撇开兼容性的第二条,我们来看看第一条。
麻烦的根源是函数地址的未知性,尤其是对于mscorwks.dll中的函数地址,没有任何参考点。
唯一的兼容方法就是模糊搜索,所以尽量减少对mscorwks.dll中的hook能在一定曾度上提高兼容性。

mscorjit.dll中的函数比较容易准确确定,因为它又一个入口函数地址可以直接获取到,
然后顺藤摸瓜就能把下级函数地址获取到,当然这需要一个小型的反汇编引擎。搜索1到3层基本上是没啥问题的了。

结论:mscorwks.dll是双层加密壳兼容性的瓶颈所在。

前面提到对框架进行检测,会影响兼容性,其实,这种方法对安全性的提高并没有多大的实质性帮助。
主要原因,加密壳要考虑兼容性(兼容未知框架)以及程序效率,所以不可能对框架进行全面检测,检测范围有限,同时因为hook方式的多样性,检测成功率也比较低。
对付一些初级用户也许能收到一点效果。

那么怎么办呢
下回我们将介绍加密壳核心兼容性和安全性共赢的实现模式,纯Jit层核心的实现。

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 网络架构
【CVPR2017】AOD-Net:端到端的除雾网络(原理&实操)
【CVPR2017】AOD-Net:端到端的除雾网络(原理&实操)
1038 0
【CVPR2017】AOD-Net:端到端的除雾网络(原理&实操)
|
2月前
|
存储 移动开发 安全
Flutter加固原理及加密处理
Flutter加固原理及加密处理
74 0
|
2月前
|
安全 数据安全/隐私保护 Python
【计算巢】端到端加密通信:保障即时通讯的安全性
【5月更文挑战第31天】端到端加密通信确保了信息在传输过程中的安全,防止他人窥探和篡改。只有通信双方能解密消息,类似使用只有两人才能打开的锁。通过一个简单的Python加密代码示例展示了加密原理。理解并掌握端到端加密对于保护个人及企业信息安全至关重要。在信息时代,注重隐私和安全,利用加密技术保障通信安全。
|
2月前
|
存储 安全 算法
无线加密技术的种类、工作原理
【4月更文挑战第22天】
113 0
|
1月前
|
监控 安全 网络安全
探讨网站加密访问的安全性问题:HTTPS的防护与挑战
**探讨HTTPS在网站加密中的角色,提供数据加密和身份验证,防范中间人攻击。心脏滴血漏洞示例显示持续维护的必要性。面临证书管理、性能影响和高级攻击挑战,应对措施包括更新、HSTS策略及用户教育。HTTPS是安全基础,但需不断优化以应对新威胁。**
46 2
|
1月前
|
Java C# 数据安全/隐私保护
|
2月前
|
安全 网络协议 应用服务中间件
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
|
2月前
|
存储 JSON 算法
net core jwt的基本原理和实现
这篇文章介绍了.NET Core中JWT(JSON Web Token)的基本原理和实现。JWT是一种用于安全传输信息的开放标准,由头部、负载和签名三部分组成。在.NET Core中实现JWT,需要安装`Microsoft.AspNetCore.Authentication.JwtBearer`包,然后在`Startup.cs`配置JWT认证服务,包括设置密钥和验证参数。生成JWT令牌后,客户端存储并将其包含在请求头中发送给服务器进行验证和授权。JWT提供了一种无需服务器存储会话数据的安全身份验证和授权机制。
|
2月前
|
存储 安全 网络安全
C#编程的安全性与加密技术
【4月更文挑战第21天】C#在.NET框架支持下,以其面向对象和高级特性成为安全软件开发的利器。本文探讨C#在安全加密领域的应用,包括使用System.Security.Cryptography库实现加密算法,利用SSL/TLS保障网络传输安全,进行身份验证,并强调编写安全代码的重要性。实际案例涵盖在线支付、企业应用和文件加密,展示了C#在应对安全挑战的同时,不断拓展其在该领域的潜力和未来前景。
|
2月前
|
监控 安全 算法
矢量数据库安全性:数据加密与访问控制
【4月更文挑战第30天】本文探讨了矢量数据库的安全性,聚焦数据加密和访问控制。数据加密,包括选择安全、高效的算法,字段级加密及传输加密,保护敏感信息。访问控制涉及用户认证、权限管理和审计监控,确保合法用户访问。安全性的提升需要持续投入,关注新技术和安全威胁,以适应不断变化的环境。