cq5868177 发表于 2022-10-28 17:41

记录第一次AES算法程序注册过程

记录下小白第一次分析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试一下看是注册成功,因为手里没有设备所以用不了他的主程序,不知道有没有坑,后面等有设备了再看看。

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

不错 有所收获{:1_921:}

fitants 发表于 2022-10-28 22:38

不错不错学习了{:1_893:}
页: [1] 2 3 4
查看完整版本: 记录第一次AES算法程序注册过程