美文网首页《Shark恒零基础百集VIP破解教程》学习笔记
《第1期-03 壳内寻找注册码》学习笔记

《第1期-03 壳内寻找注册码》学习笔记

作者: 听说我在混吃等死 | 来源:发表于2018-03-29 16:44 被阅读0次

    不脱壳直接从内存中找出软件注册码。
    这个软件是通过重启来进行验证的。第一次输入注册码后会让重启软件去验证注册码。

    破解过程

    1. 输入假码
      把自己编的用户名和假的注册码(假码)输入进去。假码不要弄的太随机了,否则在内存中看到后不知道是自己输入的假码。在视频中,作者用的一串 1 作为假码。
    2. 重启软件
      这时,软件肯定是显示未注册的。
    3. 把软件载入OD调试
      软件停在了地址: 0X567001。
      作者让按“Ctrl+G"跳转到 401000。没有过多解释,只是说程序已经运行起来了,把壳运行完了。
      这时,可能会遇到OD提示是否分析,直接点“否”就可以了。如果不小心点了“是”,可以在OD的CPU窗口中右键——分析——删除分析。
      就当自己是零基础了。别问问什么作者这样做,先把问题给记下来。
    4. 搜字符串
      “智能搜索”字符串,按Ctrl+F找到“未购买”,看看它在哪里被用过,双击跳转过去。
    5. 寻找线索
      到了那里后,往上寻找有没有一个跳转会跳到这里。在上翻的过程中,看到了一段代码引用了字符串“Software\engydat”。作者断定这是访问了注册表的证据。由于软件是重启验证的,故一定有一种机制来保存输入的注册码的,而注册表是一个很好的地方。
      作者在这里下了一个断点。

      自己的感想
      为何选择在这里下断点呢?因为软件读取注册表里的注册码后,会和真码进行比较,断在这里,然后进行单步调试,就可以找到真码了。

    6. 再下API断点
      使用OD的“API断点设置工具”在GetStartupInfoA出下了断点。作者的解释是:软件在运行完壳代码把程序脱壳后,会使用到这个API,但是此时并未对注册码进行验证。

      自己的感想
      为何要在这个API下断点?我的理解是由于加了壳,所以步骤5中断点是不能用的,只得在软件脱壳后且未验证之前再下一个断点,让我们有时间来手动激活步骤5中的断点。

    7. 在OD中重新载入软件
      断在了GetStartupInfoA那里,这时是位于kernel32。
      查看“断点”窗口,在步骤5中下的断点会被OD禁用。那里的内容还是未解码的,所以多试几次F9,知道那里出现汇编代码。

      我的感想
      多试几次,多断在GetStartupInfoA那里确实有必要。我在试验时就是一次F9不行,试了2次才可以的。

    8. 禁用API断点
      步骤6中下的API断点禁用掉,步骤5中的断点激活,再次F9运行,这很快就会断下来。
    9. 找到真码
      随后一路F8,注意堆栈窗口中出现输入的假码。
      还会出现几个类似注册码的,都复制下来,并一一验证,看看哪个是真码。
      一路F8会到一个jnz,它控制着是否进入“为购买用户”那里,这就是一个关键跳。
    10. 输入真码
      关闭OD,重启软件。试验找到的“乱码”,其中一个就是真码。注意:用户名也应该是步骤1中输入过的。

    相关文章

      网友评论

        本文标题:《第1期-03 壳内寻找注册码》学习笔记

        本文链接:https://www.haomeiwen.com/subject/xmyucftx.html