分析某录音软件(Windows)
本帖最后由 AmIzero 于 2019-8-6 22:04 编辑感谢 #梦游枪手 的提示
[*]定位关键函数
某windows录音软件(以下简称此软件)采用注册码的方式进行注册。
由于在其目录下未观察到配置文件的存在,故猜测此软件使用注册表存储验证码。
使用IDA的xref功能找到关键函数sub_491290
[*]调试跟踪
使用调试器在sub_491290函数首设下断点,跟踪到 +13A处
EAX为注册码 ECX为注册码长度 + 1
使用调试器跟踪CheckSerial函数
函数首先从注册码中剔除 '-',并分成三个部分(loc_49045F)
M724D3QF4HB1E11T1ADR = ESI
M 4 Q H E T
7 D F B 1 1
2 3 4 1 1 A
loc_49045F 拼接前两个部分
M4QHET7DFB11
loc_4905A0
E8 32AA0100 | call arw.58AFF0
返回了一个32位的字符串
2f83ed49516c1c9a32aee9cd04e2f327
初步怀疑是md5 用KANAL搜索一下
MD5("M4QHET7DFB11")="2f83ed49516c1c9a32aee9cd04e2f327"
目前为止23411a还没有被使用,通过观察发现23411a是在0~F范围内对应md5的输出
2f83ed49516c1c9a32aee9cd04e2f327
2 3 4 1 1 a
至于7DFB11实际上有意义,代表时间
7DF=2015 B=11 11=17 为日期
注册码最后两位经过实验与可为任意值
[*]综上注册码由三部分组成
第一部分 6位随机的字符串
第二部分 注册码生成日期(推测)
第三部分 作为一个checkSum 用于验证注册码的合法性
后面加上2位无关字符以组成20位的注册码
但是我并没有找到 在哪里对注册码进行的验证 也就是最后比较 23411a的过程
楼主, 你那个"比较MD5的地方在解析日期之前", 引用的代码是怎么得到的呀?不是通过IDA吧? 很不错的,希望能够完美破解。 比较MD5的地方在解析日期之前。
真的非常好先谢楼主分享 谢谢大佬,很棒哦 感谢发布原创作品 感谢分享 感谢分享,下载看看。 感谢楼主分享 感谢分享。