AmIzero 发表于 2019-8-6 22:03

分析某录音软件(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的过程

mingcaizhang 发表于 2019-8-7 13:21

楼主, 你那个"比较MD5的地方在解析日期之前", 引用的代码是怎么得到的呀?不是通过IDA吧?

hao138 发表于 2019-8-6 22:24

很不错的,希望能够完美破解。

梦游枪手 发表于 2019-8-6 22:46

比较MD5的地方在解析日期之前。

wangw0220 发表于 2019-8-6 22:53

真的非常好先谢楼主分享

棟棟妖 发表于 2019-8-6 22:59

谢谢大佬,很棒哦

sunil 发表于 2019-8-7 01:09

感谢发布原创作品

龍飛舞 发表于 2019-8-7 07:36

感谢分享

JerryLia 发表于 2019-8-7 08:24

感谢分享,下载看看。

aidongman 发表于 2019-8-7 08:33

感谢楼主分享

peter1025 发表于 2019-8-7 09:02

感谢分享。
页: [1] 2 3
查看完整版本: 分析某录音软件(Windows)