跟大神学“[.NET逆向] 星宇财务记账软件正式版追码/注册机”
本帖最后由 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这个函数
2 注册方面
就是函数让我头疼了好一会,根据名字的意思是,由注册码反生成用户名,如果生成的用户名和原来保存的(就是最开始注册时输入的名字)一样,函数返回真,上层那个IF条件才能为真
一开始我就头疼了,完蛋这要怎么写注册机?我哪知道正确的注册码样式是什么样的?到这卡住 了
然后看大神的贴子,才知道那个method2是method3的逆向函数,根据名字也能看出是根据用户名算注册码,可是我没查到哪里有调用这个method2函数,我知道它的只调函数是GETSN()这个方法,
求大神帮忙分析下哪里有调用这个,作者写这个的用途是啥 ,为了方便我们破解?
静态分析不会的话,用dnspy动态分析。明确函数是method2这个,它有三参数
string encryptStr, string key, string IV encryptstr(输入的用户名)key (2008-10-10) iv(xysoft2008)
开始写注册机,小白这个也不会,我也是学的大概说下
用reflector打开脱壳的主程序
选择保存路径会生成许多 .cs文件,找到里面的SLEncrypt.cs(因为method2在这里面)
打开SharpDevelop(编写c#程序的),新建 一个解决方案(为啥叫这名字?小白不懂)
添加SLEncrypt.cs
编一个这个窗体(这个不会就百度,没法细说),运行一下程序,报错,SLEncrypt.cs下class6什么的报错,把SLEncrypt.cs里面不重要的删掉
上面成这样,再运行不报错了,然后双击“生成注册码”编写代码
保存就可以了
我最后写的是这样的,为了验证方法3
最后还是声明 ,学破解是爱好,本人不搞软件开发,也没相关经验,上面的什么函数方法叫法什么的也都是百度学的,不对的大神指正。
谢谢
最后求大视分析 下这个方法
public static string smethod_3(string encryptedValue, string key, string IV) //encryptedvalue 这个是输入的注册码 key 2008-10-10ivxfsoft2008
{
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;
} 天若幽心 发表于 2018-6-4 10:30
dnspy我一直用它代替VS编程来着
??dnspy可以编程序?这也可以?大神帮我分下下面的代码 ,小白看不懂了
public static string smethod_3(string encryptedValue, string key, string IV) //encryptedvalue 这个是输入的注册码 key 2008-10-10ivxfsoft2008
{
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;
} leiphone4s 发表于 2018-6-4 10:47
??dnspy可以编程序?这也可以?大神帮我分下下面的代码 ,小白看不懂了
public static string smethod ...
后面这段一个异常处理,然后准备加密所需的UTF-8格式的key和iv,然后new了一个加密对象,给加密流写入数据,然后更新,然后应该是关闭加密流,返回memoryStream里面的数据转换为字符串,估计就是加密后的数据返回回去了吧。。。。。。破解我也不懂,来论坛学习学习== 太厉害了,注册机都能做出来 动物凶猛 发表于 2018-6-4 10:10
太厉害了,注册机都能做出来
万能的百度啊,是比较吃力 向楼主学习! {:1_926:}
dnspy我一直用它代替VS编程来着 本帖最后由 动物凶猛 于 2018-6-4 10:43 编辑
leiphone4s 发表于 2018-6-4 10:13
万能的百度啊,是比较吃力
还是很佩服你啊,我都没敢去学 学习得精神值得我们去学习 好像挺绕口的! 话说这个软件:dnspy我还是第一次听过。。 332595 发表于 2018-6-4 11:13
话说这个软件:dnspy我还是第一次听过。。
.net 反编译神器啊,好像是de4dot那个作者开发的,跟od一样,可以下断点,动态调试,软件名字我没输错吧好像