漏洞分析C#反编译软件Reflector 11.1.0.2167(最新版)(附补丁下载)
官方下载:
.NET Decompiler: Decompile Any .NET Code | .NET Reflector (red-gate.com)
https://www.red-gate.com/products/dotnet-development/reflector/
1.关于C#的反编译软件xx,其实非常简单。我会在下面的教程加以说明。希望有需要的同学参考技术要点,不要用于商业目的。
2.本次xx只是技术展示,不用于任何商业目的,如有需求请购买正版软件。也希望官方尽快修复漏洞。
3.本文旨在技术交流不承担任何法律连带责任!
补丁下载地址:https://github.com/hansiyuan1983/Reflector-path/releases
转入正题!!
估计能看到这篇文章的人 因该知道什么是Refector.以及它的用处。这里我就不在赘述了。
本次xx的版本是目前此程序的最新版本 11.1 trial.版。xx方式是暴力xx。如果喜欢写注册机的朋友,我下面会告诉你他的注册算法在那个文件中。你可以自己研究一下搞定他的注册机制。
先来张图没xx的时候是什么样子!
程序弹出一个模态对话框提示到期,并给出两个按钮。一个是激活一个是关闭程序。
当我们点击激活的时候会弹出输入激活KEY 和电子邮件地址的对话框。点击另一个便是直接退出程序。
下面 开搞!
既然是C#的程序 自然是通过IL 中间语言翻译器运行的程序。我们打开能反编译此类程序的软件,有很多。推荐两个,一个是微软自带的ildasm(ilasm),另外还有一个就是ILSPY。这两个你用哪个查看都可以。当然最好用的还是咱们下面要xx的这个Reflector。
我们用ILSPY打开目标软件:
我们会发现Reflector有很多的类。可能有些朋友没有学过C#(本人就是)。你就当C++看就行。我们当然要找到我们关心的类。什么是我们关心的?
这里我先说下破软件的xx法很多,比如1.找到负责激活的函数研究其算法写出相应的注册机。2.直接跳过验证程序或者更改验证结果。3.直接屏蔽此模态对话框让程序跳过检测。等等吧。因为方法太多了我这里就不一一列举的,喜欢xx的朋友们可以自己开阔思维。
那么对于这种基本直接源代码给你到眼前的代码。我们就没什么可说的了。先看看源代码里的哪些命名空间是我们需要的。
对就是这个名字空间 Licensing.从他的英文名字我们就能猜到 这是关于许可证相关的类的集合。
我们点进去看发现了几个 类。第一个BouncerParms 是保镖类的参数类。也就是负责监视我们对程序许可证做什么的类的一些参数的类。
第二个是版本信息类Edition. 这个公司在给版本信息的时候一共给了这么几个:
internal enum Edition
{
None = 0,
Standard = 1,
VS = 2,
VSPro = 3,
Evaluation = 10
}
我们现在的TRIAL 就是None=0;
但是这个是无法修改的,因为修改也没用。。。
继续往下看 EndTrialScreen类 从名字就能看出来这是构建我们试用结束对话框那类,当我们试用结束后程序会初始化这个类,并加载对话框。这个对话框是模态的 也就是说他的存在我们不能使用程序的任何功能。
好现在回到刚才的问题:我们关心什么?
我们就是关心这个对话框。我们让程序跳过调用这个类直接到下面正常程序的初始化就可以继续使用这个Reflector。
下面我们点击EndTrialScreen:
我们会看到这个类的完整定义是不是很赞?这可比反编译C的程序简单多了。
可以看到这个几个方法 Reflector.Application.Licensing.EndTrialScreen.ActivateClick
private void ActivateClick(object sender, RoutedEventArgs e)
{
TheBouncer.EnterSerialNumber(new Win32Helper
{
Handle = new WindowInteropHelper(this).Handle
});
if (TheBouncer.Licence.Activated)
{
base.DialogResult = true;
}
if (TheBouncer.IsEvaluation)
{
base.DialogResult = true;
}
}
Reflector.Application.Licensing.EndTrialScreen.CloseClick
private void CloseClick(object sender, RoutedEventArgs e)
{
Environment.Exit(-1);
}
这连个就是相关的两个按钮的 对应方法(函数);
第二个方法不用说就是退出程序。我们来看第一个方法。其中有一项条件判断:
if (TheBouncer.Licence.Activated)
{
base.DialogResult = true;
}
if (TheBouncer.IsEvaluation)
{
base.DialogResult = true;
}
当程序的需可能是激活状态的时候 对话框的值为真,当程序有评估版本值的时候对话框的值为真。注意这里的值为真并不是显示不显示对话框!
我们这里关心的就是这个Licence.Activated.方法。我们找到Licence类的对应方法中去看看!
在哪里呢?找不到啊。没在Reflector的名字空间中。这个类是一个DLL 导入类 导入的DLL 是RedGate.Licensing.Client中。
我们进入到这个命名空间中的Lisence类:
我们可以研究一下这个类 :从这些方法的名字我们可以看出相应的功能。
第一个便是刚才提到的ACTived 是一个BOOL 类型的变量 记录程序是否已经注册。
另外比较有价值的是下面这些方法!
其中CreateNewXXX函数是关于如何生成注册许可证算法的函数。有兴趣的童鞋可以看一下,我列出一个:
public static Licence CreateTamperedLicence(string machineHash, int productCode, string productName, string displayName, int majorVersion, int minorVersion, DateTime utcNow, string location)
{
Licence licence = CreateNewTrialLicence(machineHash, productCode, productName, displayName, majorVersion, minorVersion, utcNow, 0, location);
licence.Status = TrialStatus.Tampered;
if (0 == 0)
{
licence.TrialLength = 14;
}
return licence;
}
通过机器硬件的哈希数值,产品代码。产品名字 等等等弄出来的一个算法。。。是不是很复杂。。不关心了因为我们没有打算做注册机。。我们爆破。。
回到我们关心的话题,我们不希望产生那个提示对话框。我们还希望程序继续运行。。。
在调头来看一下在EndTrialScreen类下面。有个LicenceChecker类 我们进去看:
里面只有两个函数。我们只关心一个 就是 CheckLicense:
public void CheckLicense(IServiceProvider serviceProvider)
{
try
{
TheBouncer.Parms = new BouncerParms(m_MainWindow?.Icon, "Thank you for trying .NET Reflector", ".NET Reflector is a class browser, analyzer, and decompiler for .NET code.", ".NET Reflector");
if (!TheBouncer.CheckLicence(m_MainWindow, Edition.Standard, serviceProvider))
{
m_InternalApplicationManager.Exit();
}
if (TheBouncer.Licence.Activated)
{
m_ProBanner?.Close();
}
m_InternalApplicationManager.UpdateTitleBar();
}
catch (Exception exception)
{
ILog logger = LogService.GetLogger(GetType().FullName);
logger.Fatal("Error checking Licensing", exception);
Environment.Exit(71);
}
}
我们看一下 这个就很清楚了 是验证程序。当验证没有通过后 退出程序管理器。也就是退出程序。如果验证是ACTIVATED的许可证,那么关闭广告条执行程序管理器类的标题更新 并继续初始化程序。这里就是我们要更改的第一个地方 我们看一下翻译器翻译过来的语言
这里你只需要懂一点IL 语法就可以。
这里我们要修改的就是程序的25行我们把
brfalse.s ->(32)call RedGate.licensing.Client XXXXXXXXXXXXXXX_LICENCE()
修改为
brtrue.s ->(32)call RedGate.licensing.Client XXXXXXXXXXXXXXX_LICENCE()
也就是说当我们没有许可证的时候验证通过!
当然这里只改这个虽然可以用但是还是会弹出对话框,必须手动关闭对话框才能继续使用程序。
我们继续寻找需要的就是连对话框你也不要出是话直接初始正常的程序 跳过验证对话框。
我们来看这里
这就是我们开头说的要关注的哪个保镖类,他里面也有一个CHECKLICENCE 方法这个方法就是用来初始化提示我们试用已过期哪个模态对话框的,我们这里还是看他的翻译程序:
这里我就不继续说明我们怎么改了,留给童鞋们自己思考把。这里修改后我们就可以爽快的用Reflextor 。
破解后的程序:
本文为原创作品,转载请注明出处,作者:Chris.xisaer E-mail:69920579@qq.com
QQ群3244694
漏洞分析C#反编译软件Reflector 11.1.0.2167(最新版)(附补丁下载)相关推荐
- 最新.NET反编译软件Red Gate .NET Reflector V10.1.3.1218
最新.NET反编译软件Red Gate .NET Reflector V10.1.3.1218 软件是一个可以将以.NET Framework为基础开发出来的的DLL或EXE文件,反编译为原始程序的工 ...
- java decompiler 3.11_Java反编译软件(DJ Java Decompiler)下载 v3.11.11.95官方版-第五资源...
DJ Java Decompiler是一款十分实用的Java反编译软件,该软件可以将编译过的CLASS文件编译还原成为Java原始文件,并且不需要额外安装JVM(Java Virtual Machin ...
- 小程序反编译 g is not defined_身边程序用的IDA Pro for Mac(静态反编译软件)
ida pro mac版专为Mac用户设计,目前最优秀的静态反编译软件之一,这款mac安全工具它不仅可以应用在反编译和动态调试等强大的逆向工程领域,还支持对多种处理器不同类型的可执行模块进行反汇编处理 ...
- dnSpy 强大的.Net反编译软件
一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dotPeek等等.而dnSpy同样是一款优秀的反编译软件,同时它是开源免费的.官方的描述是: dnSpy是一个调试器和. ...
- .net反编译工具Reflector使用详解
早就听说Reflector这个强大的类库分析与反编译工具,不过一直没有很好的利用起来.最近使用Reflector解决了一个实际开发问题,现将其总结出来. 需求导入:项目是一个GIS项目,在项目中使用到 ...
- c#反编译软件的使用心得
C#反编译工具参照博客:https://blog.csdn.net/xiaoyong_net/article/details/80402343. 其中有工具用于脱壳和去混淆:de4dot.NETUnp ...
- 如何保护swf文件不被反编译软件破解?
How to protect SWFs from decompilers? 如何保护swf文件不被反编译软件破解? [ April 24, 2004 ] by Eric Lin 原作:EricLin ...
- 反编译软件dnSpy中修改baml文件
问题: 使用wpf的visifiref插件,但是会有水印和文本显示,想修改界面去掉文本 you are using the trial version 步骤1: 用反编译软件打开dl文件 步骤2: 搜 ...
- Window7 安装开源swf反编译软件JPEXS Free Flash Decompiler(FFdec)实录
FFdec是一个免费开源的swf反编译软件,在Windows,Linux,Mac上都能用,比那个硕思闪客精灵厚道多了,功能也不比它差,我以后就用FFdec了. 官网地址如下: http://www.f ...
- java反编器中文版,java反编译软件下载
java反编译软件是一款专为软件编码制作的反编工具,能够享有便捷的编写界面模式,享有最清晰的运行操作窗口,实现自动检测以及安全提示功能,能够实现便捷的操作方式,运行使用方便,操作简单,欢迎到当易网下载 ...
最新文章
- 2016-2017 ACM-ICPC CHINA-Final(EC-final) 题解(10 / 12)
- 末日来临,你的编程语言能干嘛? | 每日趣闻
- 平面设计要掌握的实用技巧
- python datetime模块和time模块
- RDLC系列之六 打印纸张的大小(未解决)
- mysql 秒杀 隔离级别_MySQL 四种隔离级别详解,看完吊打面试官
- numpy函数:[6]arange()详解
- c#入门经典第6版pdf百度云盘_C#入门经典第6版中文pdf_NET教程
- 推荐各类工具网站(数据可视化、词频分析、词云、PPT模板、互联网趋势分析、在线调查)
- 高校教学管理信息系统/教学管理系统
- android res文件夹下values对应最全的本地化语言
- Maven 入门学习.md
- 对于青少年编程等级考试的认识
- 小航助学答题系统编程等级考试scratch一级真题2023年3月(含题库答题软件账号)
- 微波——导引波(三)
- R语言——多元线性回归
- cannot be used as a JSX component
- 小程序导出朋友圈海报详细记录
- soap linux php 拓展,linux carry php Soap 扩展
- 为啥京东要用微信支付,刘强东打拼半辈子,却要沦为“打工仔”?