反汇编破解入门

最近看《加密与解密》这本书,他的第一个例子是用查找字符串的方式完成的,但是现在很多软件无法用这种方法完成。作为一位菜鸟,想研究一下利用API断点的方式完成反编译。就用了这个最简单的序列号保护程序作为练手工具了。

 

首先打开Ollydbg打开要破解的软件,添加API断点。当然之前已经运行过软件了,大致知道弹窗类型,于是就很自然的选择了MessageBoxA()与MessageBoxW()(因为不知道字符类型嘛)。

 

然后运行,随意输入序列号,发现断点断到了这里:

 

好吧,这里应该就是传说中的MessageBox()了吧。现在沿着堆栈返回到Call这个函数的地方:

Ollydbg果然是个好东东,整个函数过程都标注出来了。现在继续往上面走,看看到底是哪个地方调用了这个函数。结果我往上面走遇到两个地方:

作为一名菜鸟,我在这两个地方耗费了好久的精力,结果毫无收获。其实这两个函数不是判断函数。我本能的感觉上面就是判断函数(好吧我每次写代码都是这么判断的)。但是其实不是。继续往上面看,有个setwindowpso().想来想去,这里可能还是为了初始化Messagebox()。其实后来我发现我也是逗了,因为抬头一看寄存器窗口,就有:

我靠,这里明显还有准备写入的"WrongXXX"什么的嘛。明显这里还是准备MessageBox()的地方。

 

好吧,现在继续往上走,彻底走出这个调用。

里有多个调用的地方,一个个试试,然后多下几个断点。看看是哪个地方调用的:

 

重新运行,发现断点断到了这里:

恩恩,这里好像是序列号程序自己的函数,可惜我功力尚欠,实在搞不懂为啥明明直接弹窗的地方特地有个Call- -。

沿着跳转向上,到了这里:

其实这里都可以看出来了,明显这里是多个判断的地方,出错弹窗。就在上面的地方断点,如果担心不行的话,就多设几个断点呗。但是这里就麻烦了,必须但不进入,嘿嘿。这种300KB的小程序还好,大程序就讨厌了。好吧,其实明显上面的那个是必须经过的,那么就是他了。于是,知道了用户名:

输入正确的用户名,再次运行,来到另一个认证密码的函数,得到

此时发现,咦咦咦咦咦咦!!!????怎么这么熟悉啊?这熟悉的味道,这熟悉的味道,这熟悉的声音,不就是

好吧,我思维定式了,总以为函数开始的时候是PUSH。如果按照书上的方法,直接一个参考字符串就解决了,我居然花了两天的时间。0.0

就当做积累经验了。。。。。。。

 

转载于:https://www.cnblogs.com/matrixdogLOL/p/4179275.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值