李喜的blog
1 min#逆向#安全

逆向一个授权校验:从字符串到补丁表

记录一次典型的授权校验分析过程:定位校验函数、还原算法、构造测试向量,最后产出可回滚的补丁表。

目标

样本是一个带机器码绑定的桌面程序,启动时弹窗要求输入授权码。目标是搞清楚它的校验逻辑,并在副本上验证。

第一步:定位

先用 strings 找可疑字符串,再用交叉引用回溯到校验函数。

strings -n 6 sample.exe | grep -iE 'license|serial|activate|机器码'

关键字命中后,在反汇编器里看引用它的代码,通常能看到一个明显的比较分支。

第二步:还原算法

校验一般由三部分组成:机器码归一化、哈希/异或运算、与用户输入比对。把这三段拆出来,就能写一个独立的验证脚本。

常见的坑

  • 机器码可能被做了变形(大小写、分隔符、截断)
  • 校验结果可能不是布尔值,而是一个派生密钥
  • 有些程序会在多处重复校验

第三步:补丁表

在副本上打补丁,记录每一处的地址、原字节、改后字节和效果。

地址 原始字节 修改后 效果
0x00401A2C 75 1E 90 90 跳过失败跳转
0x00401B10 E8 ... B0 01 C3 校验函数直接返回真

第四步:验证

改动前备份原文件,改动后跑一遍完整流程,再执行回滚脚本确认哈希一致。

小结

逆向的核心不是工具,而是把「程序怎么判断」这件事拆成可验证的小步骤。

跳到评论 ↓

相关文章

评论 0

还没有评论,来说点什么都行。

写评论

0/1000

评论会经过关键词过滤;带图片的评论需要审核后才会显示。