在之前学习了一些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的查找。

转载于:https://www.cnblogs.com/miaohj/p/5428962.html

破解基础篇之第一部分相关推荐

  1. 大数据基础篇~JavaSE第一章

    大数据基础篇教程分享01 目前计算机专业现状,java开发工程师虽然容易找工作(这个也是在你在大学期间java基础学习的比较好,然后会一些框架,才能找到工作)但是java开发常常熬夜,楼主就是卷不动j ...

  2. Dcmtk在PACS开发中的应用(基础篇) 第一章 与影像设备互连 作者 冷家锋

    Dcmtk在PACS开发中的应用 作者:冷家锋  声明:引用时请注明出处,如需商业引用,请与作者联系. 第一章 与影像设备互连 PACS(PictureArchiving and Communicat ...

  3. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.1 为什么要学习Qt

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1334y1776z Qt 是一个跨平台的 C++ 图形用户界面应用程序框架 Qt 为应用程序开发 ...

  4. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.3 新建Qt工程

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1UA4y1d7V2 学习任何的编程语言,创建的第一工程都是打印 hello world,学习 Q ...

  5. python第一个公开发行版_Python基础篇【第一篇】:python入门

    python 简介 python是一种解释型.面向对象.改动数据类型的高级程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. python是纯粹的自由 ...

  6. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.2 搭建Qt开发环境

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1Pr4y1x7fh Qt 开发主要有两种开发环境 Qt Creator 它是 Qt 官方提供的开 ...

  7. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.4 项目构建流程

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1cW4y1y7Lw 在上一节课中,我们新建了第一个 Qt 工程,其中包括 5 个文件: Hell ...

  8. 【Lua从青铜到王者基础篇】第一篇:Lua初始教程和环境安装

    系列文章目录 文章目录 系列文章目录 前言 一.lua教程 1.Lua设计目的 2.Lua特性 3.Lua应用场景 4.Lua保存和运行 5.Lua目标 6.第一个Lua程序 二.Lua环境安装 1. ...

  9. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.6 自定义信号槽

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1gA4y1d7gz 上节课,我们讲解了标准信号槽,标准信号槽中,信号和槽函数,都是 Qt 框架定 ...

  10. 【QT开发笔记-基础篇】| 第一章 QT入门 | 1.7 如何连接信号槽

    本节对应的视频讲解:B_站_链_接 https://www.bilibili.com/video/BV1mN4y137H6 信号和槽要建立连接,本质上是通过 `connect` 函数来连接实现的. 但 ...

最新文章

  1. Android EditText 编辑框 获取焦点的方法
  2. 为.NET部署应用程序添加个卸载程序
  3. mapreduce工作流程_详解MapReduce中的五大编程模型
  4. Swift 3.1 的一些新特性
  5. Java的反射机制 工厂模式综合讲解【转载自51CTO】
  6. python 两种多线程比较
  7. 批量kill掉linux中符合某些字段的进程
  8. 用计算机模拟光子行为,光量子玻色—费米模拟系统的设计与实现
  9. 【转】wifi的几种工作模式
  10. python程序编译成exe格式
  11. iptable详解概念
  12. [Windows]win10时间同步错误的解决方法
  13. java设计模式之装饰者模式学习
  14. 电子计算机扫描仪系统,人体三维扫描仪
  15. 基础的风光摄影技术控制
  16. c语言俩小时不挂科——全程高能,没有废话
  17. REST Assured 5 - Abstraction抽象,隐藏实现
  18. Qua Vadis Eclipse? 第二部分
  19. PowerDesigner 15及破解补丁下载
  20. 复杂电路简化经典例题_复杂电路简化练习题

热门文章

  1. 浅析Vue源码(二)—— initMixin(上)
  2. saga中的saga(A Saga on Sagas) - balavatasky - 博客园
  3. SQL Server 数据库备份与还原
  4. 沫沫金:EasyUI 固定列
  5. Mac下启动AndroidStudio失败
  6. Android开发小结Part11:SQLite 通过.db文件导入已有数据库
  7. asp.net电子商务开发实战 视频 第三讲(门类列表)
  8. error: component 'clippy' for target 'x86_64-unknown-linux-gnu' is unavailable for download 解决办法
  9. 全栈创建一个小程序(mpvue+nodejs+mysql)---(一)--本地开发
  10. matlab多图形相交,用MATLAB作出柱面x^2+y^2=4 和柱面x^2+z^2=4 相交的图形.