title: Internet Cyclone 2.28 破解分析 date: 2023-03-16T10:14:37Z lastmod: 2023-03-16T11:16:05Z
Internet Cyclone 2.28 破解分析
软件基本信息
软件名称 | 软件版本 | 编程语言 | 加壳情况 | 难度 | 难度说明 | 练习日期 |
---|---|---|---|---|---|---|
Internet Cyclone | 2.28 | Delphi | 无壳 | 简单 | 可以追注册表验证逻辑,也可以追注册按钮的逻辑 | 2023.03.16 |
启动Nag:
主界面:
注册界面:
这是个2017年的软件,比0几年的软件看起来舒服多了
破解过程:
从注册界面入手,搜索字符串
delphi程序的字符串操作一般流程比较长:
可以看到,这里上面经历了很多操作,才到这个弹窗
这里可以猜测注册成功也会有一个弹窗,就高亮这个函数调用往上找,找到关键跳转:
很快可以看到这里,这里是注册通过的弹窗,跳转会跳到注册失败的弹窗处,下面那一大堆都是注册成功之后的处理流程了
这里校验的是eax的值,去上面紧接着的注册函数去追踪eax的赋值:
eax的值最终来自于ebx,当前输入得到的eax的值是-1,最终验证成功需要的eax的值是0,这里可以直接把这条语句改成xor eax,eax
,来完成patch
注册成功弹窗:
打开火绒剑监控行为,监控验证通过这个分支的代码看看后面都做了啥:
可以看到,这里注册成功后,将Name和SerialNumber的ASCII形式写入了注册表
注册成功信息:
重新打开patch后的程序,无Nag了,注册成功
另一种思路
我们知道程序会使用注册表存储信息,那就可以搜索注册表的键,去定位操作注册表的地方,也许程序启动的时候的验证会去访问注册表获取信息:
对下面两个注册表键下断点,程序跑起来:
这里从注册表里获取Name和SerialNumber,然后调用一个验证函数拿到返回值,如果正常运行的话会进行跳转弹出NAG,这里将jne给改成nop即可绕过这次验证
程序再次跑起来的时候,就也是注册通过的状态了