.Net 加密原理,HVM核心的实现原理(八)

简介: 目前加密壳将核心转移到Jit层后,内核模式的强度增加空间已经很小了。目前市面上的加密壳至少有一个共同的缺陷,无法防止Jit底层截获IL字节码。 有些壳采用从周边增加强度(如 Anti Hook),由于hook的多样性再加上壳又需要考虑自己的兼容性,所以这个效果不是十分理想。

目前加密壳将核心转移到Jit层后,内核模式的强度增加空间已经很小了。目前市面上的加密壳至少有一个共同的缺陷,无法防止Jit底层截获IL字节码。

有些壳采用从周边增加强度(如 Anti Hook),由于hook的多样性再加上壳又需要考虑自己的兼容性,所以这个效果不是十分理想。
从防止脱壳入手,通过保护局部变量签名和异常处理表,来阻止方法体的脱壳还原。这样虽然不能阻止截获IL字节码,如果配合流程混淆还是能起到相对有效的保护。
这样仍然有些遗憾,能实现阻止Jit层截获完整的IL字节码就完美了。

http://www.DNGuard.Net/
DNGuard HVM 核心就是为了实现这一点——Jit层中无法截获完整正确的IL代码,它将保护的粒度从原来的"每方法体"降低到"每操作码(HVM伪代码)" 。实际原理也有不同,在Jit编译处理过程中HVM伪代码不会直接还原为IL代码,而是由HVM运行库参与编译实现直接 HVM伪代码-》本地代码。实际上就是HVM核心实现了IL代码一个子集的编译功能。

效率问题:
如果普通ILCode也需要经过HVM核心处理判断一面,是否会造成性能损失?
这个问题没有,HVM核心是利用Win32的异常处理机制动态装载的。只有HVM伪代码才会触发HVM核心的装载。在一个HVM方法编译完成之后,HVM核心会自动卸载。

HVM代码的编译相比ILCode的编译,是否会造成性能损失?
答案是肯定的,HVM提供了一个强度选项,可设置1-5.指示对ILCode进行伪代码替换的比例。
例如设置为1时,只对函数调用指令进行替换。对于函数调用指令的编译实际上是很简单的。
默认设置3,是一个实际性能损失比较小的设置,和纯加密方式相比,基本上可忽略。

 

伪代码动态性:
HVM代码是动态的,静态模式下(强度小于等于3)每个加密模块会有5+种不同方案。每个加密模块的方案各不相同。方案是由模块标识码 + 客户标识码 来动态生成的。
动态模式下,会在HVM核心中对代码进行二次处理,每个方法都会有一个动态的随机方案。
在Jit中截获的伪代码是动态随机的,各个方法中截获的伪代码没有必然的对应关系。

目录
相关文章
|
4天前
|
存储 移动开发 安全
Flutter加固原理及加密处理
Flutter加固原理及加密处理
46 0
|
4天前
|
机器学习/深度学习 算法 网络架构
【CVPR2017】AOD-Net:端到端的除雾网络(原理&实操)
【CVPR2017】AOD-Net:端到端的除雾网络(原理&实操)
590 0
【CVPR2017】AOD-Net:端到端的除雾网络(原理&实操)
|
7月前
|
算法 安全 搜索推荐
TLS 协议-对称加密原理
TLS 协议-对称加密原理
94 0
|
4天前
|
存储 安全 算法
无线加密技术的种类、工作原理
【4月更文挑战第22天】
34 0
|
4天前
|
安全 网络协议 应用服务中间件
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
一文读懂HTTPS⭐揭秘加密传输背后的原理与Nginx配置攻略
|
4天前
|
安全 网络协议 网络安全
网络原理(5)--HTTPS是如何进行加密的
网络原理(5)--HTTPS是如何进行加密的
23 0
|
4天前
|
人工智能 分布式计算 安全
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
【现代密码学】笔记1.2 -- 对称密钥加密、现代密码学的基本原则《introduction to modern cryphtography》现代密码学原理与协议
118 0
|
7月前
|
算法 网络安全 开发工具
TLS/SSL 协议-非对称加密(RSA)原理
TLS/SSL 协议-非对称加密(RSA)原理
156 0
|
4天前
|
存储 移动开发 安全
Flutter加固原理及加密处理
Flutter加固原理及加密处理
68 0
|
4天前
|
存储 安全 算法
HTTPS加密原理
1、单向加密 也称为不可逆加密,对明文产生一个密文,并且不能通过密文解出对应的明文 使用场景:一般用于信息摘要,密钥加密等 常见的单向加密算法有:

热门文章

最新文章