本文为原创作品,转载请注明出处,作者: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(最新版)(附补丁下载)的更多相关文章

  1. 专注于C#.Net WPF软件开发-软件反编译-软件破解-逆向-靖芯科技-包括安卓APK反编译

    靖芯科技提供.Net软件开发,软件修改定制二次开发,软件破解,反编译,逆向等各项优质服务: 包括安卓APK软件反编译. 包括但不限于C#,WPF,Surface,Winform,Asp.net.JAV ...

  2. 如何保护.net中的dll文件(防破解、反编译)

    如何保护.net中的dll文件(防破解.反编译) 2010-07-19 15:08 [小 大] 来源: 赛迪网 评论: 0 分享至:      百度权重查询 词库网 网站监控 服务器监控 SEO监控  ...

  3. .NET反编译之Reflector

    .NET反编译之Reflector 这几日由于公司需要, 看了些.NET反编译技巧,特地和大家分享下 .NET反编译工具很多,Reflector是其中一个很优秀的工具,所以就用它来进行反编译工作了.今 ...

  4. net破解一(反编译,反混淆-剥壳,工具推荐)

    net破解一(反编译,反混淆-剥壳,工具推荐) 大家好,前段时间做数据分析,需要解析对方数据,而数据文件是对方公司内部的生成方式,完全不知道它是怎么生成的. 不过还好能拿到客户端(正好是C#开发)所以 ...

  5. dnSpy 强大的.Net反编译软件

    作者:D.泡沫 一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dotPeek等等.而dnSpy同样是一款优秀的反编译软件,同时它是开源免费的.官方的描述是: dnSpy ...

  6. .Net反编译软件

    .Net反编译软件 https://www.cnblogs.com/xiandnc/p/10132491.html 一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dot ...

  7. ILSpy反编译软件的使用

    早期.Net平台下的反编译软件一般用reflector,但自从其商业化后就没有使用了,现在主要用ILSpy查看dll的源码,其开源.免费的特点很快就流行开来,功能和性能丝毫不逊于reflector   ...

  8. (转)dnSpy 强大的.Net反编译软件

    目录 1. Debug外部引用的Dll文件2. 调试应用程序3. 修改exe文件的内容 作者:D.泡沫 一说起.net的反编译软件,大家首先想到的就是Reflector,ILSpy,dotPeek等等 ...

  9. .NET反编译工具 .net Reflector_8.3.0.95 下载激活

    在网上找了很久,很多地方都没有注册机,终于机缘巧合下找到了这个有注册机的反编译工具,放于百度网盘,供大家下载 里面有包含如何破解,不过此处也多做一次解释: 注:1.记得断开网络 2.至于杀毒软件,我没 ...

随机推荐

  1. 学习java的第十六天

    一.今日收获 1.完成了手册第二章没有验证完成的例题 2.预习了第三章的算法以及for语句与if语句的用法 二.今日难题 1.验证上出现问题,没有那么仔细. 2.第二章还有没有完全理解的问题 三.明日 ...

  2. day18定时任务

    day18定时任务 什么是定时任务 类似日常生活之中的闹钟:主要用于定时执行某些命令,达到定时处理数据的作用. 作用: 1.类似生活中使用的闹钟 2.可以自动完成操作命令 3.定时备份系统数据信息 定 ...

  3. 大数据学习day34---spark14------1 redis的事务(pipeline)测试 ,2. 利用redis的pipeline实现数据统计的exactlyonce ,3 SparkStreaming中数据写入Hbase实现ExactlyOnce, 4.Spark StandAlone的执行模式,5 spark on yarn

    1 redis的事务(pipeline)测试 Redis本身对数据进行操作,单条命令是原子性的,但事务不保证原子性,且没有回滚.事务中任何命令执行失败,其余的命令仍会被执行,将Redis的多个操作放到 ...

  4. 零基础学习java------31---------共享单车案例,html快速入门(常见标签,get和post的区别)

     一 .单车案例 二. HTML快速入门 红字表示要掌握的内容 超文本标记语言,此处的标记指的即是关键字,其用处是用来写页面(展示数据). 语法:(1)./当前目录:../ 父级目录 (2)注释符号: ...

  5. 乱序拼图验证的识别并还原-puzzle-captcha

    一.前言 乱序拼图验证是一种较少见的验证码防御,市面上更多的是拖动滑块,被完美攻克的有不少,都在行为轨迹上下足了功夫,本文不讨论轨迹模拟范畴,就只针对拼图还原进行研究. 找一个市面比较普及的顶像乱序拼 ...

  6. 容器之分类与各种测试(三)——forward_list的用法

    forward_list是C++11规定的新标准单项链表,slist是g++以前的规定的单项链表 例程 #include<stdexcept> #include<string> ...

  7. C++构造函数和析构函数初步认识(2)

    构造函数的三个作用1.构造对象2.对象初始化3.类型转换  //Test1.h #include<iostream> using namespace std; //构造对象 //初始化对象 ...

  8. Kotlin 学习(1)

    本文出自链接:https://www.jianshu.com/p/ef9584a8ebf8 Kotlin的插件安装: Settings->Plugins->Browse Repositor ...

  9. mybatis-plus条件构造用is开头的Boolean类型字段时遇到的问题

    is打头的Boolean字段导致的代码生成器与lambda构造器的冲突 https://gitee.com/baomidou/mybatis-plus/issues/I171DD?_from=gite ...

  10. 【Python】【Basic】【数据类型】运算符与深浅拷贝

    运算符   1.算数运算: 2.比较运算: 3.赋值运算: 4.逻辑运算: 5.成员运算: 三元运算 三元运算(三目运算),是对简单的条件语句的缩写. # 书写格式 result = 值1 if 条件 ...