工具:OD Peid 目标:齿轮计算软件(设计、尺寸、精度、强度).exe Peid查壳:无壳 编写语言:Microsoft Visual Basic 5.0 / 6.0 目的:追踪注册码,对软件进行注册
思路: 破解追踪注册码或者进行暴力破解的时候,破解的关键都是找到准确的位置,然后进 行操作。 不然的话一大堆代码,慢慢看是漫无止尽的,我们就需要想法设法找到我们需要找的位置。
下面开始破解的步骤
方法一: OD直接载入,然后F9运行(开始会出现下图次数限制,点击确认即可)进入软件页面
进入软件页面后,我们可以尝试随意填入注册码看有什么提示、。我们会发现如图 提示:您的注册码输入不正确.......... 也许这会儿就会有人会想使用查找字符串的方法来定位,大家可以试试,这样是找不到的。 那这时我们该怎么办呢? 这时我们就应该想想了,既然此处弹出提示错误的窗口,那么肯定是软件判断了你注册码不正确的情况下才会告诉你错误 ,它总不会在你什么都没动的时候下就提示你错误吧。所以我们可以知道,在提示错误之前会有一个判断,判断你的注册码错误之后, 它就会调用一个消息框来告诉你,你的注册码错了、。 因此我们现在先找到调用这个消息框的位置,然后再往上面找,至于下面一大堆的地址就不关我们事了。 怎么找到调用信息框的那个地址呢,很简单,当软件停在上图,也就是停在提示注册码不正确的那个框时, 我们回到OD,F12暂停,Alt+K来到堆栈 (或者进行按钮操作会更快 ) 我们来到调用堆栈,就可以看到下面的图,。可以看到最后一个? MSVBVM60.rtcMsgBox 这个命令就是调用错误消息框的命令,选中它右键显示调用
来到了调用消息框的这个地址,我们第一个目的达成了。
就开始往上面找判断吧,为什么要找判断呢?这里解释一下,软件判断你的注册码对与错,肯定是要有判断条件的,这个条件是什么? 显而易见就是正确的注册码,拿你的注册码和正确的注册码一对比就判断出你的是对是错。、 那就开始向上找吧,但是上面用样的是一大堆的代码,我们该怎么找,其实不难,看上去上面还有许多代码,但事实上判断是不会太远的,往上找哪个是真正的判断? 往上找的时候我们就看跳转,而且是大的跳转,可以跳过错误提示框那个地址的跳转。 可以跳过提示框的跳转意味什么?就意味软件不会提示错误,不提示你错误代表是什么?当然就是注册正确了 由于图文教程我直接放出向上拉找到那处关键跳转, 跳转跳与不跳就看判断,很明显的这个关键跳转上面的那个蓝色的CALL 就是关键的判断了。 终于我们找到了我们要的判断,我们就在这个call 使用F2下好断点。 重新载入一次程序,F9运行,操作至填写假的注册码点击注册按钮,这是OD就会自动断下来。 就是如图这样 眼尖的朋友可能就已经看到了,没错,大家看看寄存器,111111111111便是我们的假注册码,而上面的一堆数字呢? 是的,那就是我们追寻的真注册码、我们复制,打开程序进行注册就行了。
方法二: 方法二我们利用的还是消息框,找到消息框的地址,再往上回溯,但是这次找的方法不同 是通过下API断点的方法定位消息框的地址。API是什么,可能新手看到不知道什么意思,我之前也打算做一节教程进行讲解。 在这之前不认识的朋友也不必理会,当它是一种快捷的断点方式。 这次我们要用的是bp rtcMsgBox这个断点,rtcMsgBox大家在方法一调用堆栈那里就看见, 它的意思就是消息框的意思,而这个断点的作用就是在程序一调用消息框的时候OD就会帮你断下来。 我们在命令框输入bp rtcMsgBox,回车一下,断点就下好了。 F9运行程序,OD便会帮我们断下来了, 这时我们停留在的是第一个消息框的调用call内部第一句,因为我们已经来到了内部,所以我们ALT+F9退出内部, 这是会弹出我们断下的消息框,你会发现弹出的消息框是我们打开程序提示的那个次数限制消息框 我们点击确认即可回到我们的地址了 看到注释是不是很眼熟,MSVBVM60.rtcMsgBox,但是此消息框不是错误提示的消息框,而是次数限制的消息框,并不是我们要找的。 这就是API断点的特点,bp rtcMsgBox的意思已经说过了是断在消息框处,也就是只要一有消息框它就会断下来。 就像现在断在了次数限制这第一个出现的消息框处, 好。既然不是我们想要的,那我们就继续F9运行程序,让它运行下去断在第二个消息框.......以此推论,直到断在我们想要的那里。 当然一般没有那么多个消息框, 运行一下,到了软件界面。输入假的注册码,点击现在注册。 这回错误消息框还没有弹出,我们就断了下来 一样的是在调用消息框CALL的内部,来一下ALT+F9 弹出消息框 点击确定,回到我们的地址 往上的一句就是我们要找的调用错误消息框的地址了 剩下来的往上步骤就和方法一相同了
方法三: 方法三是回归到新手朋友最喜欢的查找字符串的方法,本来呢,程序是查找不到字符串的, 相当于查不到我们要的那几个中文,但是我们可以通过把我们要找的字改成英文或者数字就可以查找到了。 本程序错误提示为:您的注册码不正确,请重新输入 我们如果是使用查找字符串的方法就是找到这几个字的位置,但是如一开始所说查不到,我们就修改一下。 具体方法如下 由于程序属于VB,可以使用GetVBRes这款软件对程序进行修改。 用GetVBRes打开本次破解的程序:齿轮计算软件(设计、尺寸、精度、强度).exe 如图所示: 由于我们要修改的中文属于双字节,我们就点击双字节资源。 同时往下寻找到我们要修改的提示 选中双击,进行修改 改成你想要的提示,如图便是改为poke8888888888 点击确认 再点击红圈那个保存按钮,进行覆盖保存即可修改完毕。 这次我们再打开修改的程序,输入假的注册码,就会发现提示的错误已经改为我们刚刚修改的内容 这时我们在使用OD打开我们修改后的程序,直接查找字符串。 现在我们就可以看到了,那个修改后的错误提示(事实上也是原来那个只是改了文字),我们双击就跳到了错误提示的那个地址 再往上找就可以见到关键的判断call,相信下一步不需要我再教了吧~ 另外我发现这里的地址比方法一 二 往上找离call更近,可以更快的找的call。 掌握这三种方法,各位可能对追踪注册码也有所了解了~。 |