zoukankan      html  css  js  c++  java
  • 破解基础篇之第一部分

    在之前学习了一些OD、PEID、补丁制作等工具的运用之后,开始涉入破解的相关学习,因此找来了一些学习资料。废话不多说,现在从基础内容开始实践。在相关实践过程中需要的工具可自行在网上查找,由于本人学习资料和提问都是在吾爱破解网上进行,所以也推介大家在这上面查找自己需要的工具和资料。所有实践程序都可以在该网站上找到,如有问题,欢迎交流。

    简单程序的破解

    在程序破解的基础篇内容中,由于涉及内容相对简单,所以基本上通过以下步骤就能达到相应的效果:

    1、查壳:很多程序加了壳,一方面可以保护其代码,相对应的是加密壳,另一方面是压缩占用空间,相对应的是压缩壳。之所以要查壳,是因为加了壳之后的程序会被相对得保护起来,因此不能被一些编辑软件所编辑。所以,在破解的最初阶段,必须把壳脱了,才能去做进一步的工作。

    2、寻找关键字:在基础篇中,我们运用了很多弹窗信息来做铺垫,因此涉及到一些关键的字符串,我们可以通过查找对应的字符串来确定相关的关键位置。在查不到相关字符串的时候,我们也可以通过下一些断点来找到关键位置,例如messageboxA出下断等方式。

    3、确定关键的跳转和关键call:在很多软件注册等过程中,我们会发现基本上都会是有几个选择,比如注册成功、注册失败。程序如何判断注册是否成功,这里涉及到比较和验证方面,在这之后,必然会有一个关键的跳转,转到不同选择所对应的代码上去。我们只需要找到对应的关键跳转,改变其运行路径,即可达到预想的效果。

    4、修改以达到效果:通过修改关键跳转的方向,我们可以改变程序的运行路径,这样以达到我们的目的。保存修改之后,我们必须重新验证我们是否修改成功,可能我们做的修改并没有完全达到效果,因此还需要做进一步的分析。

    字符串查找

    1、这里用到的一个吾爱的注册类小程序,改程序在输入注册码后会显示相关窗口,如果错误,则会弹出“输入错误”;如果输入正确,则会弹出吾爱的相关介绍。

    2、首先加载该程序,显示对应入口点。

    3、通过右击,智能搜索ASCLL码(有时UNICODE)后,用ctrl+f调出查找窗口。

    4、运行程序,随意输入注册码后点击按钮,记录弹出窗口内容。

    5、在字符串搜索结果界面搜索弹窗内容,双击对应内容,OD会自动跳转到对应代码。

    6、寻找关键跳转,通过分析,可以知道上方JE代码为对应关键跳转到显示输入错误窗口的代码。这里只需要不让它实现,把jne即可。(在破解学习过程中需要一些基本的汇编语言基础知识)

    7、保存对应修改后重新运行程序,随意输入注册码,显示吾爱相关介绍,破解完成

    初识按钮事件

    1、C++ 按钮事件特征码 SUB EAX,0A

    DELPJI查找按钮事件 右击 查找 查找二进制字符串740E8BD38B83????????FF93????????采用CRTL+L键翻页查找 需每一个上断

    易语言按钮事件特征码: FF 55 FC 5F 5E

    vc8按钮事件采用查找 SUB EAX,0A

    vb查找按钮事件时采用二进制字符串:816C2404??000000

    注:识别VB P-CODE编译时,只需要查找不到按钮事件就是P-CODE编译

    2、上述为不同语言编写的程序中,按钮事件对应的代码。按钮事件即为按下对应按钮,程序运行过程中所产生的响应。本实践使用的是易语言的一个小程序,因此查找特征码为FF 55FC 5F 5E

    3、ctrl+B查找FF 55FC 5F 5E,在对应call下断。通过ctrl+l查找所有对应按钮事件响应,全部下断。

    4、重新加载程序,F9运行。点击按钮,程序断在指定位置

    5、点击F7跟进CALL后,通过单步可以发现,程序同样可以到达关键跳转语句。

    6、在这里指出一点:通过查找OD文件目录可以查找到一个UDD文件,该文件是OD调试过程中产生的记录,如果删除该记录,可以删除调试的一些历史。

    追寻注册码

    简单注册码的追寻

    1、在这运用到的一个程序是一个注册程序。首先加载程序,同时运行程序找到注册项,任意输入注册账户和注册码,点击按钮。记录弹窗内容为try again等。

    2、搜索ASCLL码后,ctrl+f键入again后找到对应字符串。

    3、找到关键跳转句后下断

    4、重新加载并运行程序。此时程序跑起来,点击注册项输入注册用户名(这里要记住)后点击注册。程序断在指定位置

    5、单步走下去发现第一个关键跳并没有跳转,说明不是关键跳转。取消断点,继续单步,发现第二个关键跳实现,说明这是个关键跳转。

    6、观察堆栈中信息,可以看出有对应可疑数据。该数据可能就是所需的注册码,对此做出记录。

    7、验证是否为注册码

    8、这里提一点注意点,在第四项中,为什么要记住用户名?是因为,之后会介绍到注册表修改的问题。如果你不记得用户名,将很难查找到改程序的注册信息,也就无法修改注册内容。对于用户而言这无所谓,但是对于学习的角度,我们需要删除注册信息作更多的处理。

    补丁的制作

    1、这一块我们将应用上一小节内容做解释。首先,我们要找到try again对应代码位置。

    2、这时,根据上述分析,我们知道关键跳转句是如下位置

    3、从语句本身看,意思就是如果相等,则跳转到try again对应代码,如果不相等,则跳转到注册成功对应代码。因此在这我们只需要修改这条代码。通过把je改成jne,在这里,我们用另一种方式修改,直接忽略判断,也就是把je对应语句nop掉。

    4、保存相应修改,此时为已经爆破完成的程序。

    5、在这里制作补丁我们需要用到一个小工具即为key maker

    6、点击其他——制作文件补丁——编辑对应内容,选择文件后点击制作,选择相应的样式,完成制作

    7、打开test点击制作。查看程序点击file后发现注册键为灰色,说明已经注册成功。

    深入追踪注册码

    1、本小节用的是一个重启验证的机制。

    2、首先启动程序,点击注册,随意输入内容后点击注册,提示注册码不正确。

    3、载入OD,查找字符串,找到对应语句后双击进入

    4、在该处设置断点,同时,通过语句我们可以确定,这是关键跳转位置。因此,一般情况下,关键句的前一个call则为关键call,我们在这也下断。

    5、重新载入程序,运行起来,点击注册后输入账户和注册码,点击注册。程序断在指定call位置。

    6、这里我们跟进call,在这里我们需要观察的仍然是堆栈窗口。通过单步下去,我们发现堆栈窗口出现可以ascall码,因此猜测这是注册码。

    7、在这我们记录这串字符后关闭OD,开启程序,进行检测。任意输入账户名已经所采集的注册信息验证。输入后显示注册成功,需要重启验证。

    8、重启验证成功

    9、这里需要指出的也是和上一节相同的问题,需要记住账户名。笔者连续两次在这出问题,就是因为没有注意,这也正让我认识到一个问题。在程序运行过程中,我们通过写入确定的账户和任意的注册码,引导程序生成出对应账户的注册码,然后我们通过一定手段找出该注册码以实现破解。这应该也算是注册机的一个思路吧(笔者猜测),至于是否正确还有待以后的博客进行解释。

    注册表的编辑

    1、在这里我们用到的是吾爱工具包中的小生专用批处理组件,选择开注册表项。

    2、点击编辑——查找——输入之前记住的注册账户进行查找

    3、查找出对应的注册信息,包括账户名和密码。通过删除对应的账户和密码可以删除相关的注册信息。

    工具与实例下载

    1、实例链接:http://pan.baidu.com/s/1kVaqw0f 密码:kxw2

    2、所提供的实例只是简单的程序,如果需要深入学习,可以自行找一些程序进行尝试。

    3、实践中所用到的OD可在官网下载,这里推荐下载吾爱的破解工具包,由于该工具包所包含的工具比较多,而且有的暂时也不一定用得到,所以希望大家能够自己制作属于自己的工具包。

    工具包地址:http://down.52pojie.cn/Tools/Other/

    4、在下一次介绍中,会讲到工具包的制作、花指令的去除、易语言非独立编译的字符串查找、验证窗口的跳过以及版权信息和软件信息的修改。

    5、如果读者希望和我一起学习的话,请提前下载好必备的工具,同时复习之前的内容,特别是OD的使用以及关键跳转和关键call的查找。

  • 相关阅读:
    PYTHON ASYNCIO: FUTURE, TASK AND THE EVENT LOOP
    【Python】迭代器、生成器、yield单线程异步并发实现详解
    Python函数式编程
    利用python yielding创建协程将异步编程同步化
    Understanding Asynchronous IO With Python 3.4's Asyncio And Node.js
    MySQL视图-(视图创建,修改,删除,查看,更新数据)
    菜鸟使用MySQL存储过程and临时表,供新手参考,请高手斧正
    Mysql存储过程(六)——存储过程中使用临时表
    show processlist结果筛选
    大数据文件编辑
  • 原文地址:https://www.cnblogs.com/miaohj/p/5428962.html
Copyright © 2011-2022 走看看