某USB数据恢复软件详细追码过程
老规矩查壳,显示VC++9.0无壳程序。直接丢OD了先切换到英文吧,发现好多英文的切换到中文什么都搜不到
随便输入,看看有什么突破口
字符串最直接最有效,智能搜索“sddress”吧
什么都没搜到,既然是VC++那就使用按钮事件吧,特征码还记得吧sub eax,0a
结果是按钮事件不能用,下一个就找不到了。然后既然它是对话框,那就下messageBoxA,还是断不下来A/W都用了还是断不下来
那就无脑全部下断对话框API断点,反正它是对话框,就不信断不下来。
结果可想而知,无差别杀伤,各种断。刚把程序切出来就断了下来,显然这不是我们想要的断点,取消它,让程序继续执行
取消后再次运行,点了注册断下来了。重点来了,既然断下来了,那就回溯吧
回溯第一次发现并没有跳转跳过它
继续回溯,第二次好多了跳转,经测试这里不是核心
接着F8发现程序运行了,点了确定断下再次F8单步,感觉越来越接近真相了,出了这个call应该就是核心地带了。
F2段首下断,重新点注册
再次注册,果真程序断在段首。那就F8单步分析它吧
这个判断应该是判断邮箱不能为空
这里应该是判断注册码不能为空
这个判断就是刚才提示我们邮箱不正确的地方了,我就要用“一别两宽”,所以给他jnz改jmp无条件跳转
都通过了,剩下应该就是对比注册码了,注意观察寄存器窗口和堆栈窗口
出现了一个疑似注册码的数组。继续F8又出现一组。统统复制下来,备用
再向下单步就是注册失败提示了
那就测试下那一组才是真正的注册码吧。我用的不是邮箱,所以没退OD方便调试,是邮箱的可以直接退出OD了。实在不行把判断邮箱的jnz改成jmp直接保存无论是不是邮箱他都不会再提示不是邮箱格式了
第一组失败。
第二组成功注册。
关闭程序再次打开注册和购买的按钮都消失了。
至此,价值39.99美元的USB数据恢复软件追码完结,约合人民币275元{:301_997:}
附上程序链接http://一别两宽amazing-share.com/usb-flash-drive-recovery.html删除文字即可
有兴趣的可以做下内存注册机{:301_998:}
END
小白心里苦啊。
经常看到的教程都是,我们查找命令 xxx:为什么要用这个命令查找。不知道。。。。
然后我们找到了XXX,这一看就不对,下一个:我也不知道对不对啊,我看着都一样。
没理解到精髓,按教程来对同一个软件确实有用,换个软件就不通用了。 本帖最后由 无闻无问 于 2019-7-30 13:05 编辑
这个软件厂商有点强悍,好多软件,各种转换与恢复软件呢?但奇怪的是,防范逆向的措施是否不到位?是不想防?还是故意不防?:lol
https://static.52pojie.cn/static/image/hrline/1.gif
https://static.52pojie.cn/static/image/hrline/1.gif
这个软件,用暂停法要快些,在输入假码后,弹出错误对话框后,直接暂停。
然后堆栈往下找,一下就可定位关键判断函数0x00453490……
下断后,单步跟不了多久,即可追到真码……
学习了,感谢楼主辛苦劳动,受益匪浅^_^ 谢谢分享的追码技术~!! 学子了 看上起有点复杂啊 膜拜,学习一下 大神,感谢分享 高手啊,啥时才有这技术{:1_893:} 感谢楼主分享!
谢谢分享的追码技术~!!