(应一些园友建议,我把敏感字段去掉)

  其实当初我的目的是很纯洁的,只是想找一个简单的网站生成模板,由于对.net更熟悉一点,就去搜索了.net框架的CMS,看它的介绍挺强大的,符合最初的目的,但是下下来之后发现最新版本是要钱的,低一级的版本免费,但是免费的生成出来的东西会有他们公司的版权,这就让我不能忍了,免费就免费啊,搞个纯净点的不行啊,GOOGLE是强大的,所以我尝试的去搜索看有没有破解的版本,发现搜出来的一律都是免费版的去掉版权的版本,擦,去个版权就叫破解了么,而且还是低一级的版本,略微坑爹。.NET的东西理论上没有什么不可以破解的,之前由于项目需要,偶尔也会去破解一些商业的.NET软件,学习学习嘛,破解也不是什么罪大恶极的事,只要你不破坏别人的利益就行,所以我就抱着学习的心态去看了一下P*****的源代码,罪过罪过。只是学习。

  本人声明,下面的内容只是个人研究所用,不作为任何商业目的,如果有人看了本篇文章做出任何违法之事,本人不负任何责任责任。by Zengg

  破解所需软件:Reflector,ILSpy,de4dot

  Reflector和ILSpy其实是一个性质的,都是用来查看别人的源代码,由于有时我发现Reflector查看方法的时候会出现一些错误,所以就用ILSPY配合着用。

  de4dot,脱壳和反混搅的利器,一般商业软件都会加壳或者用了混搅代码,让一些人就算看到代码也不明白写的是什么,有了这个神器,妈妈再也不用担心我看到乱码了。。。当然有时也不是万能的,90%都能还原吧。

P******版本:V3.0

这是V3.0的基本样貌

 按照官网的说法,只要把域名和对应的注册码填到web.config里面就可以了。

Web.config

  可以看到Url是域名,License就是填写注册码的地方,由于域名是唯一的,我们不难想象出Url肯定是作为生成注册码的主要参照物,说个题外话,破解嘛,看你是要暴力破解还是文艺破解,暴力破解就是把代码注入他的DLL,从而绕过他的验证达到注册的目的,文艺嘛,就是大家有话好好说,不改动他的DLL,但是需要根据他提供的一些信息去推测软件作者的加密思想,只要你明白了加密核心思想,就能从源码中找出蛛丝马迹,由于软件里的源码肯定只存在解密的步骤,加密的步骤就需要大家反推出来了,有木有一种当侦探的赶脚。。。。。当然,本人只是业余人士,大牛们看到心里鄙视就好,不用说出来。。会打击人的.by Zengg

  言归正传,我们已经知道了URL是生成注册码的参照物,以后就按着这个线索去查找,其实上面还有一个重要的线索,”License”,由于注册码肯定是要从配置文件读取,读取之后就是验证的步骤,这验证的步骤就是我们需要去的地方,读取License的值,大家会想一下.NET的做法,是不是ConfigurationManager.AppSettings["License"],现在由于程序员的水平高低不齐,一般来说都会像上述那样去写,这样就暴露了获取验证码的地方,我们就可以定位到所有有”License”内容的代码段去,所以说,以后大家写核心解密代码的时候多留一个心眼,把敏感字段写入资源里面,至少给破解的人增加一点难度。

  Bin目录下有很多的DLL,其中一个肯定就是藏有解密的地方

  

  当然由于我已经破解过了,筛选DLL的过程就不描述了,P*******.web.dll,就是解密的地方,用de4dot先给DLL脱壳。

然后我们用ILSPY打开这个DLL

  

  会看到。。尼玛还是这么坑爹,所有东西基本都是乱码,让人不能直视,具体为什么我也没研究过,由于我们也不需要去明白这些乱码写的是神马,按照上面的思路我们要查找所有含有License字段的代码段,这步骤可以用软件实现。

  利用ILSPY,在SEARCH里填上License,就可以看到出来很多方法,当初很疑惑为什么有这么多地方用到验证注册码,验证的算法都是一样的,难道作者以为你各个角落都验证一遍就不能破解了么。。

仔细看了搜索出来的结果,他是一些重要的表操作时就会去验证一遍,挺谨慎的嘛,上面标蓝的地方就是登陆的时候主页验证,我们从这里开始。

点击进入该方法

  从上面代码可以看出,其实注册码分为两个部分,以’g’字符隔开,前面一部分是由MD5加密,后面一部分暂时不清楚,前面我们推论注册码是由URL来的,我们有理由怀疑

this.j3G1XJp4Xe, this.EsQ1WjnrPD肯定有一个是URL字段,至于另一个是什么得去寻找,一般来说我们初始化的时候会在类的构造函数初始化,相信在构造函数里面,我们会知道这两个字段的意思,忘记了这是web,我们应该从Page_load页面加载里面去寻找:

protected void Page_Load(object sender, EventArgs e)
{
string connectionString;
int[] num;
while (true)
{
IL_24F:
this.Qi911iK25u = ":" + master_login.tDhwcmhvMr4nRqlEc9G(base.Request)["SERVER_PORT"];
while (true)
{
IL_232:
if (this.Qi911iK25u == ":80")
{
this.Qi911iK25u = "";
}
this.EsQ1WjnrPD = this.Jbr136aAXj(master_login.MpkoQbh7EvS0PEFh1B3(master_login.rEXTLBh8uXG8glkV91p(ConfigurationManager.AppSettings, "Url").ToString()));
master_login.xncn9GhN2hVekNKKcgK();
if (!master_login.DMFvcGhZ55jZPl06Jhl())
{
goto IL_FA;
}
goto IL_215;
IL_1CA:
bool flag;
while (!(flag = (base.Request.Form["username"] == null)))
{
this.NTR1li2VG4();
this.Yqx1ac8tvS = new Conn();
connectionString = master_login.lPkTddhObfF6vvZs9Ta(this.Yqx1ac8tvS);
num = new int[]
{
,
,
,
,
,
,
,
,
,
,
,
, };
while (true)
{
this.j3G1XJp4Xe = this.Yqx1ac8tvS.GetString(num);
num = new int[]
{
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, };
this.DDU1A3AUYe = this.Yqx1ac8tvS.GetString(num);
int expr_AA = ;
if (master_login.xncn9GhN2hVekNKKcgK())
{
switch (expr_AA)
{
case :
goto IL_232;
case :
case :
goto IL_FA;
case :
case :
goto IL_215;
case :
goto IL_176;
case :
continue;
case :
goto IL_276;
case :
goto IL_2AE;
case :
goto IL_1CA;
case :
goto IL_24F;
case :
goto IL_2F5;
case :
return;
}
break;
}
break;
}
goto IL_187;
}
return;
IL_FA:
this.KpC1B5ZX4p = this.Jbr136aAXj(master_login.tDhwcmhvMr4nRqlEc9G(master_login.rnmK14hAjv0aZay85lt(this))["SERVER_NAME"].ToLower());
if (!master_login.MAaokyhM2irc0iduDgg(this.KpC1B5ZX4p, "localhost"))
{
goto IL_1CA;
}
int num2 = this.KpC1B5ZX4p.IndexOf(this.EsQ1WjnrPD);
string a;
if (num2 >= )
{
a = this.KpC1B5ZX4p.Substring(num2, this.KpC1B5ZX4p.Length - num2);
goto IL_176;
}
master_login.a6dZyFh3MrLLslJyyx5(this).Write("<script>location.href='http://" + this.EsQ1WjnrPD + this.Qi911iK25u + "/e/master/login.aspx';</script>");
goto IL_215;
IL_187:
if (!flag)
{
this.KpC1B5ZX4p = this.EsQ1WjnrPD;
goto IL_1CA;
}
master_login.a6dZyFh3MrLLslJyyx5(this).Write("<script>location.href='http://" + this.EsQ1WjnrPD + this.Qi911iK25u + "/e/master/login.aspx';</script>");
base.Response.End();
goto IL_1CA;
IL_215:
master_login.a6dZyFh3MrLLslJyyx5(this).End();
goto IL_1CA;
IL_176:
flag = !(a == this.EsQ1WjnrPD);
goto IL_187;
}
}
IL_276:
num = new int[]
{
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, };
this.wht18BDAPc = this.Yqx1ac8tvS.GetString(num);
num = new int[]
{
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
, };
IL_2AE:
this.eA41Kphpj9 = this.Yqx1ac8tvS.GetString(num);
this.kwo1i4CnR3 = this.ne91erSgMV();
this.GqT1YHkWWq = new OleDbConnection(connectionString);
master_login.qOyjNXhFe7tECUDuWP7(this.GqT1YHkWWq);
this.gII1QQxT9S();
this.aK41NqyDHj();
this.Tov1vquSFP();
IL_2F5:
this.GqT1YHkWWq.Close();
}

Load

  仔细看上面的代码,我们会发现,this.EsQ1WjnrPD就是URL,但是经过了一些处理,即去掉了域名前面的“WWW.”,this.j3G1XJp4Xe是经过特殊算法得出字符串。by Zengg

算法源码:

  {
int[] num = new int[]{
,
,
,
,
,
,
,
,
,
,
,
, };
this.j3G1XJp4Xe = GetString(num);
} public string GetString(int[] num)
{
string text = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!@#$%^&*()_+-={}[]:\";'<>?,./\\| ";
StringBuilder stringBuilder = new StringBuilder();
string result;
if (num.Length > )
{
for (int i = ; i < num.Length; i++)
{
stringBuilder.Append(text[num[i]]);
}
result = stringBuilder.ToString();
}
else
{
result = "";
}
return result;
}

j3G1XJp4Xe

MD5算法:

public class Md5
{
public string Get_Md5(string s)
{
MD5 mD = new MD5CryptoServiceProvider();
Encoding encoding = Encoding.GetEncoding("UTF-8");
string s2 = "pageadmin cms";
byte[] array = mD.ComputeHash(encoding.GetBytes(s));
byte[] array2 = mD.ComputeHash(encoding.GetBytes(s2));
StringBuilder stringBuilder = new StringBuilder();
for (int i = ; i < array.Length; i++)
{
stringBuilder.Append(((int)(array[i] + array2[i])).ToString("x").PadLeft(, ''));
}
return stringBuilder.ToString();
}
public string Md5_Num(string s)
{
string text = "";
for (int i = ; i < s.Length; i++)
{
if (i == s.Length - )
{
text += this.GetNum(s[i].ToString()).ToString();
}
else
{
text = text + this.GetNum(s[i].ToString()).ToString() + ",";
}
}
return text;
}
private int GetNum(string C)
{
string text = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789~!@#$%^&*()_+-={}[]:\";'<>?,./\\| ";
int num = text.IndexOf(C);
int result;
if (num < )
{
result = -;
}
else
{
result = num;
}
return result;
}
}

MD5

  第一部分的注册码其实已经得出来的,即this.j3G1XJp4Xe+this.EsQ1WjnrPD的字符串经过MD5加密就是第一部分的注册码,下面我们去寻找第二部分的线索,重新回到上次搜索"License"的列表,经过一个个的排查,发现了重要线索。

 

  进入这个方法

aaarticlea/png;base64,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" alt="" />

  从上面的代码可以推出,后部分注册码,其实就是URL的长度乘以2,到这里其实注册码差不多已经出来了,基本格式

MD5(this.j3G1XJp4Xe+this.EsQ1WjnrPD)+“g”+URL.Length*2+?....注册码例子:ef12a131357bb3e67396e01061141385da5149g143

剩余核心算法:

 private static bool g031FKBmaF(string A_1)
{
string[] array = new string[];
array[] = "^127[.]0[.]0[.]1$";
array[] = "^localhost$";
array[] = "^10[.]\\d{1,3}[.]\\d{1,3}[.]\\d{1,3}$";
array[] = "^172[.]((1[6-9])|(2\\d)|(3[01]))[.]\\d{1,3}[.]\\d{1,3}$";
array[] = "^192[.]168[.]\\d{1,3}[.]\\d{1,3}$";
string[] array2 = array;
int num = ;
IL_45:
if (num >= array2.Length)
{
bool result = false;
return result;
}
if (A_1 != null)
{
goto IL_64;
}
string arg_58_0 = "";
IL_55:
if (Regex.IsMatch(arg_58_0, array2[num]))
{
bool result = true;
return result;
}
num++;
goto IL_45;
IL_64:
arg_58_0 = A_1;
goto IL_55;
}
private static string Jbr136aAXj(string A_1)
{
bool arg_27_0; if (g031FKBmaF(A_1))
{
arg_27_0 = false;
goto IL_27;
}
arg_27_0 = (A_1.IndexOf(".") >= );
IL_27:
string result;
if (!arg_27_0)
{
result = "localhost";
}
else
{
result = A_1.Replace("www.", "");
}
return result;
}

  写了这么多也够了,最后一个数字3代表的是.net后缀的域名,这里就不提供完整的程序源码,可能会涉及一些侵权,我写的其实也够详细了,

核心算法也贴出来,大家自己去写一个注册机吧,如果有想要域名对应的注册码的,请邮电我说明正当理由,我会考虑是否给你。

如果您看了本篇博客,觉得对您有所收获,请点击右下角的 [推荐]

如果您想转载本博客,请注明出处

如果您对本文有意见或者建议,欢迎留言

感谢您的阅读,请关注我的后续博客 Zengg

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

.NET P****** CMS 逆向工程的更多相关文章

  1. .NET PageAdmin CMS

    .NET PageAdmin CMS 完全破解步骤(非简单去版权) 其实当初我的目的是很纯洁的,只是想找一个简单的网站生成模板,由于对.net更熟悉一点,就去搜索了.net框架的CMS,看它的介绍挺强 ...

  2. JAVAEE——宜立方商城05:前台系统搭建、首页展示、Cms系统的实现

    1. 学习计划 1.前台系统搭建 2.商城首页展示 3.Cms系统的实现 a) 内容分类管理 b) 内容管理 4.前台内容动态展示 2. 商城首页展示 系统架构: 页面位置: 2.1. 工程搭建 可以 ...

  3. 商城04——门户网站介绍&商城首页搭建&内容系统创建&CMS实现

    1.   课程计划 1.门户系统的搭建 2.显示商城首页 3.内容管理系统的实现 a)  内容分类管理 b) 内容管理 2.   门户系统的搭建 2.1. 什么是门户系统 从广义上来说,它将各种应用系 ...

  4. CMS模板应用调研问卷

    截止目前,已经有数十家网站与我们合作,进行了MIP化改造,在搜索结果页也能看到"闪电标"的出现.除了改造方面的问题,MIP项目组被问到最多的就是:我用了wordpress,我用了织 ...

  5. Kooboo CMS技术文档之五:站点配置管理

    站点关系 管理站点间的关系,站点可以有子站点,子站点继承父站点的部分配置数据,同时子站点还可以根据需要,本地化由父站点继承而来的数据.通过继承和本地化,可以让子站点在用最小的改动代价,来完成一个与父站 ...

  6. Kooboo CMS技术文档之二:Kooboo CMS的安装步骤

    在IIS上安装Kooboo CMS Kooboo CMS安装之后 安装的常见问题 1. 在IIS上安装Kooboo CMS Kooboo CMS部署到正式环境相当简单,安装过程是一个普通MVC站点在I ...

  7. Kooboo CMS技术文档之一:Kooboo CMS技术背景

    语言平台 依赖注入方案 存储模型 1. 语言平台 Kooboo CMS基于.NET Framework 4.x,.NET Framework 4.x的一些技术特性成为站点开发人员使用Kooboo CM ...

  8. Kooboo CMS技术文档之四:Kooboo CMS的站点组成部分

    Kooboo CMS本着功能独立分离的原则,将站点分为三部分组成:用户管理,站点管理和内容数据库管理.各个功能之间既可独立使用,也可以容易组成在一起形成一个完整的系统. 用户管理 管理整个系统内的用户 ...

  9. Kooboo CMS技术文档之三:切换数据存储方式

    切换数据存储方式包括以下几种: 将文本内容存储在SqlServer.MySQL.MongoDB等数据库中 将站点配置信息存储在数据库中 将后台用户信息存储在数据库中 将会员信息存储在数据库中 将图片. ...

随机推荐

  1. iOS上传文件,有关http上传协议-RFC1867

    以上是抓包HTML input file标签上传的内容 只要模拟上面http 的header跟body就可以成功. 整体说明: post 上传文件时,以在http body里面带参数,参数的格式,根据 ...

  2. thinkphp 模板显示display和assign的用法

    this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论何种变量类型都统一使用 assign 赋值 $this-> ...

  3. 【剑指offer】顺时针打印矩阵

    转载请注明出处:http://blog.csdn.net/ns_code/article/details/26053049 剑指offer上的第20题,九度OJ上測试通过. 题目描写叙述: 输入一个矩 ...

  4. 修改MyEclipse内存-------OutOfMemoryError错误

    1.打开MyEclipse后,进入Windows/Preferences/Java/Installed JREs 点击后,在右边窗口选择JREs,双击后进入 2.在Default VM Argumen ...

  5. .net MVC 碰到的问题

    1:问:回车会默认会触发页面从左边至右,从上到下索引位置第一的按钮事件.如何取消? 答:在不需要触发按钮事件的按钮中加一个属性:UseSubmitBehavior="false" ...

  6. 多个非同源的shared_ptr管理对象引起double free

    有多个不同源的shared_ptr管理对象时会出现多次释放对象,这里不同源是指多组间不是通过拷贝构造.复制等手段而来的,即几组shared_ptr是独立声明的. #include<iostrea ...

  7. 【JavsScript】当 JavaScript 从入门到提高前需要注意的细节:变量部分

    在javaScript中变量使用var声明的变量是当前作用域的变量,不使用var声明的则肯定是全局变量. http://msdn.microsoft.com/zh-cn/library/dn64545 ...

  8. 剑指 offer set 8 树的子结构

    总结 1. 解法分为两步, 一是定位树的头结点, 二是两棵树作比较 2. 两个数作比较, 包括比较两棵树是否相等, 或者两个数是否镜像, 算法的框架类似 bool comp(root1, root2)

  9. CSS 之 控制图片与文字对齐

    文字旁边搭配图片时,发现图片比文字靠上,原来默认的情况是图片顶对齐而文字底对齐,通过设置css属性可以使得图片与文字对齐. 设置各对象的vertical-align属性,属性说明: baseline- ...

  10. jsp包含的讲解

    <%@page language="java" import="java.util.*" pageEncoding="UTF-8"%& ...