首页 > 编程语言 >AspNet Zero Core

AspNet Zero Core

时间:2024-10-05 10:46:04浏览次数:9  
标签:Core 反编译 代码 AspNetZeroCore dll Abp Zero AspNet

原文: https://www.cnblogs.com/Leo_wl/p/8439906.html

阅读目录

回到目录

解决AspNet Zero Core 5.0.1无法运行的问题

 

  最近在研究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

作者:Leo_wl      出处:http://www.cnblogs.com/Leo_wl/      本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 版权信息

标签:Core,反编译,代码,AspNetZeroCore,dll,Abp,Zero,AspNet
From: https://www.cnblogs.com/yanglang/p/18447670

相关文章

  • .net core 安装服务
    https://www.jianshu.com/p/e1b3b61f876a 使用NSSM后面的代码演示以Asp.netCore2.1作为演示,其他.NetCore方式一致。1、确保.NetCore程序可以正常运行先把Asp.netCore发布,然后直接运行dotnet命令,确保程序可以运行并访问   2、使用NSSM安装dotnet下载NSSM......
  • 自动加载类文件时发生错误,类名【core\basic\Kernel】
    当你在使用PBootCMS时遇到“自动加载类文件时发生错误,类名【core\basicKernel】”的问题,通常是因为Kernel.php文件被误删除或丢失。特别是在阿里云虚拟主机上,这类文件可能会被误判为风险文件而被删除。以下是如何解决这一问题的具体步骤:解决方法重新下载PBootCMS模板访问PBo......
  • SCoRe: 通过强化学习教导大语言模型进行自我纠错
    大语言模型(LLMs)在推理任务中,如数学问题求解和编程,已经展现出了优秀的性能。尽管它们能力强大,但在实现能够通过计算和交互来改进其回答的算法方面仍然面临挑战。现有的自我纠错方法要么依赖于提示工程,要么需要使用额外的模型进行微调,但这些方法都有局限性,往往无法产生有意......
  • 关于CoreML需要外部生成randn这档子事
    coremltools在转换后会固定randn结果,实现真·randn需要外部生成,再使用MLMultiArray作为输入参数传入。太长不看使用BNNSimportAccelerateimportCoreML@available(iOS16.0,*)extensionMLMultiArray{staticfuncrandnFP32(shape:consuming[NSNumber],mea......
  • [rCore学习笔记 028] Rust 中的动态内存分配
    引言想起我们之前在学习C的时候,总是提到malloc,总是提起,使用malloc现场申请的内存是属于堆,而直接定义的变量内存属于栈.还记得当初学习STM32的时候CubeIDE要设置stack和heap的大小.但是我们要记得,这么好用的功能,实际上是操作系统在负重前行.那么为了实现动态内存分配功......
  • C#/.NET/.NET Core开发实战教程集
    DotNetGuide介绍DotNetGuide是一个专注于C#/.NET/.NETCore学习、工作、面试指南的GitHub知识库,该知识库在GitHub中Star数已突破6.5k+当然这离不开各位小伙伴的支持和鼓励。该知识库记录、收集和总结C#/.NET/.NETCore基础知识、学习路线、开发实战、编程技巧练习、学习视频、文......
  • c# - - - .net core 判断程序运行的环境,Windows环境或Linux环境或MacOs环境
    c#.netcore判断程序运行的环境,Windows环境或Linux环境或MacOs环境Codeif(RuntimeInformation.IsOSPlatform(OSPlatform.Linux)){//Linux}elseif(RuntimeInformation.IsOSPlatform(OSPlatform.Windows)){//Windows}elseif(RuntimeInformation.IsOSPlatform(OSPlatfo......
  • .net core elsa工作流程框架源码学习之Pipeline管道的理解
    elsa这个框架运用管道来实现切面编程,切面编程的意义我的理解是在于:把业务逻辑和其他与业务不相关的逻辑进行解耦,或者把通用的逻辑:异常处理,日志处理等在不侵入业务逻辑的情况下,服务与这些业务。接下来,详细看看elsa框架的管道是怎么实现的。主要依靠,下面这个委托方法,这个方法返回一......
  • PICO 2 RP2350使用官方推荐RISC-V编译器在O3优化下的coremark跑分,与Hazard3库宣传跑分
    编译环境:WSLUbuntu22.04GCC13.2.0 Hazard3存储库https://github.com/Wren6991/Hazard3/RP2350默认频率150MHz,编译内核为其RISC-V架构内核,在此频率下实测O3等级跑分453左右,O2等级跑分429左右。在测试时,当我打开第二个核心后,并且第二个核心只用来控制led灯,此时coremark跑......
  • Codeforces Round 976 (Div. 2) and Divide By Zero 9.0
    目录写在前面A签到B数学,模拟C二进制,拆位D暴力,并查集E概率DPF写在最后写在前面补题地址:https://codeforces.com/gym/104128。上大分失败呃呃呃呃有点过载了妈的我现在应该去打会儿游戏。A签到等价于求\(n\)在\(k\)进制下各位之和,写一个类似快速幂的东西。///*By......