某恢复软件,超详细追码过程。(教程谈不上,不对之处还望指正)
先查壳吧,帮助很大的。像我这样的小白,OEP未熟记。知道啥语言编写方便对症下药,啊呸是对症下断。无壳,丢OD直接运行熟悉下软件过程。运行起来点了注册提示“注册码与注册名不匹配”
搜索“注册”。什么都没搜到,应该就是被加密了。
搜不到字符串,既然是VC++的那就下API断点吧,回到反汇编窗口快捷键Ctrl+F9输入“messagBoxA”也可以直接输入个“mess”我们选择“messagBoxA”也可以。中文意思好像是“对话框”“消息框”吧
下好断,返回到程序,再次点击注册。程序被成功断下。接着要回溯,快捷键Alt+F9(执行到用户代码),至于为什么要回溯,这就牵扯系统领空和程序领空了。有机会再说。
回溯后,找可以跳过错误提示call的跳转。
440F25处的jnz,可以跳过“错误提示的call(子程序)”我们要让他实现,所以改成jmp(无条件跳转)。改了jmp测试后也不成功而是提示“退出程序,下次启动时激活”这就说明改好了,还有个重启验证。保存一份改了jmp的程序。在OD载入已修改的程序(jnz改jmp)的那一个。
既然是重启验证,那还要下断点。(重启验证常见的是ini文本和注册表验证)经查找,这款用的是注册表验证。那接着下注册表验证断点。
载入修改的程序,在OD依次点击,插件——》注册表处理函数——》RegOpenKeyA——》确定
下好断点后F9运行程序,程序成功被断下,接着Alt+F9执行到用户代码,然后就是F8单步跟他走,看看玩什么鬼把戏。
一路向下单步,看到43C2B7处的jnz没跳过,且堆栈窗口出现了程序名未注册字样,基本可以判断jnz为验证关键跳转,那么临近jnz的call就是关键call了。
在43C2B0处的call F2下断。重新运行程序,程序断在43C2B0处。接着就是F7单步步入,进去看看能不能找到真的注册码。进call后又出现两个call,(在关键call里面)经分析,4756DC处的call取了假的注册名和注册码,4756E3的jnz开始判断(有注册名和注册码跳转实现,跳过4756E7处的jmp,开始运行4756F7处的call(核心验证)。没有注册名和注册码则跳转不实现,运行4756E7处的jmp跳过4756F7处的call,退出重启验证。)那简单了,我们要进的就是4756F7处的call(F7单步步入)
进call后发现了两个循环,分别运行到循环的位置时,选中下一行代码F4一下,打断他的循环(鬼知道他要循环多久,所以不让他循环,打断他)在经过第二个循环的时候寄存器窗口出现了假的注册码(这时候,就要注意了)
两个循环都打断后,接着单步F7,不出所料出现了疑似真的注册码和假的注册码对比。
那就复制下来吧,尝试注册一下。
关闭软件,重新打开。惊喜还是失落就看着一哆嗦了
成功,追码到此结束。
期待超级硬盘数据恢复软件的追码教程 一别两宽丶 发表于 2019-7-9 19:51
算法?太深奥了,学习中。内存注册补丁应该也够用。不过学到老,活到老
咳咳既然都走到这一步了。
百尺竿头更进一步呢。。。
再说了,内存注册机看起来多low。。。
注册机多装b{:17_1068:}看起来就高大上。。
咳咳虽然过程更痛苦,但是结果肯定也是更开心的。。。
有空可以看看{:17_1088:} 感谢楼主分享 还是相当详细的教程,谢谢分享。 破解思路很奇特 学习学习{:301_975:} mark一下下 我算看明白了吾爱会员这么多主要是大神太多 策士 发表于 2019-7-9 16:29
期待超级硬盘数据恢复软件的追码教程
已经有超级的注册机了 MArk,不错,厉害呀,