吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3040|回复: 35
收起左侧

[原创] 记录第一次AES算法程序注册过程

  [复制链接]
cq5868177 发表于 2022-10-28 17:41
记录下小白第一次分析AES算法的软件注册的过程。
软件的注册程序就是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

免费评分

参与人数 8威望 +1 吾爱币 +27 热心值 +8 收起 理由
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
sywy + 2 + 1 谢谢@Thanks!
Mofecx + 1 + 1 用心讨论,共获提升!
qqww3815 + 1 + 1 注释是开发写的吧?
eer123 + 1 + 1 用心讨论,共获提升!
云醉月 + 1 + 1 我很赞同!
GanSny666 + 1 + 1 我很赞同!
3yu3 + 1 用心讨论,共获提升!

查看全部评分

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

 楼主| cq5868177 发表于 2022-10-29 18:03
wuyanliang 发表于 2022-10-29 01:17
谢谢你的分享,小白我有两点疑问
1、我记忆中是有服务验证的,难道你的版本比较低?还是断网操作的?
2、 ...

就一个DLL有MD5验证啊,另外一个DLL没验证。
wuyanliang 发表于 2022-10-29 01:17
谢谢你的分享,小白我有两点疑问
1、我记忆中是有服务验证的,难道你的版本比较低?还是断网操作的?
2、诊断程序是java写的,难道没对这个dll的md5进行验证?
sasaso 发表于 2022-10-28 18:35
学到了,这个ida的findcrypt能查找加壳的软件么?
Azure757 发表于 2022-10-28 18:44
sasaso 发表于 2022-10-28 18:35
学到了,这个ida的findcrypt能查找加壳的软件么?

学到了,学到了
anooys 发表于 2022-10-28 18:46
学到了,
yis1 发表于 2022-10-28 19:17
感谢大佬分享,学到了呢

lpm8028 发表于 2022-10-28 19:53

感谢大佬分享
bucai1 发表于 2022-10-28 19:56

感谢大佬分享,学到了呢
光谷神祈 发表于 2022-10-28 20:03
感谢大佬分享,学到了呢
xy838108 发表于 2022-10-28 21:32
不错 有所收获
fitants 发表于 2022-10-28 22:38
不错不错  学习了
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

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

GMT+8, 2024-11-24 17:24

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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