破解C#反编译软件Reflector 11.1.0.2167(最新版)(附补丁下载)
本文为原创作品,转载请注明出处,作者:Chris.xisaer E-mail:69920579@qq.com
QQ群3244694
补丁下载地址:https://download.csdn.net/download/xsdn123/71921978
https://github.com/hansiyuan1983/Reflector-path/releases
程序下载地址:
官方下载:
.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.如果需要交流技术的可以加本人的QQ群3244694(确实很LOW但是没办法咱们国家的特色),我看现在网上很多的教程只是教你123,但是不教你为什么写123,希望能懂我意思。
转入正题!!
估计能看到这篇文章的人 因该知道什么是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
————————————————
版权声明:本文为CSDN博主「xsdn」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xsdn123/article/details/122171076
破解C#反编译软件Reflector 11.1.0.2167(最新版)(附补丁下载)的更多相关文章
- 专注于C#.Net WPF软件开发-软件反编译-软件破解-逆向-靖芯科技-包括安卓APK反编译
靖芯科技提供.Net软件开发,软件修改定制二次开发,软件破解,反编译,逆向等各项优质服务: 包括安卓APK软件反编译. 包括但不限于C#,WPF,Surface,Winform,Asp.net.JAV ...
- 如何保护.net中的dll文件(防破解、反编译)
如何保护.net中的dll文件(防破解.反编译) 2010-07-19 15:08 [小 大] 来源: 赛迪网 评论: 0 分享至: 百度权重查询 词库网 网站监控 服务器监控 SEO监控 ...
- .NET反编译之Reflector
.NET反编译之Reflector 这几日由于公司需要, 看了些.NET反编译技巧,特地和大家分享下 .NET反编译工具很多,Reflector是其中一个很优秀的工具,所以就用它来进行反编译工作了.今 ...
- net破解一(反编译,反混淆-剥壳,工具推荐)
net破解一(反编译,反混淆-剥壳,工具推荐) 大家好,前段时间做数据分析,需要解析对方数据,而数据文件是对方公司内部的生成方式,完全不知道它是怎么生成的. 不过还好能拿到客户端(正好是C#开发)所以 ...
- dnSpy 强大的.Net反编译软件
作者:D.泡沫 一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dotPeek等等.而dnSpy同样是一款优秀的反编译软件,同时它是开源免费的.官方的描述是: dnSpy ...
- .Net反编译软件
.Net反编译软件 https://www.cnblogs.com/xiandnc/p/10132491.html 一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dot ...
- ILSpy反编译软件的使用
早期.Net平台下的反编译软件一般用reflector,但自从其商业化后就没有使用了,现在主要用ILSpy查看dll的源码,其开源.免费的特点很快就流行开来,功能和性能丝毫不逊于reflector ...
- (转)dnSpy 强大的.Net反编译软件
目录 1. Debug外部引用的Dll文件2. 调试应用程序3. 修改exe文件的内容 作者:D.泡沫 一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dotPeek等等 ...
- .NET反编译工具 .net Reflector_8.3.0.95 下载激活
在网上找了很久,很多地方都没有注册机,终于机缘巧合下找到了这个有注册机的反编译工具,放于百度网盘,供大家下载 里面有包含如何破解,不过此处也多做一次解释: 注:1.记得断开网络 2.至于杀毒软件,我没 ...
随机推荐
- Vue3项目搭建规范
Vue3项目搭建规范 一. 代码规范 1.1 集成editorconfig配置 EditorConfig有助于为不同IDE编辑器上维护一致的编码风格 安装插件:EditorConfig for VS ...
- 11 — springboot集成swagger — 更新完毕
1.前言 理论知识滤过,自行百度百科swagger是什么 2.导入依赖 <!-- swagger所需要的依赖--> <dependency> <groupId>io ...
- Spark(二)【sc.textfile的分区策略源码分析】
sparkcontext.textFile()返回的是HadoopRDD! 关于HadoopRDD的官方介绍,使用的是旧版的hadoop api ctrl+F12搜索 HadoopRDD的getPar ...
- Oracle中的加解密函数
对Oracle内部数据的加密,可以简单得使用DBMS_CRYPTO来进行,效果还是不错的,而且使用也比较方便,所以今天专门来学习一下这个包的使用方法.在使用之前,要注意两件事情: 1.DBMS_CRY ...
- Linux磁盘与文件系统原理
这一章主要是原理性的,介绍了Linux文件系统的运作原理.涉及到很多计算机组成和操作系统的原理性知识,这部分知识很多都忘了,在这里复习下. 我们只看本章第1,2节.--------------- ...
- Linux:$?,$n,$#,$0
$? 获取执行上一个指令的返回值(0为成功,非零为失败) $n 获取当前执行的shell脚本的第n个参数值,n=1...9,当n=0的时表示脚本的文件名,如果n大于9,大括号括起来${10} $# 获 ...
- Why is the size of an empty class not zero in C++?
Predict the output of the following program? 1 #include<iostream> 2 using namespace std; 3 4 c ...
- Mysql中replace与replace into的用法讲解
Mysql replace与replace into都是经常会用到的功能:replace其实是做了一次update操作,而不是先delete再insert:而replace into其实与insert ...
- bootstrapTable频繁向后台接口发请求
当bootstrapTable出现这样的问题,是因为查询到的数据行数为空,而后台返回的总行数又不为0时,就会疯狂地往接口发请求
- Pycharm, 添加requirements.txt
引用:https://www.jetbrains.com/help/pycharm/managing-dependencies.html 1) 2) 3)