吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 13225|回复: 25
收起左侧

[.NET逆向] 不脱壳破解某旅游系统5.2版

[复制链接]
gsyifan 发表于 2015-11-7 16:01
本帖最后由 gsyifan 于 2015-11-7 16:03 编辑

某系统是网上最常见也是目前最好用的旅游站系统之一,5.1版本之前采用的maxtocode加壳后可以用de4dot反混淆后破解。5.1版本以后用de4dot无法脱壳
官方网站:http://www.tourex.net.cn
本文仅限学习和讨论,请勿做侵权使用。
在这里说一种不脱壳破解的办法,我们分析早期版本的授权验证方式,以5.0为例,我们看下install的验证方法:
[Asm] 纯文本查看 复制代码
if (!flag || step2.smethod_0(this.key, lower))
{
     //此处为安装代码,省略...
     this.Response.Redirect("step3.aspx");
}
else
{
   this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script language='javascript'>alert('注册码错误!');</script>");
}

[C#] 纯文本查看 复制代码
public static bool smethod_0(string string_0, string string_1)
       {
           string str = "髆@b驖b~!蘯鸛0&饕)";
           return ((string_0.Equals(Utils.MD5(string.Concat("ωāр", string_1, str), 32).ToLower()) || string_0.Equals(Utils.MD5(string.Concat(string_1, str), 32).ToLower()) ? true : false) ? true : false);
       }

可以看出使用了一个Key和域名MD5以后生成序列号进行验证。所以只要找到Key就可以算出序列号。
在不脱壳的前提下,如何找到这个Key?
我们再分析TourEx.Pages.Dll 找到 BasePage

[Asm] 纯文本查看 复制代码
private static void old_acctor_mc()
{
    __ENCList = new List<WeakReference>();
    LineOrderLock = RuntimeHelpers.GetObjectValue(new object());
    OrderLock = RuntimeHelpers.GetObjectValue(new object());
    WriteLock = RuntimeHelpers.GetObjectValue(new object());
    checkkey = "髆@b驖b~!蘯鸛0&饕)";
    includeWap = false;
}

当然这是分析旧版本脱壳后的代码,如果没有脱壳,就通过反射调用BasePage后输出checkkey,就可以得到。
然后,我们悲催的发现5.1以后checkkey不见了,写在了方法内部,这样是没法通过反射读出来的。
到这里,我们不得不介绍下dnSpy这款神器,这款神器是de4dot的作者开发,可以动态调试.net的EXE,非常强大。
我们先分析BasePage中的验证方法:
[Asm] 纯文本查看 复制代码
// TourEx.Pages.BasePage
// Token: 0x0600005B RID: 91 RVA: 0x00007684 File Offset: 0x00005884
public static bool smethod_0()
{
    bool result;
    if (HttpContext.Current.Server.MapPath(HttpContext.Current.Request.Url.AbsolutePath).IndexOf("wap") != -1)
    {
        if (!(result = (Operators.CompareString(BaseConfig.WebKey, TourEx.Common.Utils.MD5("ωāр" + BaseConfig.WebDomain + BasePage.checkkey, 32).ToLower(), false) != 0)))
        {
            BasePage.includeWap = true;
        }
    }
    else if (result = (Operators.CompareString(BaseConfig.WebKey, TourEx.Common.Utils.MD5("ωāр" + BaseConfig.WebDomain + BasePage.checkkey, 32).ToLower(), false) != 0))
    {
        result = (Operators.CompareString(BaseConfig.WebKey, TourEx.Common.Utils.MD5(BaseConfig.WebDomain + BasePage.checkkey, 32).ToLower(), false) != 0);
    }
    else
    {
        BasePage.includeWap = true;
    }
    return result;
}

这个方法返回了验证结果和includeWap,我尝试用dnSpy写了IL代码

发现保存的时候失败了,如下图
>既然我们找对了地方,那就可以想别的办法,dnSpy有个很牛X的HEX编辑功能,可以找到方法对应的十六进制代码
用旧的版本修改IL代码,找到相关的十六进制分复制过来保存后,发现代码成功修改了!
测试成功打开网页,破解完成。<br>这个只是一个思路了,破解之道在于坚持不泄,找到洞洞,然后注入精华代码。。嗯,就是这么回事了~看起来是不是自然万物是不是都一样的道理?扯远了。。

本文最早发布于博客园,以前没帐号,有兴趣的可以去围观下,以后多在52发吧。
http://www.cnblogs.com/gsyifan/p/tourex_Crack.html

另外本文仅供学习和探讨技术,请勿找我要破解也不要找我要程序。。

免费评分

参与人数 6威望 +1 吾爱币 +1 热心值 +6 收起 理由
新决起 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
wnagzihxain + 1 谢谢@Thanks!
sunbeat + 1 有深度,好文
linzi + 1 谢谢@Thanks!
李湿人 + 1 这么好的贴竟无人加分!
Hmily + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩.

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| gsyifan 发表于 2016-1-22 23:36
李湿人 发表于 2016-1-22 15:39
“通过反射调用BasePage后输出checkkey”
楼主,能否请教一下,这个反射调用过程是用什么方法实现的,需要 ...

红皮书:《C#高级编程》第13章。
denglongdehaoya 发表于 2018-10-13 15:15
李湿人 发表于 2015-11-26 21:49
必须收听罗总,果然高手,这思路绝对杠杠滴。小弟一直在研究这个,钻到想脱它壳 的死胡同里了,哎,今天看 ...

哪个是罗总,这是什么旅游系统,天时?
 楼主| gsyifan 发表于 2015-11-7 16:04
谁能告诉我第一段代码上面的换行是什么情况,删不了
苦茶 发表于 2015-11-7 16:07
谢谢分享,
头像被屏蔽
lyh19991225 发表于 2015-11-7 16:29
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
woainiheibao 发表于 2015-11-7 17:11
提示: 作者被禁止或删除 内容自动屏蔽
spray 发表于 2015-11-7 17:22
思路很好,程序能共享下吗?
zhezhe1314 发表于 2015-11-12 13:03
支持  支持~~~学习下
segasonyn64 发表于 2015-11-12 15:20
感谢分享,貌似没找到官方软件下载链接
李湿人 发表于 2015-11-26 21:49
必须收听罗总,果然高手,这思路绝对杠杠滴。小弟一直在研究这个,钻到想脱它壳 的死胡同里了,哎,今天看了这文章,真是大开眼界啊!
courageous 发表于 2015-12-12 19:56
思路不错,值得学习
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 10:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表