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

(编辑:jimmy 日期: 2024/10/30 浏览:2)

记录下小白第一次分析AES算法的软件注册的过程。
软件的注册程序就是configassist如图,启动软件后点这个cofig然后下一步一直到注册界面,此时是没注册的,点Manual输入注册码就好了
记录第一次AES算法程序注册过程

1.png

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

2.png


首先DIE查一下软件,发现是C#写的,直接拖到dnspy里面调试起来,搜索一下关键字定位到注册验证的地方
记录第一次AES算法程序注册过程

3.png


这里调用了getLicCheckLicense() 返回值为0就表示注册码是有效的,然后就调用DecodeLicense解析提取注册码的内容
记录第一次AES算法程序注册过程

4.png


跟踪发现getLicCheckLicense()里面调用的是C++的DLL
记录第一次AES算法程序注册过程

5.png


IDA打开看下getLicCheckLicense(),主要函数就是sub_10001770
记录第一次AES算法程序注册过程

6.png


10001770 前部分是用注册码逐个查表然后把下标转为5位二进制字符串然后再8位二进制转16进制
记录第一次AES算法程序注册过程

7.png

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

8.png


接着依次取0x20个字符,传到sub_1000A9F0函数处理
记录第一次AES算法程序注册过程

9.png


sub_1000A9F0函数里前部分 主要函数是sub_1000AEE0, 作用是用字符串ruediger得到一个16位数组
记录第一次AES算法程序注册过程

10.png


sub_1000A9F0函数里后部分 主要函数是sub_10016730,sub_10016800;其中sub_10016800里面各种亦或移位查表替换操作,
花了好些时间连续跟了几遍之后感觉怎么像个什么算法,于是用findcrypt插件查了一下找到了S_BOX和INV_BOX确定是AES解密算法,模式是ECB,NOPadding.
而上面得到的16位数组就是密码
记录第一次AES算法程序注册过程

11.png

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

12.png

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

13.png


AES依次对每16个字节解密之后再倒序然后再用AES解密一次,最后转成二进制
记录第一次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了
记录第一次AES算法程序注册过程

15.png

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

15-1.png


改了之后,DLL加载时MD5过不了,于是找到加载的地方,有MD5值判断,修改存储的MD5值就行了
记录第一次AES算法程序注册过程

16.png

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

17.png


替换2个修改的DLL试一下看是注册成功,因为手里没有设备所以用不了他的主程序,不知道有没有坑,后面等有设备了再看看。
记录第一次AES算法程序注册过程

18.png

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

19.png