先运行程序打开about,发现这是一个未注册的软件需要注册后才能使用里面的工具,所以随便注册一下,跳出一个提示说注册的是非法的邮箱,所以就可以以此做为突破口来破解这个程序

将提示的语句作为关键字去找出这段程序,重新载入程序,右键查找-所有参考文本字串

拉到最上面右键-查找文本

然后输入关键字

找到这个关键字的所在地址,双击进入这行程序

找到程序之后发现这是在一个跳转之内的而这个跳转之后就是提示“谢谢您的注册”所以这是一个关键跳转,给它加上注释

然后往上看,发现判断这个跳转是否实现是这个指令,如图
这里al al的值是为0的并且不能修改,而test起到的是and(与)的意思不能修改al的值只能修改标志位Z,两个值都为0,跳转就不能实现,给它加上注释,然后再往上看,发现了一个call语句(调用一个函数),是可以修改al的值的。

为了待会能够准确的走出来给这个call语句也下注释

在这里下个断点然后执行,跳出窗口点击about,用刚刚注册的那个邮箱再注册一次

点击注册,跳到断点处,然后f7跟进。

观察整个程序,发现下面有个call,call下面有 test al,al 也会影响al的值,所以给call做注释

然后继续往下走其中会经过很多个call,但是里面的eax值使一个地址,所以这和注册与否是没有关系的,所以跳过

然后一直走,最后走出来了

然后执行程序,打开about再注册一次点击确定再次来到断点处

然后f7跟进去,f8继续走,走到需进入2,进去。然后发现又有一个call。但是先不急着用f7进去不然进去就出不来了。

走到call那行,按回车键进去看看。发现并没有什么

然后f8继续走就走出来了,然后继续往下走就发现了关键点。这里有一行是al的值赋给bl,然后隔几行是bl又赋值给了al。然后猜测这里很有可能就是判断是否注册的点,因为不想al的值被下面的call改变,所以先赋给了bl

所以上面的那个call是需要进入看一看的,记下注释

进入之后发现其实就是bl的值赋给了al

然后又走了出来

然后继续走,走到需进入3再进去看看,然后发现需进入3和需进入2里面是一样的,然后继续走就走出来了

然后走了一圈又出来了,然后重新注册再进入走到需进入2,然后再进入需进入4,然后f8一直走,走到这停下来,发现这是个关键点,最终目的是为了把bl的值赋给al

然后试着把al的值改成1,变成已注册

然后运行。。发现成功了。。
