实战追码之详解回溯
先查壳,VC++10编译,无壳程序。既然无壳,直接丢OD啊F9运行起来,直接找关键字符串
智能搜索“address”结果,什么什么都搜不到
搜不到,既然有对话框,那就来对话框函数断点吧
点了确定,直接重新注册。让它断下来,断下来就开始回溯吧,单步F8一路向下
关于回溯,解释下。纯个人理解,如有错误或误导请管理删贴。谢谢
既然没在程序领空,那我们接着F8吧
经过一路F8,终于来到了程序领空,接着开始找关键call和关键跳转(这张图片是激活失败call下面的0131D6C0)那一行代码右键选择跳转来源找到的发现是一个无条件跳转的jmp,那问题来了既然是无条件跳转指令,为什么还走向了失败。答案是肯定有别的跳转跳过了jmp,执行了jmp下面的代码,之后一路走到了激活失败。那就接着找跳过jmp的跳转源头
既然是这个je跳过jmp走向激活失败,那怀疑它就是关键跳转,而它上面的call一般就是关键call了。那就给它们F2下断,F9重新运行程序点注册
再次点击注册,程序被断再了关键call处,F7进call看看能不能找到真码
进call后一路F8注意观察寄存器窗口和堆栈窗口,接着发现一个循环直接打断
打断循环后,寄存器窗口出现了疑似的真码。复制下来,用它再次注册。该程序注册码是根据邮箱来生成的,注意邮箱和注册码对应
再次点击注册后,那个je果真不跳了,那应该就是注册成功了。直接F9让它运行起来
果然不出所料已经授权成功
关了OD再次打开又提示注册,可能在启动时检测了邮箱,非邮箱格式的注册后,再次打开会注册失败。使用邮箱注册,重启依然注册成功。
OK既然已经授权成功,那就完美破解了。关于程序的用途,看下图。我也不知道他是干啥用的,经常办公演讲的应该知道吧{:301_1008:}
最后附上原程序链接,方便大家练手https://www.lanzouj.com/i5hwdwj
您的回复和评分就是我最大的动力,玩的开心,也别忘记回复啦{:301_997:}
END
非常不错支持
{:1_908:}昨天按楼主给的链接下载了一个,安装了中文简体。然后用PE一查,呃呃,还是VC++,没加壳。。果断用OD加载。。好吧。查找字符串,堆栈找消息框。。怎么找都是在系统领空,中间有一段代码会在系统领空跳到0040那一段程序领空。。只看到了获取用户输入的用户名和注册码。。然后又返回系统领空了。。那个崩溃啊。。跟到最后直接到retn..终止了。。这时我真想按delete。。 够详细! 感谢分享!!! 非常不错支持 兄弟,漂亮{:301_993:}谢谢分享 一个命令断能解决的搞了N多F8,差评。 {:301_997:} 吾爱有你更精彩 明码比较的都是软柿子,恭喜恭喜! 感恩分享,很好的教程一看就懂。