简单软件破解入门

一、破解准备:

组合一:

侦壳 language.exe

脱壳AspackDie.exe

反编译 W32Dasm黄金中文版

十六进制编辑器 UltraEdit

组合二:

PEid

Ollydbg

二、破解软件步骤:
1.查壳

一般软件都会加壳,所以我们想破解软件,首先必须知道待破解的软件所加壳的类型。在这之前,我们需要先了解壳的概念。什么是壳?所谓壳就是一个保护程序,将可执行文件压缩,保护软件版权信息,不让人随意改动。最常见的加壳软件有ASPACK,UPX,PE compact等等。

其中查壳工具有language.exe、PEid等等。如图所示,我们便可以知道待破解软件是采用什么语言编写的,并且加了什么类型的壳。

2. 脱壳

所谓脱壳,就是将已经加壳的程序从壳中剥离出来。

首先需要介绍OEP的概念,OEP就是原程序的入口点,也就是真正的入口点。当被加壳的程序运行后,首先运行的是壳程序,壳程序会将原程序还原到内存中并将控制权返还。OEP总会在这期间被脱壳者找到。只要找到这个OEP,就可以将原程序从内存中dump出来,而后针对dump出的程序进行处理,最终得到原程序。一般来说,脱壳就是要找程序的OEP,得到这个OEP,脱壳就完成一半了,剩下的就是修复工作了。

脱壳的方法有很多种,如:单步跟踪法、ESP定律法、二次断点法、末次异常法、模拟跟踪法、SFX自动脱壳法、出口标志法、使用脱壳脚本辅助脱壳、使用脱壳工具脱壳。其中,对于比较简单常见的壳,我们可以脱壳工具来帮助我们解决问题。在这里我就不赘述其他方法了,可以参考http://www.cnblogs.com/einyboy/archive/2012/05/19/2508696.html

其中AspackDie.exe是一种针对ASpack壳的专业脱壳工具。通过这个工具的脱壳,我们可以得到一个脱壳后的unpacked.exe。
3.反汇编

所谓反汇编(Disassembly),即把目标代码转为汇编代码的过程。其中常用的工具软件有:反编译 W32Dasm、Ollydbg等等。对于转换过来的汇编代码,一般会比较长,且晦涩难懂,一般人往往不知道从哪里入手。在这个过程中,最重要的是寻找到破解软件的关键点。首先我们可以利用反汇编软件的功能寻找“注册码错误”、“注册成功”等提示性的参考串,缩小我们需要阅读的代码范围。

在“注册码错误”参考串附近,我们可以尽量寻找call子函数调用和有条件跳转(除了jmp的其它跳:je,jne,jz,jnz)。对于这些关键处,一般就是我们所需要寻找的破解软件的关键点。但是不尽然,对于具体的问题,我们还是需要通过阅读汇编代码来分析,所以我们大学里面学的汇编语言在这里就很有用了。

实际修改地址(偏移地址)和行地址(虚拟地址)pw32dasmgold反汇编出来的代码由三列组成。第一列为行地址(虚拟地址)。第二列为机器码(最终修改时用ultraedit修改)。第三列为汇编指令。

其中在上图中,关键点为jne 004ACCB1。从反汇编软件的提示栏我们可以看到这条跳转指令的偏移地址0xacb4b。

4.修改机器码

由于exe可执行文件是二进制文件,我们可以通过UltraEdit软件转换为十六进制显示。当我们修改了文件中十六进制,就相当于修改了可执行文件的内容。

打开十六进制编辑器 UltraEdit,打开脱壳后的unpacked.exe,直接按ctrl+g,出现对话框,输入0xacb4b(即偏移地址)。

在这里我们将指令jne 004ACCB1对应的机器码)0F8560010000修改为0F8460010000,也就是说我们将指令改为了je 004ACCB1。这样的话,程序在判断跳转条件是,几乎不会弹出“注册错误”的对话框,而总是执行“注册成功”那一段子程序。

常见指令对应机器码

三、个人心得:

1.不要畏惧困难
2.具体问题具体分析
(1)从哪里来,经过哪里,到哪里去
(2)追根诉源,逐步分析

3.遇到难题,需要坚持
(1)开阔思路,逆向思维
(2)考虑其他情况

时间: 2024-10-26 01:09:20

简单软件破解入门的相关文章

软件破解入门(暴力破解CrackMe)

所谓暴力破解,就是通过修改汇编代码进而控制程序的运行流程,达到不需注册码也能正常使用软件的目的.相对于解出算法进而编写注册机,暴破的技术含量是比较低的.但也正是因为一本05年的杂志上介绍“暴力破解”的文章,让我入了这个大坑.近来想重拾调试器,就先从最简单的CrackMe入手,熟练一下各工具方法. 下载CrackMe3文件(我用的是看雪<加密与解密>中的CFF CrackMe #3 程序  http://pan.baidu.com/s/1dD9v9x3 ). 1.查看此程序是否加壳.加壳的话还得

史上最简单的软件破解——5行脚本代码完美破解99%的过期软件

如果你看到了这篇博文,绝对保证不虚此行.仅仅5行脚本代码,即可破解99%的过期软件. 这件事的背景:最近在找了一些学习资料,其中有Rational Rose画的图,好久没用过它了.今天安装好,导入许可文件,结果问题出现了,提示没有激活.怎么回事??仔细一看,原来许可文件到2013年12月份就过期了(乌鸦飘过...) 在网上找了半天也没有找到一个新的许可文件,结果一狠心,手动改了一下日期,再启动,ok了,把时间再改回来.本来事儿到这儿就完了.但是结果光今天一天就手动改了好几次系统时间,这就太让人无

OD调试9—实例:深入分析代码完成软件破解

OD调试9—实例:深入分析代码完成软件破解  爆破,是最初级的解决方案,不到万不得已,我们不直接修改JNZ通关.因为这样子的话,我们就享受不到破解.逆向的真正乐趣了. 了解程序背后按照剧情发展经常会出的一些走法,逆向程序的算法,才能体会逆向的真正乐趣! 所以,今天的主题是:是男人,就跟进去吧~ 这次还是使用一个比较简单的程序,不然太复杂的话,一步步跟进程序可能会把自己搞崩溃,脑子恐怕不够搞.大家凭自己的能力,能进入多少就进入多少,一分不少,一寸不多!能力是培养出来的,耐心! 试验软件:MrBil

软件破解技术初探

MarkdowPad 2是Windows下的一款基于.Net的离线Markdown编辑器,普通版功能受限,专业版需要购买序列号.网上意外看到一篇文章,说的是用工具破解MarkdownPad,感觉比较有趣,就做了学习和尝试(后面简称为"原文"). 文章链接在此 http://www.zan3.com/zan492.html 用ILSpy查看C#源码 可以使用ILSpy直接将基于.NET的EXE文件反编译成源代码进行查看(语言可以选择 C# / VB / IL). 在程序目录中找到Mark

小米抢购软件-小米抢购软件破解版

在这类非常感谢群主的这个HttpHelper类,但是不是所有的Cookies都是能抓得住的要一个个页面的去分析,有些Cookies是通过脚本增加的,其实登入了小米很简单但是小米也不笨很多COOKIES也不是给你抓得住的在,我也是查看了他的很多AJAX脚本,看得都头疼了,但是就这个毅力使我在短短1个星期和有着HttpHelper的帮助下完成了,上个星期小试牛刀抢到了手机.更多资源:你报   http://www.nibao.net 小米抢购软件-小米抢购软件破解版

[华为机试练习题]4.简单密码破解

题目 描述: 密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了.哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全. 假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码. 他是这么变换的,大家都知道手机上的字母: 1–1, abc–2, def–3, ghi–4, jkl–5, mno–6,

一个简单的iBatis入门例子

一个简单的iBatis入门例子,用ORACLE和Java测试 目录结构: 1.导入iBatis和oracle驱动. 2.创建类Person.java package com.ibeats;import java.util.Date; public class Person { private int id; private String firstName; private String lastName; private double weightInKilograms; private do

起步 简介整个项目、组件、和如何使用一个简单的模版入门

1. 下载 下载之前先检查一下是否准备好了一个代码编辑器(我们推荐使用 Sublime Text 2) ,你是否已经掌握了足够的HTML和CSS知识以开展工作.这里我们不详述源码文件,但是它们可以随时被下载.在这里我们只着重介绍使用已经编译好的Bootstrap文件进行入门讲解. 下载编译好的文件 快速开始:立即下载编译好的版本吧,里面已经包含了CSS.JS和图片文件了,而且所有文件已经经过了压缩处理.不过,文档和源码文件不包含哦. 下载Bootstrap 下载源码 从GitHub直接下载到的最

软件编程入门自学

软件编程是目前行业里最热门的职业,也是现在人才缺口最大的职业.许多人都想转行到软件编程,在软件编程行业好好打拼,但是培训机构的学费却也是个难题,所以很多人都选择自学,想通过自学软件编程进入这行.软件编程入门自学 1. 什么是软件编程? 编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到结果的过程.编程分为硬件编程和软件编程. 2. 软件编程入门 学习软件编程首先要学编程语言,选择一个自己感兴趣的编程语言才是学习软件编程的首要条件.软件编程语言常见的有Java.C++.C