惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

量子位
S
Securelist
MyScale Blog
MyScale Blog
Jina AI
Jina AI
罗磊的独立博客
The Cloudflare Blog
美团技术团队
博客园 - 叶小钗
阮一峰的网络日志
阮一峰的网络日志
博客园 - 三生石上(FineUI控件)
月光博客
月光博客
雷峰网
雷峰网
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
大猫的无限游戏
大猫的无限游戏
博客园 - Franky
博客园 - 聂微东
Y
Y Combinator Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
T
Tailwind CSS Blog
Attack and Defense Labs
Attack and Defense Labs
博客园_首页
Latest news
Latest news
Apple Machine Learning Research
Apple Machine Learning Research
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
The Hacker News
The Hacker News
G
GRAHAM CLULEY
Simon Willison's Weblog
Simon Willison's Weblog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
U
Unit 42
D
Docker
Webroot Blog
Webroot Blog
N
Netflix TechBlog - Medium
T
Tor Project blog
C
Cyber Attacks, Cyber Crime and Cyber Security
L
LINUX DO - 最新话题
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
B
Blog
Recent Announcements
Recent Announcements
GbyAI
GbyAI
Microsoft Azure Blog
Microsoft Azure Blog
Security Latest
Security Latest
V2EX - 技术
V2EX - 技术
N
News | PayPal Newsroom
Microsoft Security Blog
Microsoft Security Blog

博客园 - Jason.NET

请不要为了自己的商业目地不择手段 DOTNET 32位下的程序在64位下真的可以运行吗? - Jason.NET - 博客园 加密狗保护的VFP软件破解 (朋友之作,代发) 使 Framework 2.0 的程序集不用安装 Framework 就可以运行的工具免费发布了 怎样给没有源代码的.net程序添加修改功能 谁不需要赚钱 -- 想,还要敢想 - Jason.NET 发布一个武汉的.net程序员招骋信息 中国软件业的混乱,观总价值2亿项目后的感叹 - Jason.NET - 博客园 刚刚收到来至 Reliasoft Corporation 的一封版权申明信 我想列出一个保护类软件的黑名单 排名和积分都大大降低了?怎么回事? Thinstall 包装 Dotnet 程序分析 一款非混淆软件 for .net 保护 各种Web脚本下,日历的实现方法 为什么浏览器有这么多标准??? QQ有漏洞??? 由浅至深 谈谈.NET混淆原理 (四) -- 反混淆(原理 + 工具篇) WEB程序员,界面美化是你心中永远的痛吗? 由浅至深 谈谈.NET混淆原理(三)-- 流程混淆(续)
由浅至深,谈谈.NET混淆原理 -- 五(MaxtoCode原理),六(其它保护方法)
Jason.NET · 2005-07-11 · via 博客园 - Jason.NET

 

新一代NET代码保护工具 MaxtoCode 的原理简介

MaxtoCode作为新一代保护工具,他有绝对优于目前所有NET代码保护工具的强度,是目前最保护强度最高的解决方案。但它也有缺点,最大的缺点即是:被加密后的程序集只能在WINDOWS平台下运行,而不能跨平台。但,MS的战略影响,几乎不可能出现官方非WINDOWS平台的NET运行环境,所以,此缺点先忽略不计,也许随着版本的升级,MaxtoCode可能会考虑跨平台的应用。

MaxtoCode为什么说是目前最强壮的NET代码保护方案呢?

如果大家是老程序员,应该知道Win32中的壳保护方案。这是一个非常好的方案,不过可惜,壳的最终较量变成了Anti debug的较量。因为壳有一个致命的弱点,即在会在内存中完全解开被加壳的程序代码,并将执行指针指向被加壳的程序代码第一行。所以,只要找到被加壳的程序代码第一行,即可以得到原来的程序。这种方式被业界叫做脱壳。

MaxtoCode 的原身不是NET语言编写,它借用了Win32的壳概念,并更优于Win32的壳概念(这也是因为NET的特点才能达到这样的程度)。MaxtoCode借助门槛更高的ASM语言,对NET代码进行加密,从而得到了更强壮的NET代码保护方案。

MaxtoCode可以理解成NET的壳,但是它是一个不容易被脱掉的壳,如果说Win32的壳是件外套,那么MaxtoCode就是皮肤。壳的特点是在内存中释放所有的代码,而MaxtoCode不会这样做。它比Win32的壳更加安全,它的安全性处决于MaxtoCode的加密算法。这正是MaxtoCode要达到的目地。因为理论上不可能有无法破解的程序,我们要的是无限提高破解成本的保护方案,来迫使破解者放弃对程序的破解。如果MaxtoCode能把破解强度建立在加密算法上,那么,MaxtoCode将能大幅度的提高保护强度。要知道,一,二种算法可能很好破解,可当有一,二十种算法、而且其中还有大量的高强度算法的变种算法,那么,想要完全解出这些算法是一件头痛的事情。最重要的是MaxtoCode还在不停的增加算法,来增加MaxtoCode的安全性。

讲了那么多废话,下面,我们来讲述一下MaxtoCode的原理:

首先先说一下CLI的解释原理:

CLI接到程序集需要解释的请求后,动态的从内存中取出一段代码(IL)然后交由CLI解释,CLI解释成机器语言,然后提交给CPU执行,在此中间,还产生大量的静态缓存。特别需要注意的是,CLI是按Method进行解释的。

正因为这样的原理,MaxtoCode则有空间将ASM引入到Method中去。

MaxtoCode的大致工作原理如下:

CLI提取MethodIL代码时,MaxtoCode提供的解释环境将MethodIL代码解密回去。

CLI提取完毕后,MaxtoCodeMethodIL代码再进行破坏,达到加密的目地

原理表:

CLI > MaxtoCode > IL > CLI > MaxtoCode > 加密

从而保证不会象原始的Win32壳一样留下代码在内存中。也保证了将NET的保护安全建立在众多的加密算法之上。

同时,由于在未被MaxtoCode解密的情况下是乱码,根本无法被静态反编译,所以不管是高级的反编译,还是低级的反编译,都无法得到一个可读或可看的程序集。

动态加、解密成本相对来说提高,所以MaxtoCode在处理结构上做了更多的优化,已经把结构处理得相当的优化,所以,在某些特写的程序上几乎感觉不到MaxtoCode的存在,而且MaxtoCode强制了NET的缓存机制,“一般加密方法”还可以提高运行速度1%~5%。重要的方法使用“高级加密方法”可以得到非常稳定的保护(这里要负责任的说一句,高级加密方法会降低运行效率,根据不同的程序产生不同的影响,最好的效果是完全感觉不到。但我们希望不要全部使用高级加密方法进行加密,而是酌情考虑使用和先测试再使用)。

―――――――――――――――我是无敌分隔线―――――――――――――――――

其它保护方法

还有一些方法,是无法使用工具去实现的,只有手工去做。

如:类折分,方法折分

一个类,写完后,手工折成上百个类

一个大方法,折成上百个子方法

别觉得这不可能哦,我可亲眼见过这样的程序,不过,从安全性来说……没多大意义,因为Reflector的功能真的太强大,只要你是能够看得见的结构,都逃不了被Reflector分析得一个透彻。

         还有一著名的保护方法:Reflector的保护方法,把自己的核心程序做成一个资源包,然后加密,当需要的时候动态加载,只要你在载入的时候够复杂,还是有一定的保护作用的。其实,这种方法的破解有更好的方法,可以只需要几分钟就可以解破。但今天它不是我们需要讲解的范围,故不详细解说了。免得某些用此方法的同志围抠我。呵呵。

好,至此,从浅到深,谈谈NET混淆原理已经讲完了,由于时间很忙,无法给出更多的例子和实战经验,所以希望大家能够举一反三,自己多演练,多研究。如果那天有那位大侠要发布反流程混淆的工具,记得给小弟我留一份,非常感谢。

posted on 2005-07-11 12:08  Jason.NET  阅读(5205)  评论()    收藏  举报