首页
社区
课程
招聘
《.NET程序的破解(二)》一文后续,NQQTools程序的注册算法思路
发表于: 2006-5-19 16:55 3917

《.NET程序的破解(二)》一文后续,NQQTools程序的注册算法思路

2006-5-19 16:55
3917
oep1在《NET程序的破解(二)》一文里介绍了如何爆破NQQTools这类混淆的很面目全非类型程序的思路,已经说得已经很详细了,这里就不再重复了。
我这里要说的是,其实当时只要再深入一步,就可以得到其注册算法!

还记的那个发生异常而中断的画面吧?那个抛出异常的函数名字叫Decrypt3DES(),属于类NQQTools.Jm。用Reflector找到该类,可以发现有两个Decrypt3DES函数,上边的那个只有两个参数的就是它了,可惜看不到源代码。但也没关系。
看看同一个类里边还有什么?!
看到那两个名字叫Encrypt3DES的函数了吗?原来粗心的作者居然连注册算法也给我们留下了!当然还有一种可能是源代码其他地方也用到了,不得不留下。我估计这个NQQTools.Jm在被混淆前应该叫做NQQTools.Cryptography之类的,是专门用于安全处理的核心类。
至此,熟悉.NET的人很容易就能写出这两个函数,只要我们能知道这个key,就什么都搞定了。而key在《NET程序的破解(二)》里已经得到了,是24ynlisB4uity11!5(QQ。
注册解密的函数如下:
public string Encrypt3DES(string a_strString, string a_strKey)
{
        TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
        MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider();
        DES.Key = hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(a_strKey));
        DES.Mode = CipherMode.ECB;
        ICryptoTransform DESEncrypt = DES.CreateEncryptor();
        byte[] Buffer = ASCIIEncoding.ASCII.GetBytes(a_strString);
        return Convert.ToBase64String(DESEncrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
}

我们甚至也能得到当初的加密函数:
string Decrypt3DES(string a_strString, string a_strKey)
{
        TripleDESCryptoServiceProvider DES = new TripleDESCryptoServiceProvider();
        MD5CryptoServiceProvider hashMD5 = new MD5CryptoServiceProvider();
        DES.Key = hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(a_strKey));
        DES.Mode = CipherMode.ECB;
        ICryptoTransform DESDecrypt = DES.CreateDecryptor();
        string result = "";
        try
        {
                byte[] Buffer = Convert.FromBase64String(a_strString);
                result = ASCIIEncoding.ASCII.GetString(DESDecrypt.TransformFinalBlock(Buffer, 0, Buffer.Length));
        }
        catch(Exception e)
        {
                throw(new Exception("Invalid Key or input string is not a valid base64 string" , e)) ;
        }
        return result ;
}

这都要感谢那个没有被改换过的函数名字。阿门!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 253
活跃值: (25)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
2
.net,PFPF
2006-5-19 16:57
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
就怕那种比较无赖的混淆器,把一个大类拆分为无数小类。那就苦了,千头万绪,无从下手。只有哭了!
2006-5-19 17:18
0
雪    币: 183
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
楼主对NET的研究很厉害呀
2006-5-20 10:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
疯狂支持楼主
2006-5-26 11:56
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
楼主厉害。。。
2006-5-26 21:48
0
游客
登录 | 注册 方可回帖
返回
//