吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 1316|回复: 24
收起左侧

[.NET逆向] 愚公移山之-从新手小白的角度谈成功破解两款ERP软件的过程2

  [复制链接]
XJB6458 发表于 2021-9-14 13:57
本帖最后由 XJB6458 于 2021-9-15 23:15 编辑

上个贴子说了我破解第一个ERP的过程,(传送门https://www.52pojie.cn/thread-1512006-1-1.html)也只花了我一周的业余时间,感觉也不是很困难,遇到问题多逛论坛,百度找下答
案总能解决。然后带着成就感继续破第二个。没想到这回遇到硬骨头了,可以说有移山之难。但毕竟撬锁比建房子容易,业余没事就来研究,还是有所成。在这里我不懂技
术,也不谈技术,主要说思路和判断,这才是解决问题的核心。
这个ERP功能是相当好用的,虽有免费单机版可用,但我还是想挑战一下,因为正式网络版可以用手机APP客户端,还是比较高端的。还是老样子,先查壳
2021-09-13_152535.png
看下一下,没有壳。c#写的。然后拖进OD,居然打不开。对于这个程序,以前所学的都用不上了。只好再找其它工具,查了一下,.NET反编绎器有Reflector 和 ILSpy可用,下载
了这两个软件试了一下,可以打开,但里面的内容完全看不懂,也不会操作,我就不上图了。后来在NET破解区看了下前辈们的发贴,发现一个神器:dnSpy 下回来一试,惊呆了,居
然有这么强大的反编绎工具,打开编辑毫无障碍,全中文,窗口菜单功能不用预先学习,都能看明白怎么使用。下面是打开后的图
2021-09-13_153311.png
我用dnSpy研究了一段时间,借词典来看这里面的结构。但是发现有些乱码无法理解,不是没有壳吗?搞不懂先放一放,有空来逛逛论坛。学习了才知道这是代码被混淆过了,也算是一种壳吧。
是不是.NET程序的壳就是这个样子的呢。然后脱壳,网上一找,.NET脱壳非de4dot莫属,下载一试果然很强大也很简单,使用方法不用敲代码,直接将.NET程序的exe拖到de4dot.exe上,自动
运行并生成去混淆的文件,在此膜拜dnSpyde4dot的作者,真是太造福我们小白了。去混淆后,代码的可读性完全没有障碍了,去壳后exe大小少了一半。有了神器,第一座大山算是轻松移除了。
2021-09-13_153541.png
然后看了下c#语言,大致知道了C#的运算符,if else语句的意思,就来做试验,这个软件是明码写的,会英文的话基本畅通无阻。依次点开树形结构目录,各个模块非常清晰,注释也有。
// 全局类型: <Module>// 入口点: MyServer.Program.Main
// 架构: AnyCPU (64位优先)
// 运行库: .NET Framework 4
// 时间戳: 60F521F4 (2021/7/19 14:55:48)
来到MyServer/Register/ CheckReg 下面,这里就是注册验证的模块了,先拿这里开刀
2021-09-13_153843.png
直接尝试修改,看有什么效果,经验都是试出来的。
2021-09-13_155702.png
这个过程比较折腾,因为我不懂C语言,不过看了论坛上前辈的经验,还是可以照葫芦画瓢。经过一段时间的尝试,就改成了下面的样子:
2021-09-13_165823.png
dnSpy同OD一样可以下断点,改了反复试,看问题出在哪,会不会代码真的不是很重要,重要的是解题的思路,判断问题的逻辑。这个软件先拿你的假码来判格式要求对不对,不对就不会
去到算真码的步骤,直接结束,你就拿不到真码,这也是一般程序注册验证常用的套路。这里注册码是要大于等于20位的。过了20位这一关,还要拿假码调用系统运行库的各种String Int32
等模块来进行各种运算,原理我是看不懂,也不知道他得也了什么结果,不管他,直接咔嚓。当一个方法行不通时就换一种方法,这里c#改不了,就换改IL指令。
2021-09-13_160112.png
这里改完,调试运行,终于是移走了注册码错误这个大山,任意20位码通过,但还来不及高兴,又来到下一道关,提示 注册信息错误,请检查加密狗是否插好      这个关键字一搜就找到了,
MyServer/MainForm/timer3_Tick 下面
2021-09-13_175617.png
这里最不容易了,也有很大的压力,因为一般有加密狗的软件都是很难破的,先前我也不知道这个软件正版还要加密狗,一度准备放弃。后面还是业余没事,拿出来放到dnSpy上跑跑,也换了思路,
从入口点暂停一步步地跑。看能不能找到检测加密狗的模块,干掉它。这里我要分析了,到这个一行提示是说 注册码没通过 还是说 没有加密狗 ,这个搞清楚就能决定解决问题的方向,如果是注册
信息不通过,那说明还有关卡拦住了假码,但又没提示。这就难了。如果是没有加密狗,那就干掉加密狗检测的程序。跑了几遍的结果,我感觉并没有什么地方拦了假码,也没有加密狗的检测过程,
他并没有检测加密存不存在的判断,只是取加密狗的蜜码,与自己的内部算法来比对,就是下面这个同样是验证注册码的
MyServer/MainForm/CheckRegister2   见下图。这里我虽然跑出了码,但并没有什么用
2021-09-13_185736.png
这个地方改完,再跑一遍,没想到结果成功了,服务直接启动,我输的假码已经完全通过,上成功的图
2021-09-13_193345.png
这里就完成破解了,这个exe拿到任意主机上都可以20位码注册成功,至于20位的限制问题,我想就没必要去改了吧,那个地方的判断逻辑我最开始没修改成功,知道原理就算了。


总结一下,这个软件的核心验证原理,可以说是没有真码,只有一个内部算法,验证时,先拿假码去做格式判断,这个格式判断的程序不在软件内,是调用系统运行库去完成的,这也是我刚开始
萌B了很久的原因。然后拿内部算法再与假码生成服务期限,用户点数等信息,生成格式正确,自然码为真,否则为假。这一步通过了,再拿加密狗内的信息与算法做对比(取中间段比对而非全码
比对,看代码我感觉是这样的),比对成功,才给你用正式版。


后面就要来看我最关心的手机APP服务功能,但是还不能用。我知道这个软件是要在售后日期内,APP功能才可以用的,现在售后日期显示几个零,当然打不开。
2021-09-13_194248.png
继续研究:找到决定APP功能的模块MyServer/APPForm
2021-09-13_194620.png
上面这张图,我改了也只是软件界面显示变了而已,还是不能用。来到MyServer/APPForm/CheckExpDate  这个模块是启动APP功能的,改这里应该也能实现
2021-09-13_202813.png
在这里研究了很久,也没改成功,因为还不明白这里的算法是怎么运作的,调试运行时总是走不到最关键的地方。
后面探索找那个ExpDate 的值来改也没成功,看我找的地方,不知思路对不对,还请大佬们指点
2021-09-13_200035.png 2021-09-13_195806.png

到这里虽说APP还不能用,但我会再研究,也请各位高手大佬们指点,我一个小白能破到这里算是很不容易了,也没什么高明的地方,可以说是强行爆破,思路供大家参考。找到真码可以说是
开了一次锁,写出注册机可以说是配到了万能钥匙,我这是连门一起砸了,就是这么个搞法。
重新编辑放后面继续破解的链接:https://www.52pojie.cn/thread-1513613-1-1.html
下面附上那个CheckRegister2  的源码,供大家研究算法,但这里算出的码没什么用,因为还不知道注册码的格式是什么,写出注册机还是很难的
[C#] 纯文本查看 复制代码
// MyServer.MainForm
// Token: 0x06000165 RID: 357 RVA: 0x0001C9E4 File Offset: 0x0001ABE4
public bool CheckRegister2(string vregisterId)
{
        bool result;
        if (vregisterId.Length == 20)
        {
                int num = (this.FormatToInt(vregisterId.Substring(16, 4)) - 3881) / 3;
                string text = "";
                for (int i = 0; i < this.MCID.Length; i++)
                {
                        int num2 = (int)this.MCID[i] + num;
                        text += (4 * i + num2 - 3).ToString();
                        if (i % 7 == 0)
                        {
                                text += "+";
                        }
                        else if (i % 5 == 0)
                        {
                                text += ")";
                        }
                        else if (i % 3 == 0)
                        {
                                text += "'";
                        }
                        else if (i % 4 == 0)
                        {
                                text += "&";
                        }
                        else if (i % 2 == 0)
                        {
                                text += "!";
                        }
                        else
                        {
                                text += "-";
                        }
                }
                text = text.Replace("+", "sdjfsdjfk");
                text = text.Replace(")", "wiwewoef");
                text = text.Replace("'", "sdfqiierp");
                text = text.Replace("&", "qqierquer");
                text = text.Replace("!", "cvmmdfiwe");
                text = text.Replace("-", "cvmiewprrr");
                text = text.Replace("*", "weireuqc");
                text = text.Replace("+", "hjigfugdhf");
                text = text.Replace("(", "cvfmdfmdfv");
                text = text.Replace("0", "iiwqqerf");
                text = text.Replace("1", "vcvmmzz");
                text = text.Replace("2", "llladfe");
                text = text.Replace("3", "ppqerredf");
                text = text.Replace("4", "sdssssree");
                text = text.Replace("5", "vbvbnnmmm");
                text = text.Replace("6", "ciequdfaa");
                text = text.Replace("7", "gadfwiqww");
                text = text.Replace("8", "aeiyyyytt");
                text = text.Replace("9", "qierbxcax");
                text = this.getMd5(text);
                result = (text.ToUpper().Substring(3, 16) == vregisterId.Substring(0, 16));
        }
        else
        {
                result = false;
        }
        return result;
}



另外,这个程序可以用dnSpy生成源码,直接在VS上修改,但我还不会c#,VS也才刚开始研究,有兴趣的朋友可以试一下。
2021-09-14_135205.png

重新编辑放后面继续破解的链接:https://www.52pojie.cn/thread-1513613-1-1.html



免费评分

参与人数 12威望 +1 吾爱币 +32 热心值 +10 收起 理由
tail88 + 1 + 1 谢谢@Thanks!
暗夜祭司 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
bjxiaoyao + 2 + 1 我很赞同!
bluesky20210721 + 1 我很赞同!
AndresG + 1 热心回复!
2840065 + 1 + 1 下手
石碎大胸口 + 1 + 1 用心讨论,共获提升!
骄阳似我 + 2 + 1 我也在学,但是还没下手
hanlaoshi + 1 + 1 谢谢@Thanks!
wangyuan004 + 1 + 1 我很赞同!
3yu3 + 1 新页
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!

查看全部评分

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

 楼主| XJB6458 发表于 2021-9-16 11:39
本帖最后由 XJB6458 于 2021-9-16 11:52 编辑
benkochina 发表于 2021-9-16 08:26
可以请教下  我打开checkreg 右边代码怎么和你不一样的  是不是官方修复过了

反混淆了吗。还有你下的版本和我可能和我不是同一个类别的产品,但同一家的软件,原理应该是一样的。再说是最新版本,官方升级没那么快。
benkochina 发表于 2021-9-16 12:28
XJB6458 发表于 2021-9-16 11:39
反混淆了吗。还有你下的版本和我可能和我不是同一个类别的产品,但同一家的软件,原理应该是一样的。再说 ...

是生产ERP(适合各行业) 那个版本吗
大保健 发表于 2021-9-14 16:23
pizazzboy 发表于 2021-9-14 17:05
是个什么软件,我也想练习一下试试。
hanlaoshi 发表于 2021-9-14 18:08
厉害,量大管饱!
SnowRen 发表于 2021-9-14 18:11
看了几遍都没找到软件信息,求告知
yyb414 发表于 2021-9-14 19:51
强,我来学习的
st790211 发表于 2021-9-14 21:47
学习了,谢谢楼主,辛苦了
lianquke 发表于 2021-9-14 22:05
受教了,我也刚开始学
chermy 发表于 2021-9-14 23:25
ILSpy 有中文啊
dm530 发表于 2021-9-14 23:58
666,学习了,感谢
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2021-9-18 07:19

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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