最近在研究AspNet Zero Core 5.0.1时发现VS点击调试后就自动退出了,从ABP QQ群里得知作者加入了licensecode校验。经过一个周左右断断续续的折腾,算是破解了吧。原本想把加密类完全反编译出来,后来发现有些方法反编译不过来,所以有些方法就直接注释掉实现了(关键方法未能反编译,比较遗憾)。

  一、说明

  二、运行效果

  三、工具软件

  四、反编译过程

  五、源码Github地址

一、说明

  如果对反编译不感兴趣的话,可以直接从github下载下来源码之后,把ABP文件下的两个工程Abp.AspNetZeroCore、Abp.AspNetZeroCore.Web编译一下拿到dll直接将AspNet Zero Core 5.0.1工程里的对应引用替换掉就可以了。

  拿到AspNet Zero Core 5.0.1源码后会发现有两个应用的dll在ABP github上是没有源码的,一个是在工程MyCompanyName.AbpZeroTemplate.Core里引用的Abp.AspNetZeroCore,另一个是在工程MyCompanyName.AbpZeroTemplate.Web.Core里引用的Abp.AspNetZeroCore.Web。分析之后做校验的代码在Abp.AspNetZeroCore这个dll中,具体方法为AbpAspNetZeroCoreModule类的PostInitialize方法中调用了另一个类AspNetZeroLicenseChecker的Check方法,破解的话直接将PostInitialize注释掉或去掉Check方法中的代码实现即可。如下图:

二、运行效果

  破解后的软件运行截图,

  服务端:

  

 前端界面:

  

三、工具软件

  反编译过程中,我使用了两个软件:

  1.Resharper套件之一,JetBrains dotPeek 2017.3.2。

2.ILSpy version 3.0.1.3459。

四、反编译过程

  4.1.找到他们

  取得源码用VS还原nuget包之后,会在系统盘目录(C:\Users\Administrator\.nuget\packages)中找到这两个dll(Abp.AspNetZeroCore.dll,Abp.AspNetZeroCore.Web.dll)。

  4.2 使用dotPeek反编译并导出工程

  将两个dll使用dotPeek反编译,然后在dotPeek的程序集管理其中,选中工程在右键菜单中选择Export to Project

  

  反编译完成之后比较尴尬的是生成工程的.net版本为.net framework 2.0,我们自己创建个.Net Standard工程然后把反编译出来的文件拷贝到创建的解决方案里就可以了。两个dll的处理方法类似。

  工程建立完之后引入到源代码里,引入之后我的工程目录结构如下所示,为了调试方便我把对ABP类库的引用都替换成了源代码工程引用:

  

     4.3  反编译Abp.AspNetZeroCore.Web.dll

  这个dll比较简单,先从简单的入手吧,这个dll中主要就反编译一个类就可以了,如下图   

  

  这个类中4,5两处没看明白有什么用途,直接删掉了;2,3两处其实就是对应类实例的属性所以ctx.set_User(authenticateResult.get_Principal())直接改为ctx.User=val.Principal,

  authenticateResult.get_Succeeded() && authenticateResult.get_Principal() != null直接改为val.Succeeded && val.Principal != null。return 语句UseExtensions.Use这块儿实际

  上是方法参数app的扩展方法。所以整段代码整理之后如下:

  

  这个dll主要反编译这一个类就可以了,其他反编译的类不需要做额外处理。

  4.4 反编译Abp.AspNetZeroCore.dll

  这个就比较费劲了,一是代码量大,二是有些代码没看懂怎么反编译,这个dll主要反编译下面两个类

  

先看AspNetZeroBaseLicenseChecker这个类,这个类是AspNetZeroLicenseChecker类的基类,拿类的构造函数当 典型说一下一些个人的经验吧,未调整的反编译代码如下:

  对照上图标记:

  1.这个特性暂未发现有什么用处,直接去掉;

  2.这个方法有对应的代码如下:

   [MethodImpl(MethodImplOptions.NoInlining)]
    internal static object iZ5hxHC38E0NlGy6Ai([In] object obj0)
    {
      return (object) ((AspNetZeroConfiguration) obj0).LicenseCode;
    }

  实际上就是获取了调用参数的一个特性,所以可以直接修改为  this.LicenseCode = configuration.LicenseCode;

  3.这个循环稍微麻烦一点,按照执行步骤一步一步走就行了,名字混淆的方法直接用方法实现替换,这种代码少的好一些,理不乱,有些很长就有点儿头疼了,这整段代码搞来搞去其实就是两句,整理后的代码如下:

        protected AspNetZeroBaseLicenseChecker(AspNetZeroConfiguration configuration, IAbpZeroConfig abpZeroConfig, string configFilePath = "")
        {
            this.LicenseCode = configuration.LicenseCode;
            this._abpZeroConfig = abpZeroConfig;
        }

  其他的方法都可以按类似方式处理。

  AspNetZeroLicenseChecker这个类反编译方法类似,但是这个类中的Check方法就搞不定了,dotPeek反编译后的代码如下:

  红色方框中圈住的部分实在搞不懂是怎么回事儿。各位园友如果有思路的话,可以提供一下。

五、源码Github地址

  反编译后的代码放到github上了,有兴趣的朋友可以下载下来研究一下,有问题欢迎留言讨论

  https://github.com/YSmileX/AspNetZeroCore

解决AspNet Zero Core 5.0.1无法运行的问题的更多相关文章

  1. 在.NET Core 1.0 RC2 上 运行 Orchard2

    http://www.freeboygirl.com/running-orchard2-cms-on-core-rc2-net

  2. AspNet Zero Core

    解决AspNet Zero Core 5.0.1无法运行的问题   最近在研究AspNet Zero Core 5.0.1时发现VS点击调试后就自动退出了,从ABP QQ群里得知作者加入了licens ...

  3. .NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介

    .NET Core 1.0.ASP.NET Core 1.0和EF Core 1.0简介 英文原文:Reintroducing .NET Core 1.0, ASP.NET Core 1.0, and ...

  4. .Net Core 2.0生态(3):ASP.NET Core 2.0 特性介绍和使用指南

    ASP.NET Core 2.0 发布日期:2017年8月14日 ASP.NET团队宣布ASP.NET Core 2.0正式发布,发布Visual Studio 2017 15.3支持ASP.NET ...

  5. ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0

    ASP.NET 5.0 将改名为 ASP.NET Core 1.0 ASP.NET MVC 6  将改名为 ASP.NET MVC Core 1.0 Entity Framework 7.0    将 ...

  6. [转帖]2016年时的新闻:ASP.NET Core 1.0、ASP.NET MVC Core 1.0和Entity Framework Core 1.0

    ASP.NET Core 1.0.ASP.NET MVC Core 1.0和Entity Framework Core 1.0 http://www.cnblogs.com/webapi/p/5673 ...

  7. Net Core 2.0生态1

    Net Core 2.0生态 阅读目录 前言:答读者问(time by:2017.8.19) 项目升级到ASP.NET Core 2.0 新增功能:Razor Pages介绍 模板更新 Entity ...

  8. ASP.NET Boilerplate 学习 AspNet Core2 浏览器缓存使用 c#基础,单线程,跨线程访问和线程带参数 wpf 禁用启用webbroswer右键菜单 EF Core 2.0使用MsSql/MySql实现DB First和Code First ASP.NET Core部署到Windows IIS QRCode.js:使用 JavaScript 生成

    ASP.NET Boilerplate 学习   1.在http://www.aspnetboilerplate.com/Templates 网站下载ABP模版 2.解压后打开解决方案,解决方案目录: ...

  9. vscode 调试.net core 2.0 输出乱码解决方法

    之前在vscode上调试.net core 2.0项目时输出窗口一直是乱码,查了很多资料无法解决 最终在github找到了解决办法 ->   https://github.com/OmniSha ...

随机推荐

  1. eclipse配置虚拟路径后,每次启动tomcat都会虚拟路径失效的问题解决

    由于,eclipse启动tomcat部署项目并不是直接把项目放到tomcat的webapps目录下的,而是从我们在eclipse配置的外部tomcat中取出二进制文件,在eclipse内部插件中作为t ...

  2. 【Jsp/Servlet】获取客户端使用的ip

    一般使用jsp的时候大多数时间都可以使用request.getRemoteAddr() 来获取ip,但是这个前提是未经过反向代理等操作的原始地址,所以,需要在反向代理等操作之后还要获取客户端的ip变得 ...

  3. 短时间内多个请求状态更新,导致react 不能及时响应问题总结

    个人总结 这段时间项目中遇到这样一个问题,旧项目中增加了一个聊天对话的模块,这是其他同学负责的部分,因为要有消息提醒,所以做了个轮询.消息提示因为是页头部分,所以每个模块都会引用到.这是背景. 现象 ...

  4. window下spyder的快捷键

    块注释/块反注释 Ctrl + 4/5 断点设置 F12 关闭所有 Ctrl + Shift + W 代码完成 Ctrl +空格键 条件断点 SHIFT + F12 配置 F6 复制 Ctrl + C ...

  5. 如何制作gif图片

    制作Gif图片的方法很多,大多数情况下都会选择利用PS中的ImageReady插件来制作.其实还有其它更好的选择来制作Gift图片,其中一款软件就是利用Flash来实现.下面小编就给大家展示一下如何利 ...

  6. 织梦DedeCMS提示信息框的修改,修改ShowMsg方法函数

    http://www.360doc.com/content/14/0408/13/16498929_367236469.shtml 织梦DedeCMS系统,处处都在用到提示信息,但是这个提示框,前台后 ...

  7. IDEA关掉重复代码波浪线

    如图: File----Settings

  8. Java多线程异常处理

    在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉.这一点是通过java.lang.Run ...

  9. 动态添加div及对应的js、css文件

    动态添加div及对应的js.css文件 在近期的项目开发中需要在首页中添加很多面板型的div,直接加载代码显得很繁琐,于是利用js封装一个动态添加div及其对应css文件和js文件的方法供大家参考使用 ...

  10. 安卓开发-intent在Activity之间数据传递

    安卓开发-intent在Activity之间数据传递 [TOC] intent实现普通跳转 使用intent的setclass方法,示例(由此界面跳转到NewActivity界面) //使用setOn ...