1.C++编写的源译DLL如何加密
2.C#ç¼åçDLLå¦ä½å å¯ï¼
C++编写的DLL如何加密
c# dll 加密最快的方法使用加壳工具Virbox Protector,直接加密,码编Virbox Protectorke可以对dll进行性能分析,源译分析每个函数的码编调用次数,对每个函数选择保护方式如:混淆/虚拟化/碎片化/代码加密等;每种加密方法的源译特点是什么呢?
代码加密(X):
针对X汇编代码:一种代码自修改技术(SMC)保护代码。把当前代码加密存储为密文,码编hook 源码存储起来,源译当程序运行到被保护函数时候自动解密并且执行,码编执行之后再擦除代码,源译运行到哪里才解密哪里的码编代码,黑客无法获得原始机器指令和内存完整性的源译代码,由于是码编纯内存操作所以运行速度快, 性价高的源译保护手段,建议全加
代码加密(IL)
针对dotNet程序,码编保护IL代码:一种动态运行方法解密被保护代码。源译把当前代码加密存储为密文,存储起来,当程序运行到被保护函数时候自动解密并且执行,执行之后再擦除代码,高通源码partition执行之后再擦除代码,运行到哪里才解密哪里的代码,黑客无法获得原始的中间语言的指令和内存完整性的代码,由于是纯内存操作所以运行速度快, 性价高的保护手段,建议全加
压缩
类似zip等压缩软件把代码和数据段压缩,由于带有动态密码,没有任何工具可以自动脱壳,是如何检查源码后门防止反编译和反汇编关键手段。
代码混淆(IL):
将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,甚至改写成“__”这样的符号,使得阅读的人无法根据名字猜测其用途。
a)重写代码中的gbk源码打开乱码部分逻辑,将其变成功能上等价,但是更难理解的形式。比如将for循环改写成while循环,将循环改写成递归,精简中间变量,等等。
b) 打乱代码的格式。比如删除空格,将多行代码挤到一行中,简书ioc源码或者将一行代码断成多行等等。
c) 添加花指令,通过特殊构造的指令来使得反汇编器出错,进而干扰反编译工作的进行。
代码混淆器也会带来一些问题。主要的问题包括:· 被混淆的代码难于理解,因此调试除错也变得困难起来。开发人员通常需要保留原始的未混淆的代码用于调试。· 对于支持反射的语言,代码混淆有可能与反射发生冲突。· 代码混淆并不能真正阻止反向工程,只能增大其难度。因此,对于对安全性要求很高的场合,仅仅使用代码混淆并不能保证源代码的安全。
代码混淆的特点是安全度低、不会影响效率。
代码虚拟化:
针对X代码: 是指将机器代码翻译为机器和人都无法识别的一串伪代码字节流;在具体执行时再对这些伪代码进行一一翻译解释,逐步还原为原始代码并执行。 这段用于翻译伪代码并负责具体执行的子程序就叫作虚拟机VM(好似一个抽象的CPU)。它以一个函数的形式存在,函数的参数就是字节码的内存地址。 由于虚拟机代码和虚拟机CPU的实现可以做到每次都是随机设计和随机执行 并且代码每次可以随机变化,包括一些逻辑上的等价变化可以参考硬件N个与非门NOT-AND实现各种逻辑门,算法和访问内存形式的变化,包括数学上的非等价变化,代码体积几乎可以膨胀达到到倍,造成机器无法做算法还原到原有逻辑。
代码虚拟化的特点是:安全度中、不会影响效率。
代码碎片化:
深思自主知识产权的最新技术:基于 LLVM 和 ARM 虚拟机技术,自动抽取海量代码移入 SS 内核态模块,极大的降低了使用门槛, 不再需要手动移植算法,可移植的算法从有限的几个增长到几乎无限多,支持的语言也不再限于 C, 这是加密技术的一次综合应用,效果上类似于将软件打散执行,让破解者无从下手。
安全度高、建议关键函数或调用加密锁方法;使用太多会影响效率
C#ç¼åçDLLå¦ä½å å¯ï¼
c# dll å å¯æå¿«çæ¹æ³ä½¿ç¨å å£³å·¥å ·Virbox Protectorï¼ç´æ¥å å¯ï¼Virbox Protectorkeå¯ä»¥å¯¹dllè¿è¡æ§è½åæï¼åææ¯ä¸ªå½æ°çè°ç¨æ¬¡æ°ï¼å¯¹æ¯ä¸ªå½æ°éæ©ä¿æ¤æ¹å¼å¦ï¼æ··æ·/èæå/ç¢çå/代ç å å¯çï¼æ¯ç§å å¯æ¹æ³çç¹ç¹æ¯ä»ä¹å¢ï¼ä»£ç å å¯ï¼Xï¼ï¼
é对Xæ±ç¼ä»£ç ï¼ä¸ç§ä»£ç èªä¿®æ¹ææ¯ï¼SMCï¼ä¿æ¤ä»£ç ãæå½å代ç å å¯åå¨ä¸ºå¯æï¼åå¨èµ·æ¥ï¼å½ç¨åºè¿è¡å°è¢«ä¿æ¤å½æ°æ¶åèªå¨è§£å¯å¹¶ä¸æ§è¡ï¼æ§è¡ä¹ååæ¦é¤ä»£ç ï¼è¿è¡å°åªéæ解å¯åªéç代ç ï¼é»å®¢æ æ³è·å¾åå§æºå¨æ令åå åå®æ´æ§ç代ç ï¼ç±äºæ¯çº¯å åæä½æ以è¿è¡éåº¦å¿«ï¼ æ§ä»·é«çä¿æ¤æ段ï¼å»ºè®®å ¨å
代ç å å¯(IL)
é对dotNetç¨åºï¼ä¿æ¤IL代ç ï¼ä¸ç§å¨æè¿è¡æ¹æ³è§£å¯è¢«ä¿æ¤ä»£ç ãæå½å代ç å å¯åå¨ä¸ºå¯æï¼åå¨èµ·æ¥ï¼å½ç¨åºè¿è¡å°è¢«ä¿æ¤å½æ°æ¶åèªå¨è§£å¯å¹¶ä¸æ§è¡ï¼æ§è¡ä¹ååæ¦é¤ä»£ç ï¼æ§è¡ä¹ååæ¦é¤ä»£ç ï¼è¿è¡å°åªéæ解å¯åªéç代ç ï¼é»å®¢æ æ³è·å¾åå§çä¸é´è¯è¨çæ令åå åå®æ´æ§ç代ç ï¼ç±äºæ¯çº¯å åæä½æ以è¿è¡éåº¦å¿«ï¼ æ§ä»·é«çä¿æ¤æ段ï¼å»ºè®®å ¨å
å缩
类似zipçå缩软件æ代ç åæ°æ®æ®µå缩ï¼ç±äºå¸¦æå¨æå¯ç ï¼æ²¡æä»»ä½å·¥å ·å¯ä»¥èªå¨è±å£³ï¼æ¯é²æ¢åç¼è¯ååæ±ç¼å ³é®æ段ã
代ç æ··æ·ï¼ILï¼ï¼
å°ä»£ç ä¸çåç§å ç´ ï¼å¦åéï¼å½æ°ï¼ç±»çååæ¹åææ æä¹çååãæ¯å¦æ¹åæå个åæ¯ï¼ææ¯ç®ççæ æä¹åæ¯ç»åï¼çè³æ¹åæâ__âè¿æ ·ç符å·ï¼ä½¿å¾é 读ç人æ æ³æ ¹æ®ååçæµå ¶ç¨éã
a)éå代ç ä¸çé¨åé»è¾ï¼å°å ¶åæåè½ä¸çä»·ï¼ä½æ¯æ´é¾ç解çå½¢å¼ãæ¯å¦å°for循ç¯æ¹åæwhile循ç¯ï¼å°å¾ªç¯æ¹åæéå½ï¼ç²¾ç®ä¸é´åéï¼ççã
b) æ乱代ç çæ ¼å¼ãæ¯å¦å é¤ç©ºæ ¼ï¼å°å¤è¡ä»£ç æ¤å°ä¸è¡ä¸ï¼æè å°ä¸è¡ä»£ç ææå¤è¡ççã
c) æ·»å è±æ令ï¼éè¿ç¹æ®æé çæ令æ¥ä½¿å¾åæ±ç¼å¨åºéï¼è¿èå¹²æ°åç¼è¯å·¥ä½çè¿è¡ã
代ç æ··æ·å¨ä¹ä¼å¸¦æ¥ä¸äºé®é¢ã主è¦çé®é¢å æ¬ï¼Â· 被混æ·ç代ç é¾äºç解ï¼å æ¤è°è¯é¤éä¹åå¾å°é¾èµ·æ¥ãå¼å人åé常éè¦ä¿çåå§çæªæ··æ·ç代ç ç¨äºè°è¯ã· 对äºæ¯æåå°çè¯è¨ï¼ä»£ç æ··æ·æå¯è½ä¸åå°åçå²çªã· 代ç æ··æ·å¹¶ä¸è½çæ£é»æ¢ååå·¥ç¨ï¼åªè½å¢å¤§å ¶é¾åº¦ãå æ¤ï¼å¯¹äºå¯¹å®å ¨æ§è¦æ±å¾é«çåºåï¼ä» ä» ä½¿ç¨ä»£ç æ··æ·å¹¶ä¸è½ä¿è¯æºä»£ç çå®å ¨ã
代ç æ··æ·çç¹ç¹æ¯å®å ¨åº¦ä½ãä¸ä¼å½±åæçã
代ç èæåï¼
é对X代ç ï¼ æ¯æå°æºå¨ä»£ç ç¿»è¯ä¸ºæºå¨å人é½æ æ³è¯å«çä¸ä¸²ä¼ªä»£ç åèæµï¼å¨å ·ä½æ§è¡æ¶å对è¿äºä¼ªä»£ç è¿è¡ä¸ä¸ç¿»è¯è§£éï¼éæ¥è¿å为åå§ä»£ç 并æ§è¡ã è¿æ®µç¨äºç¿»è¯ä¼ªä»£ç 并è´è´£å ·ä½æ§è¡çåç¨åºå°±å«ä½èææºVMï¼å¥½ä¼¼ä¸ä¸ªæ½è±¡çCPUï¼ãå®ä»¥ä¸ä¸ªå½æ°çå½¢å¼åå¨ï¼å½æ°çåæ°å°±æ¯åèç çå åå°åã ç±äºèææºä»£ç åèææºCPUçå®ç°å¯ä»¥åå°æ¯æ¬¡é½æ¯éæºè®¾è®¡åéæºæ§è¡ 并ä¸ä»£ç æ¯æ¬¡å¯ä»¥éæºååï¼å æ¬ä¸äºé»è¾ä¸ççä»·ååå¯ä»¥åè硬件N个ä¸éé¨NOT-ANDå®ç°åç§é»è¾é¨ï¼ç®æ³å访é®å åå½¢å¼çååï¼å æ¬æ°å¦ä¸çéçä»·ååï¼ä»£ç ä½ç§¯å ä¹å¯ä»¥è¨èè¾¾å°å°åï¼é ææºå¨æ æ³åç®æ³è¿åå°åæé»è¾ã
代ç èæåçç¹ç¹æ¯ï¼å®å ¨åº¦ä¸ãä¸ä¼å½±åæçã
代ç ç¢çåï¼
æ·±æèªä¸»ç¥è¯äº§æçææ°ææ¯ï¼åºäº LLVM å ARM èææºææ¯ï¼èªå¨æ½åæµ·é代ç ç§»å ¥ SS å æ ¸æ模åï¼æ大çéä½äºä½¿ç¨é¨æ§ï¼ ä¸åéè¦æå¨ç§»æ¤ç®æ³ï¼å¯ç§»æ¤çç®æ³ä»æéçå 个å¢é¿å°å ä¹æ éå¤ï¼æ¯æçè¯è¨ä¹ä¸åéäº Cï¼ è¿æ¯å å¯ææ¯çä¸æ¬¡ç»¼ååºç¨ï¼ææä¸ç±»ä¼¼äºå°è½¯ä»¶ææ£æ§è¡ï¼è®©ç ´è§£è æ ä»ä¸æã
å®å ¨åº¦é«ãå»ºè®®å ³é®å½æ°æè°ç¨å å¯éæ¹æ³ï¼ä½¿ç¨å¤ªå¤ä¼å½±åæç