irfanView v3.95 破解分析
软件基本信息
软件名称 | 软件版本 | 编程语言 | 加壳情况 | 难度 | 难度说明 | 练习日期 |
---|---|---|---|---|---|---|
irfanView | v3.95 | C++ | ASPack | 简单 | 验证部分逻辑在窗口消息处理过程里,通过提示对话框可轻松定位 | 2023.02.15 |
功能:小巧的图片查看软件
加壳情况及脱壳
查壳:ASPack
脱壳:ESP定律即可
验证方式
重启验证:是、否
暗桩保护:无/自动关闭程序或电脑
注册信息:
- 启动弹出注册NAG
- 标题有“未注册版(Unregistered)”
- About有“未注册版(Unregistered)”
- 帮助里有“注册(Register)”按钮
破解过程
定位注册关键函数
输入错误的name和code,然后弹窗之后暂停程序,向上追溯,执行到用户模块的时候,发现该弹窗来自MessageBox的调用:
附近还有很多Incorrect registration的引用,实际上只是各种字符串都用一个地址保存,所以看起来很多,再往上一层就是窗口循环了,所以这里应该是消息处理函数,注册函数就在上面
上面不远处有个打开ini的部分,这里应该是读取注册信息的:在这里下断点
点开程序的注册按钮,发现断下在这里了,这里按照正常流程往下走,不远处就是一个打开模态对话框的调用DialogBoxParamA:
对话框打开了,等输入完点确定后,程序才会继续往下走,下面紧接着就是判断name和code的长度,code需要是全数字,不然会提示错误
然后再往下有一个函数的参数刚好是name和code,这就是注册函数了应该,返回值是0,就弹出注册失败,当修改成1,则显示注册成功
修改注册函数暴力破解
只要让eax返回非0就行,原本注册函数结尾代码:
修改后:
随便输入任何内容均可注册成功: