软件基本信息
软件名称 | 软件版本 | 编程语言 | 加壳情况 | 难度 | 难度说明 | 练习日期 |
---|---|---|---|---|---|---|
Acala DVD Ripper Pro | 6.1.2 | C++ | 无 | 简单 | 无 | 2023.08.01 |
练手用的老旧软件(购买页面已经无法访问)
启动窗口:显示未注册,需要输入激活码
内容界面:
- help显示未注册
- 窗口右上角有购买和激活按钮
破解过程:
输入错误的license账号密码:
报错提示信息:Sorry - Invalid licensed name or licensed code
搜索字符串,直接定位到了关键跳转:
这里一边是显示注册失败,一边是显示注册成功
要注意:这里不要修改表面跳转指令(0x00479F74)进行破解,这种的破解是不完整的,每次打开程序的时候一定会再次进入这个注册窗口,因为这种方式只破解了这个窗口按下按钮时候都验证;
这个jne的判断条件是eax,eax常用作保存返回值,附近的这个call一般是验证函数,从验证函数内部打补丁来返回1会更稳妥一些,因为同一个验证函数可能会在不同地方多次调用(代码复用)
经过测试,这里的校验函数会调用1次,来判断是否打开Neg窗口,然后在Neg窗口的OK按钮中再次被调用,只要这个校验函数返回正常,Neg窗口就不会出现
跟进这个验证函数,找到给eax赋值的地方:
可以看到,这里应该是内部的下一个校验函数,根据其返回值来设置eax的值,因为现在已经在验证函数里面了,直接修改这个je跳转为jmp就也行(只修改了1个字节)
保存,再次打开程序:
没有了开头的Nag窗口,也没有了购买按钮,Help页面显示已注册,完成破解