圆月山庄资源网 Design By www.vgjia.com
目标软件:Wise Data Recovery,免费版只能恢复2GB数据。
主程序拖入PEID,查壳,发现并没有加壳
这次还是通过暂停+查看调用堆栈的方式破解程序。
拖入OD,F9运行,打开注册框,用户名、邮箱、注册码随便输入,点击注册
当出现“注册码无效....”对话框时暂停程序
此时Alt+K,查看调用堆栈,发现OD显示的调用堆栈不大正常(调用堆栈显示的不全,emmm,我也不知道怎么回事,希望大佬们指导)
我们还可以在堆栈窗口,往下翻,会发现“注册码无效....”,紧接着下面有个返回到 WiseData.00C44534 来自 WiseData.00BC0070
选中,按回车,来到判断注册是否成功的函数,往上看在0xC444F1的地方有个je,这个就是关键跳。
在0xC444F1下断点,运行程序,再次点击注册,程序会在这里断下,可以看到,此时跳转是没有实现的,继续运行就会显示“注册码无效...”,把它改成jmp,使跳转恒成立,F9运行程序,仍然显示“注册码无效...”,说明后面应该还有判断。
再点击一次注册按钮,停在0xC444F1后F8单步执行,发现第二个判断在0xC44586,现在这个跳转已实现,继续运行将显示“注册码无效...”,所以这个je要右键->二进制->NOP填充
F9运行程序,好家伙,联网验证。。。。
我们继续用调用堆栈法,出现这个对话框,暂停程序,在堆栈窗口往下翻,找到“很抱歉...”,下面有返回到 WiseData.00C4541B 来自 WiseData.00BC0070,回车,来到网络验证函数
很显然,这是一个switch分支结构,往上翻
发现分支1(起始地址0xC451DA)是注册成功要执行的代码,我们可以把分支表上面的jmp dword ptr ds:[eax*4+0xC451B9],改成jmp 0xC451DA,所有分支都跳到0xC451DA
F9运行程序,再点一次注册,WTF????虽然显示注册成功,但实际还是免费版。。。。
没办法,只能从分支1开始单步执行,看看到底哪里出了问题
。。。。。。。。。此处省略10000字。。。。。。。。。
经过反复调试发现,当分支1执行完后会跳转到0xC45429处,从0xC45429往下执行,在0xC45450处有个je,这个跳转是实现了的,实现了就不会解除限制,所以要把它用NOP填充才能解除限制。
综上,把上面所有修改复制到可执行文件,再运行发现运行不了,有文件校验。。。。
仍然用调用堆栈法破解。把修改后的文件载入OD,F9运行,出现这个错误框后暂停程序,Alt+K查看调用堆栈。
在如图所示位置右键->查看调用(至于为什么是这个位置,需要逐一右键->查看调用,找到可疑的je或jnz,并修改测试),在CALL上面有个je,现在错误框显示了,说明这个CALL被调用了,也就是说je没有实现,如果我们把je改成jmp就会跳过CALL,错误框就不会显示。
把修改复制到可执行文件,成功绕过了文件校验。
现在还有一个问题,就是每次运行程序都要注册一次,比较麻烦。。。。
推测程序在启动时应该读取了注册表,通过注册表中的信息判断注册信息是否有效,如果注册信息无效就会变成免费版。载入修改好的程序,对注册表函数下断点
不断按F9,直到堆栈窗口出现“User Name”
Alt+K查看调用堆栈,在如图所示位置右键->显示调用
来到启动时读取注册表并判断注册信息是否有效的函数,可以看到,程序启动时读取了用户名、邮箱、验证码
取消注册表函数断点,单步运行,发现0xC45DFF处有个大的跳转,如果跳转实现,就是免费版,把这个jnz用NOP填充,成功得到永久免费版。
原版程序:https://pan.baidu.com/s/1VtZ6nrRSGdpS7BVbv7DP2Q 提取码:tw7j
补充知识:switch代码在汇编层面是怎么实现的(不考虑分支数量大于256的情况)
当分支数(case+default)<=4时,实现方式类似于多分支if..else,使用连续的cmp xxx,je xxx;cmp xxx,je xxx.....实现。
当分支数>4时使用跳转表实现,编译器会将case语句按升序排好,然后全加上或减去一个数,使第一个case的值为0(比如case 1,case 2,case 3会全部减1变成case 0,case 1,case 2)。当执行switch语句时,先把传入的数和case的最大值比较,如果比最大值大会跳转到default,否则根据跳转表跳转。跳转表是一维数组,每个元素都是一个地址,占4字节。跳转表的0号元素对应case 0代码的首地址,1号元素对应case 1代码的首地址....以此类推,程序会使用jmp dword ptr [table首址+传入的值*4]跳转到对应代码去执行。
如果case不连续(比如case 0,case 3,case 5),则跳转表中的对应项填default代码的首地址。
标签:
某数据恢复软件的破解过程
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月16日
2024年11月16日
- 三国志8重制版恶名怎么消除 恶名影响与消除方法介绍
- 模拟之声慢刻CD《柏林之声5》2019[原抓WAV+CUE]
- AlexandraSoumm-Parisestunefte(2024)[24Bit-96kHz]FLAC
- 李嘉《国语转调1》[天王唱片][WAV整轨]
- 不是哥们 这都能跑?网友展示用720显卡跑《黑神话》
- 玩家自制《黑神话:悟空》亢金星君3D动画 现代妆容绝美
- 大佬的审美冲击!《GTA6》环境设计师展示最新作品
- 纪晓君.2001-野火·春风【魔岩】【WAV+CUE】
- 汪峰.2005-怒放的生命【创盟音乐】【WAV+CUE】
- 群星.1995-坠入情网【宝丽金】【WAV+CUE】
- 群星《谁杀死了Hi-Fi音乐》涂鸦精品 [WAV+CUE][1G]
- 群星1998《宝丽金最精彩98》香港首版[WAV+CUE][1G]
- 汪峰《也许我可以无视死亡》星文[WAV+CUE][1G]
- 李嘉-1991《国语转调2》[天王唱片][WAV整轨]
- 蔡琴2008《金声回忆录101》6CD[环星唱片][WAV整轨]