谈anti ILdasm的原理以及anit 框架API的可行性

简介: 今天收到 maxtocode 的群发邮件,提到对MaxToCode运行库兼容性进行了修正,即降低了运行库anti的强度。确实在兼容性和安全方面很难做到鱼与熊掌兼得。anti得太多,程序的兼容性就成问题。

今天收到 maxtocode 的群发邮件,提到对MaxToCode运行库兼容性进行了修正,即降低了运行库anti的强度。
确实在兼容性和安全方面很难做到鱼与熊掌兼得。anti得太多,程序的兼容性就成问题。codelib就是例子,可用性太差。

在maxtocode的邮件中仍然发现了如下两条描叙:
* 增加了对ILdasm以及使用API 访问源数据的反编译工具的反制功能
* 经测试,目前没有一种反编译工具可以完整的读取加密后的结构,更不用说加密后的代码了

其对该功能的描叙为:
*可以使微软提供的底层反编译器(ILdasm 2.0)无法工作。
*可以使引用框架API的反编译器无法工作
*但无法禁止反射的反编译程序。

其实anti ildasm这个功能最早是在 xenocode中发现的,当时是anti ildasm 1.1,这个东西应该算是Undocument的。
不过到了 net 2.0我们在 msdn文档中发现了:
“注意:此类在 .NET Framework 2.0 版中是新增的。
防止 MSIL 反汇编程序 (Ildasm.exe) 反汇编程序集。无法继承此类。
将 SuppressIldasmAttribute 属性应用于程序集或模块可防止使用 MSIL 反汇编程序 (Ildasm.exe) 反汇编程序集或模块。
此属性不防止使用反射查看程序集。
注意,SuppressIldasmAttribute 属性不阻止 MSIL 反汇编程序 (Ildasm.exe) 查看标头信息和元信息。 ”

anti ildasm的原理其实很简单maxtocode作者在分析xenocode时就介绍过了,基于一个“君子协定”,即ildasm会检查一个标记,如果发现了这个标记就会说是受保护的模块,不能编译。

谈谈ILDasm的功能限制与解除

By aiasted
From
http://www.cnblogs.com/aiasted/archive/2005/05/05/149639.html
OK,分析一下吧:经过短暂的分析,让我出了一身汗。。。这样的版权保护有还不如无,一定误导了很多朋友
这已经很明显了,ILDasm只用了一个标志去阻止"已有版权"的程序集,而您只需要修改一个机器指令就可以畅通无阻的反编译任何程序集,并修改其内容再次编译。

只是1.1时代这个标记是Undocument的,在2.0里面已经是document的了。可以肯定maxtocode能如其介绍的那样anti ildasm 2.0。
根据这个原理,我们只要patch ildasm修改其中的一个跳转就能让它继续工作了。实际上已经有人完成了这些工作。

ildasm是使用 框架 API的反编译工具。那么anti了ildasm 是否就等于 anti 了 框架 api?
我们只需要修改ildasm不让他判断那个标记,他就能正常工作了,显然框架 api仍然可以正常使用。
而第三方使用框架api的反编译工具是不会去判断那个标记的,也就是说它们不需要被patch就可以正常工作。

那么 anit 框架API 是否可行?
不过这个基本是不现实的,除非自己实现.Net的执行引擎或者今后.Net执行引擎有什么变化。
为什么呢?因为目前.Net的执行引擎也是使用的 框架 api。如果真的anti 了框架api,那么.Net执行引擎也不能幸免。

很显然目前来说框架api成了一个绿色通道,使用框架api的反编译工具是能够看到程序的完整结构的。如 修改版的ildasm,dis#等。


刚才又上maxtocode官方网站看了网页上仍然有这些信息。
如果说之前是无意误导,那么现在是不是故意误导呢?

目录
相关文章
|
13天前
|
API 数据库 数据安全/隐私保护
利用Django框架构建高效后端API服务
本文将介绍如何利用Django框架构建高效的后端API服务。通过深入分析Django框架的特性和优势,结合实际案例,探讨了如何利用Django提供的强大功能来构建高性能、可扩展的后端服务。同时,还对Django框架在后端开发中的一些常见问题进行了解决方案的探讨,并提出了一些建设性的建议。
80 3
|
4天前
|
安全 算法 Java
Java Stream API:原理、应用与深入解析
Java Stream API:原理、应用与深入解析
|
8天前
|
缓存 API 数据库
构建高效Python Web应用:Flask框架与RESTful API设计原则
【5月更文挑战第20天】 在现代Web开发中,构建一个轻量级且高效的后端服务至关重要。本文将深入探讨如何使用Python的Flask框架结合RESTful API设计原则来创建可扩展和易于维护的Web应用程序。我们将通过分析Flask的核心特性,以及如何利用它来实现资源的合理划分、接口的版本控制和请求处理优化等,来指导读者打造高性能的API服务。文中不仅提供了理论指导,还包括了实践案例,旨在帮助开发者提升开发效率,并增强应用的稳定性和用户体验。
Qt 窗口常用位置API函数 & 绘图原理 & 双缓冲机制 总结
Qt 窗口常用位置API函数 & 绘图原理 & 双缓冲机制 总结
|
13天前
|
安全 Java API
Spring工厂API与原理
Spring工厂API与原理
37 10
|
13天前
|
Java 测试技术 API
Python的api自动测试选择合适的测试框架
【4月更文挑战第18天】在Python API自动测试中,选择合适的框架至关重要。常见的测试工具有unittest(集成度高,适合基础测试)、pytest(功能强大,支持插件扩展和高级功能)、requests-mock(用于HTTP请求模拟和断言)、rest-assured(针对RESTful API的简洁测试)以及allure-pytest(生成美观的测试报告)。选择时要考虑项目需求、团队熟悉度和社区支持。确保遵循良好测试实践,编写清晰、全面的测试用例。
21 2
|
13天前
|
XML JSON API
api接口的使用原理是什么?
总之,API接口的使用原理基于协议、规范和约定,允许不同的应用程序或系统之间进行通信和交互。这种通信方式使得开发人员能够轻松地利用外部服务或资源,从而实现更丰富的功能和服务。
17 0
|
13天前
|
XML JSON API
深入了解API:详解应用程序接口的作用和原理
在现代软件开发领域中,API(Application Programming Interface,应用程序接口)扮演着至关重要的角色。无论是在Web开发、移动应用还是大型软件系统中,API都是不可或缺的组成部分。本文将深入探讨API的作用和原理,帮助读者更好地理解和应用API
|
13天前
|
JavaScript 前端开发 API
如何利用Python的Flask框架与Vue.js创建RESTful API服务
【4月更文挑战第10天】本文介绍了如何使用Flask和Vue.js创建一个前后端分离的RESTful API服务。Flask作为后端框架,负责提供CRUD操作,与SQLite数据库交互;Vue.js作为前端框架,构建用户界面并利用axios库与后端API通信。通过示例代码,展示了Flask设置路由处理用户数据以及Vue组件如何调用API获取和操作数据。此基础结构为构建更复杂的Web应用提供了起点。
|
13天前
|
JSON Java API
Springboot项目中如何设计一个规范的统一的Restful API 响应框架?
Springboot项目中如何设计一个规范的统一的Restful API 响应框架?
29 1

热门文章

最新文章