[讨论] Alt-Tab Terminator注册算法逆向

admin 2024年7月14日18:36:27评论16 views字数 1020阅读3分24秒阅读模式

Alt-Tab Terminator注册算法逆向

逆向这个软件的注册算法很容易, 但貌似这个算法是不可逆的, 分享出来看看大家的思路

1. 定位注册算法

(这个程序开着aslr呢, 先用CFF Explorer抹去dll can move属性)

[讨论] Alt-Tab Terminator注册算法逆向

用了mfc写的程序, 用xspy定位到关键函数:

[讨论] Alt-Tab Terminator注册算法逆向

其中id=03fa是序列号那个edit的文本内容被改变事件, id=03fc是'浏览许可证文件'被单击事件
显然分析id=03fc比较方便(这俩事件最终调用的是同一验证函数)

2. 分析'浏览许可证文件'

首先弹出个ModalDialog 选择文件:

[讨论] Alt-Tab Terminator注册算法逆向

然后读取文件内容:

[讨论] Alt-Tab Terminator注册算法逆向

读取的时候会判断文件编码, 普通文本文件就直接读了, 会根据换行分割, 获取name和key.

然后进入验证函数sub_14000F820:

[讨论] Alt-Tab Terminator注册算法逆向

其中MultiByteStr就是'名称', v55就是'序列号', v34, v33没有用到

3. 逆向验证函数

总的来说, 这个函数分两部分, 首先把name大写后进行魔改的rc4加密, 然后把key进行某种自定义的算法, 然后把两个加密后的值进行某种比较, 其中两部分的前5个字节要相等.

3.1 把name进行魔改RC4加密

①首先把name大写后赋值给uint8_t name_upper[256]数组 (这个数组存放魔改RC4加密后的结果):
[讨论] Alt-Tab Terminator注册算法逆向
其中函数开头的sub_14000F670函数是在进行字符串映射:
[讨论] Alt-Tab Terminator注册算法逆向
这串字符串就是key的有效字符, 比如'3'在字符串中的位置是1, 则g_ci_map['3'] = 1;
②然后进行RC4初始化, 下面在初始化S盒和密钥(下图中的byte_140400FC0就是s盒, xor_bytes就密钥):

[讨论] Alt-Tab Terminator注册算法逆向

只不过编译时内联了, 其实应该是先产生密钥, 再rc4_init, 汇编层面放到了同一个循环里
③然后进行256轮魔改RC4加密:

[讨论] Alt-Tab Terminator注册算法逆向

然后name加密就到底结束, 然后进行key的加密.

3.2 把key进行自定义算法加密

[讨论] Alt-Tab Terminator注册算法逆向

这个算法有点冗杂, 这里就不展示了, 可以直接看附件整理好的.

3.3 验证两部分加密结果

name加密结果和key加密结果的前5个字节要相等, 第六个字节要满足下面的条件:
[讨论] Alt-Tab Terminator注册算法逆向

具体算法细节见附件, verify.zip是还原的C代码, bin.zip是原始程序安装包

4. 疑问

这样的验证逻辑, 貌似没法通过name推出key, 或者通过key推出name?
那作者是怎么产生注册码的呢

 

感谢 0xEEEE 的分享

原文始发于微信公众号(船山信安):[讨论] Alt-Tab Terminator注册算法逆向

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月14日18:36:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   [讨论] Alt-Tab Terminator注册算法逆向https://cn-sec.com/archives/2952068.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息