南强小屋 Design By 杰米
记录下小白第一次分析AES算法的软件注册的过程。
软件的注册程序就是configassist如图,启动软件后点这个cofig然后下一步一直到注册界面,此时是没注册的,点Manual输入注册码就好了
首先DIE查一下软件,发现是C#写的,直接拖到dnspy里面调试起来,搜索一下关键字定位到注册验证的地方
这里调用了getLicCheckLicense() 返回值为0就表示注册码是有效的,然后就调用DecodeLicense解析提取注册码的内容
跟踪发现getLicCheckLicense()里面调用的是C++的DLL
IDA打开看下getLicCheckLicense(),主要函数就是sub_10001770
10001770 前部分是用注册码逐个查表然后把下标转为5位二进制字符串然后再8位二进制转16进制
接着依次取0x20个字符,传到sub_1000A9F0函数处理
sub_1000A9F0函数里前部分 主要函数是sub_1000AEE0, 作用是用字符串ruediger得到一个16位数组
sub_1000A9F0函数里后部分 主要函数是sub_10016730,sub_10016800;其中sub_10016800里面各种亦或移位查表替换操作,
花了好些时间连续跟了几遍之后感觉怎么像个什么算法,于是用findcrypt插件查了一下找到了S_BOX和INV_BOX确定是AES解密算法,模式是ECB,NOPadding.
而上面得到的16位数组就是密码
AES依次对每16个字节解密之后再倒序然后再用AES解密一次,最后转成二进制
到这里注册码的处理基本就完了,后面就是依次读取2进制串转为十六进制然后复制给License的各个成员
LicenseHardwareID 0x00-0x30 (二进制字符串的0-0x30)
AppId 0x30-0x10
MaxUsers 0x40-0x10
CreateDate 0x50-0x10
ExpirationDate 0x60-0x10
LicenseVersion 0x70-0x10
StartDate 0x80-0x10
LicenseSerial 0x90-0x20
LicensePubVersion 0xB0-0x10
licIsParamBitSet 0xC0-0x10
licIsAuthorBitSet 0xD0-0x10
0xE0-0x238 这部分是LicenseVersion 中间4位是控制的,直接为0就不处理;前十个为小版本号的二进制,后2位是大版本号必须为3,二进制为11;
在赋值的过程中有个sub_100027B0函数里面有验证CryptVerifySignatureA()会导致getLicCheckLicense返回4,这里我是修改sub_100027B0的返回值把3改为0了
改了之后,DLL加载时MD5过不了,于是找到加载的地方,有MD5值判断,修改存储的MD5值就行了
替换2个修改的DLL试一下看是注册成功,因为手里没有设备所以用不了他的主程序,不知道有没有坑,后面等有设备了再看看。
软件的注册程序就是configassist如图,启动软件后点这个cofig然后下一步一直到注册界面,此时是没注册的,点Manual输入注册码就好了
1.png
2.png
首先DIE查一下软件,发现是C#写的,直接拖到dnspy里面调试起来,搜索一下关键字定位到注册验证的地方
3.png
这里调用了getLicCheckLicense() 返回值为0就表示注册码是有效的,然后就调用DecodeLicense解析提取注册码的内容
4.png
跟踪发现getLicCheckLicense()里面调用的是C++的DLL
5.png
IDA打开看下getLicCheckLicense(),主要函数就是sub_10001770
6.png
10001770 前部分是用注册码逐个查表然后把下标转为5位二进制字符串然后再8位二进制转16进制
7.png
8.png
接着依次取0x20个字符,传到sub_1000A9F0函数处理
9.png
sub_1000A9F0函数里前部分 主要函数是sub_1000AEE0, 作用是用字符串ruediger得到一个16位数组
10.png
sub_1000A9F0函数里后部分 主要函数是sub_10016730,sub_10016800;其中sub_10016800里面各种亦或移位查表替换操作,
花了好些时间连续跟了几遍之后感觉怎么像个什么算法,于是用findcrypt插件查了一下找到了S_BOX和INV_BOX确定是AES解密算法,模式是ECB,NOPadding.
而上面得到的16位数组就是密码
11.png
12.png
13.png
AES依次对每16个字节解密之后再倒序然后再用AES解密一次,最后转成二进制
14.png
到这里注册码的处理基本就完了,后面就是依次读取2进制串转为十六进制然后复制给License的各个成员
LicenseHardwareID 0x00-0x30 (二进制字符串的0-0x30)
AppId 0x30-0x10
MaxUsers 0x40-0x10
CreateDate 0x50-0x10
ExpirationDate 0x60-0x10
LicenseVersion 0x70-0x10
StartDate 0x80-0x10
LicenseSerial 0x90-0x20
LicensePubVersion 0xB0-0x10
licIsParamBitSet 0xC0-0x10
licIsAuthorBitSet 0xD0-0x10
0xE0-0x238 这部分是LicenseVersion 中间4位是控制的,直接为0就不处理;前十个为小版本号的二进制,后2位是大版本号必须为3,二进制为11;
在赋值的过程中有个sub_100027B0函数里面有验证CryptVerifySignatureA()会导致getLicCheckLicense返回4,这里我是修改sub_100027B0的返回值把3改为0了
15.png
15-1.png
改了之后,DLL加载时MD5过不了,于是找到加载的地方,有MD5值判断,修改存储的MD5值就行了
16.png
17.png
替换2个修改的DLL试一下看是注册成功,因为手里没有设备所以用不了他的主程序,不知道有没有坑,后面等有设备了再看看。
18.png
19.png
标签:
记录第一次AES算法程序注册过程
南强小屋 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
南强小屋 Design By 杰米
暂无记录第一次AES算法程序注册过程的评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。