【文章标题】: 学完王爽汇编——试练品 1 【文章作者】: sentaly 【作者QQ号】: 138121310 【软件名称】: xxxxxxx 【软件大小】: 24.14 【下载地址】: 26cK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3q4E0L8$3W2K6L8$3k6@1i4K6u0W2j5$3!0E0i4K6u0r3 【加壳方式】: 无壳 【保护方式】: 网络验证(软件说的,我还真没发现,我觉得是:注册码验证) 【编写语言】: Borland Delphi 6.0 - 7.0 【使用工具】: peid,OD 【操作平台】: Windows xp sp2 【软件介绍】: 一款国内目前最专业的网络监控软件产品。。。。。。 【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教! -------------------------------------------------------------------------------- 我是一名小鸟,上次发了一个脱壳的文章,无人问津,伤心中。这次破解个小软件吧。 新手可以看看这文章,高手不要浪费时间。不懂可以加Q问我,知道的一定告诉你。呵呵。 --------------------------------------------------------------———————————————— 晕,因为要截到栈那里,所以图片比较大了。。。。将就看下吧,点下图片会出来大的。【详细过程】 安装---试用 有提示“序列号长度错误!” PEID查壳:没有壳。Borland Delphi 6.0 - 7.0 开始。 OD载入。 调试之前,添加000006D9这个异常。 bp MessageBoxA,当然也可以搜索字符串。不知道可以不可以我没搜索字符。 F9,程序运行了。去注册,断下来了。 ALT+F9,在程序里会跳出一个窗口,提示就是“序列号长度错误!”确定。就跳到下面这里了 //单步到这里返回了004F852 新手嘛,只能这么理解了,我们现在在一个CALL里。返回了,就返回到调用他的上层了。不知道这样理解对不对? 返回到这里。 cmp eax,20.eax里放的应该是我们输入的假码的长度了。20H(16)=32(10),这里自己改吧。想怎么改都行。20改成6,下次输入时输入6个字符就好了。我们这里改成6吧。 重新载入,MessageBoxA的断点先不要删,后面用得着。 再次f9运行。到程序里继续注册,输入任意6位的注册码。确定,断下了。 OD停在了这里。 单步走到这里。向上看,我们看到提示的信息。 本来呢,走到这里下面我也不懂什么意思了。里面好多跳,也好多CALL,但是我看不懂了。 我想了下,我去查了下字字符串看看有没有正确的提示。结果真被我查到了。 可是就算查到了又有什么用呢? 程序有很多分支。有错误提示的是一条分支。有正确提示的又是一个分支。从上一个。。。。 不好说啊,我做个图吧。 说真的,写篇文章比破解难,让别人懂你的意思,真的很难,特别对我们这些文采不好的。 有了上图的说明,就简单了,正常的情况下,我们输入假码是得不到正确提示的。说明路走错了。 现在我们有错误提示了。现在就开始找一条正确的路吧。 先看看是从哪跳到正确提示这来的? 怎么查?先运行程序。然后ctrl+g来到正确提示处。用鼠标点到这个段开始。见图 本地调用来自 004F7F7D 选择转到CALL来自004F7F7D 在这里下个断啊。或者记下这个地址。记好了吗?不要怕麻烦 继续跑到这个段的开头,看他的调用 。 继续 继续 这到里了,没有调用了,怎么办? 哈哈,我们应该高兴才是,说明我们已经来到程序的第一层了。(我个人的理解不一定对的) 先整理下程序的流程。判断注册码:
[培训]科锐逆向工程师培训第53期2025年7月8日开班!