吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 18399|回复: 63
收起左侧

[.NET逆向] 跟大神学“[.NET逆向] 星宇财务记账软件正式版追码/注册机”

  [复制链接]
leiphone4s 发表于 2018-6-4 09:49
本帖最后由 leiphone4s 于 2018-6-4 11:00 编辑

跟大神学“[.NET逆向] 星宇财务记账软件正式版 -- 追码/注册机”
本人小白,也不搞程序开发,所以学习这个还是比较吃力的
最近在学.net程序破解,主要以爆破为主看到大神这个贴子,就跟着学
原贴地址 https://www.52pojie.cn/forum.php?mod=viewthread&tid=413431&extra=page%3D1%26filter%3Dtypeid%26typeid%3D256
发这个帖子是为了从小白的角度分析这个软件,有些地方和大神的不太一样,有的大神没说清楚,小白看起来吃力
我是先自己破解,然后才和大神的做比较,所以我在这主要就说下不一样的地方
1.软件爆破方面
我用的是dnspy 动态分析比较简单,首先也是分析出来输入注册码点确定提示重启软件,这块只是保存输入的用户名和密码,没啥关键用,所以肯定是在窗口加载的时候验证的
观察程序主程序,有“试用版”这些关键字,搜索这个能到man_load这个函数
2018-06-04_085617.png

2 注册方面

2018-06-04_090948.png

就是函数让我头疼了好一会,根据名字的意思是,由注册码反生成用户名,如果生成的用户名和原来保存的(就是最开始注册时输入的名字)一样,函数返回真,上层那个IF条件才能为真
一开始我就头疼了,完蛋这要怎么写注册机?我哪知道正确的注册码样式是什么样的?到这卡住 了
然后看大神的贴子,才知道那个method2是method3的逆向函数,根据名字也能看出是根据用户名算注册码,可是我没查到哪里有调用这个method2函数,我知道它的只调函数是GETSN()这个方法,
求大神帮忙分析下哪里有调用这个,作者写这个的用途是啥 ,为了方便我们破解?

静态分析不会的话,用dnspy动态分析。明确函数是method2这个,它有三参数
string encryptStr, string key, string IV   encryptstr(输入的用户名)  key (2008-10-10) iv(xysoft2008)
开始写注册机,小白这个也不会,我也是学的大概说下
用reflector打开脱壳的主程序
2018-06-03_185501.jpg

选择保存路径  会生成许多 .cs文件,找到里面的SLEncrypt.cs(因为method2在这里面)
打开SharpDevelop(编写c#程序的),新建 一个解决方案(为啥叫这名字?小白不懂)
2018-06-04_093315.png 添加SLEncrypt.cs
2018-06-04_093514.png 编一个这个窗体(这个不会就百度,没法细说),运行一下程序,报错,SLEncrypt.cs下class6什么的报错,把SLEncrypt.cs里面不重要的删掉

2018-06-04_093810.png 上面成这样,再运行不报错了,然后双击“生成注册码”编写代码

2018-06-04_094001.png 保存就可以了

我最后写的是这样的,为了验证方法3
2018-06-04_094630.png

最后还是声明 ,学破解是爱好,本人不搞软件开发,也没相关经验,上面的什么函数方法叫法什么的也都是百度学的,不对的大神指正。
谢谢

最后求大视分析 下这个方法

public static string smethod_3(string encryptedValue, string key, string IV)    //encryptedvalue 这个是输入的注册码 key 2008-10-10  iv  xfsoft2008
        {
            string text = encryptedValue;    //text 等于encyptedvalue
            if (text.Length < 16)                 //如果text长度小于16位  返回空
            {
                return "";
            }
            for (int i = 0; i < 8; i++)     //循环8次
            {
                text = text.Substring(0, i + 1) + text.Substring(i + 2);    // text=text从第一位取到第i+1+text从第一位取到第i+2位(这个对吧?)
            }
            encryptedValue = text;                                               //encryptedValue = text;
            key += "12345678";                                                    //key=2008-10-1012345678
            IV += "12345678";                                                     //iv=xysoft200812345678
            key = key.Substring(0, 8);                                         //key=2008-10-
            IV = IV.Substring(0, 8);                                                //iv=xysoft20
            string result;
            try                                                                                     //下面这些看不懂了,大神帮忙分析下 谢谢
            {
                ICryptoTransform transform = new DESCryptoServiceProvider
                {
                    Key = Encoding.UTF8.GetBytes(key),
                    IV = Encoding.UTF8.GetBytes(IV)
                }.CreateDecryptor();
                byte[] array = Convert.FromBase64String(encryptedValue);
                MemoryStream memoryStream = new MemoryStream();
                CryptoStream cryptoStream = new CryptoStream(memoryStream, transform, CryptoStreamMode.Write);
                cryptoStream.Write(array, 0, array.Length);
                cryptoStream.FlushFinalBlock();
                cryptoStream.Close();
                result = Encoding.UTF8.GetString(memoryStream.ToArray());
            }
            catch (Exception)
            {
                result = "";
            }
            return result;
        }

免费评分

参与人数 11吾爱币 +16 热心值 +11 收起 理由
luozh7682 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
c66d88 + 1 + 1 虽然看不懂,不过我还是很崇拜像楼主这样的C#高手
whlvd + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
Hmily + 6 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
paradisemore + 1 + 1 竟然说不会开发....真的假的哎
ximendongkai + 1 + 1 我很赞同!
zyjames2300 + 1 + 1 谢谢@Thanks!
wei5383079 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
caleb110 + 1 + 1 我很赞同!
zxy2006 + 1 + 1 热心回复!
sunnylds7 + 1 + 1 热心回复!

查看全部评分

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

 楼主| leiphone4s 发表于 2018-6-4 10:47
天若幽心 发表于 2018-6-4 10:30
dnspy我一直用它代替VS编程来着

??dnspy可以编程序?这也可以?大神帮我分下下面的代码 ,小白看不懂了
public static string smethod_3(string encryptedValue, string key, string IV)    //encryptedvalue 这个是输入的注册码 key 2008-10-10  iv  xfsoft2008
        {
            string text = encryptedValue;    //text 等于encyptedvalue
            if (text.Length < 16)                 //如果text长度小于16位  返回空
            {
                return "";
            }
            for (int i = 0; i < 8; i++)     //循环8次
            {
                text = text.Substring(0, i + 1) + text.Substring(i + 2);    // text=text从第一位取到第i+1+text从第一位取到第i+2位(这个对吧?)
            }
            encryptedValue = text;                                               //encryptedValue = text;
            key += "12345678";                                                    //key=2008-10-1012345678
            IV += "12345678";                                                     //iv=xysoft200812345678
            key = key.Substring(0, 8);                                         //key=2008-10-
            IV = IV.Substring(0, 8);                                                //iv=xysoft20
            string result;
            try                                                                                     //下面这些看不懂了,大神帮忙分析下 谢谢
            {
                ICryptoTransform transform = new DESCryptoServiceProvider
                {
                    Key = Encoding.UTF8.GetBytes(key),
                    IV = Encoding.UTF8.GetBytes(IV)
                }.CreateDecryptor();
                byte[] array = Convert.FromBase64String(encryptedValue);
                MemoryStream memoryStream = new MemoryStream();
                CryptoStream cryptoStream = new CryptoStream(memoryStream, transform, CryptoStreamMode.Write);
                cryptoStream.Write(array, 0, array.Length);
                cryptoStream.FlushFinalBlock();
                cryptoStream.Close();
                result = Encoding.UTF8.GetString(memoryStream.ToArray());
            }
            catch (Exception)
            {
                result = "";
            }
            return result;
        }
疯狂输出的柱哥 发表于 2019-11-7 09:12
leiphone4s 发表于 2018-6-4 10:47
??dnspy可以编程序?这也可以?大神帮我分下下面的代码 ,小白看不懂了
public static string smethod ...

后面这段一个异常处理,然后准备加密所需的UTF-8格式的key和iv,然后new了一个加密对象,给加密流写入数据,然后更新,然后应该是关闭加密流,返回memoryStream里面的数据转换为字符串,估计就是加密后的数据返回回去了吧。。。。。。破解我也不懂,来论坛学习学习==
动物凶猛 发表于 2018-6-4 10:10
 楼主| leiphone4s 发表于 2018-6-4 10:13
动物凶猛 发表于 2018-6-4 10:10
太厉害了,注册机都能做出来

万能的百度啊,是比较吃力
caleb110 发表于 2018-6-4 10:20
向楼主学习!
天若幽心 发表于 2018-6-4 10:30

dnspy我一直用它代替VS编程来着
动物凶猛 发表于 2018-6-4 10:42
本帖最后由 动物凶猛 于 2018-6-4 10:43 编辑
leiphone4s 发表于 2018-6-4 10:13
万能的百度啊,是比较吃力

还是很佩服你啊,我都没敢去学
likelooo 发表于 2018-6-4 11:03
学习得精神值得我们去学习   好像挺绕口的!
332595 发表于 2018-6-4 11:13
话说这个软件:dnspy我还是第一次听过。。
 楼主| leiphone4s 发表于 2018-6-4 11:17
332595 发表于 2018-6-4 11:13
话说这个软件:dnspy我还是第一次听过。。

.net 反编译神器啊,好像是de4dot那个作者开发的,跟od一样,可以下断点,动态调试,软件名字我没输错吧好像
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-16 15:01

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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