本文针对linux版本的010Editor进行破解,使用的版本为截止发文的最新版v16.0.4(64bit)
未经破解的010Edior试用版有试用次数/试用天数限制,运行软件后显示的浮窗中可以看到试用信息。
我们可以根据Evaluation Version、Uses Left这些关键字来定位到相关函数。这里搜索字符串Evaluation,找到以下结果:
这些字符串的引用都来源于同一个函数GetStatus(),分析此函数发现此函数的功能是根据函数CheckStatus()返回的状态码来控制软件打开时浮窗显示的内容,据此定位到CheckStatus()函数并猜想此函数就是注册状态的判断函数。
对返回值(状态码)作对应表如下
| 状态码 |
含义 |
| 219 |
授权有效 |
| 375 |
试用到期 |
| 275 |
授权无效 |
| 237 |
需要升级,试用过期 |
| 47 |
日期异常 |
| 249 |
特殊试用(Evaluation) |
| 524 |
旧版本授权,需要升级 |
授权有效时的页面显示逻辑比试用更复杂,为了使结果更可控我选用试用状态。
(这里解释一下,授权有效时需要进行授权文件的解析,而试用状态仅需计算剩余次数/天数,我们没有授权文件不确定授权解析过程会不会影响破解结果)
这里我选择的破解方法是直接使函数返回249,原函数:
在 0x3998C8 处放置 mov eax, 0F9h + ret,总共 6 字节,后面用两个 nop 填充至原 8 字节边界。
B8 F9 00 00 00 mov eax, 0F9h
C3 ret
90 nop
90 nop
修改后函数:
保存patch后给此文件加上执行权限,运行时浮窗显示试用天数/次数为0,但可以正常使用
About页面:
|