先学汇编(VB) 再写OD 之后 爆破 之后IDA分析 算法分析 静态分析 动态分析之后经验!
我最初学习时是了解了一部分有关破解的资料,走了好多弯路,到现在还是一个菜鸟,我把我的学习破解的经验给大家分享以下:
第一课了解软件
1 壳的概念
首先我想大家应该先明白“壳”的概念。在自然界中,我想大家对壳这东西应该都不会陌生了,植物用它来保护种子,动物用它来保护身体等等。
同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。
它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。
就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。
由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。
就像计算机病毒和自然界的病毒一样,其实都是命名上的方法罢了。
2 为什么要加壳
有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名等
防止被crack破解
3 破解软件,脱壳几乎占了一半的位置
需要把程序搞的小一点,从而方便使用(也有的为了加密而增大体积的)
于是,需要用到一些软件,他们能将exe可执行文件压缩,
实现上述两个功能,这些软件称为加壳软件或压缩软件.
它不同于一般的winzip,winrar等压缩软件.
它是压缩exe可执行文件的,压缩后的文件可以直接运行.
当然,正确的说,「壳」与「加密」是一体的,这类似你有一个纯文字档,如果你用 zip 压缩它以后,能够再更改它吗 ? 不可能,因为资料已经被重新排列、且压缩运算过,成为一堆乱码,所以根本不能直接改。
=========================================================
2 软件如何加壳过程演示
软件作者给破解者带来的麻烦
编写软件----生成exe文件----加壳
==========================================================
3 侦壳软件language2000的使用方法
4 侦壳软件peid0.92的使用方法
5 侦壳软件fi.exe使用和设置方法
VC++
VB
第二课脱壳
脱壳方法总结
------------------
方法一:单步跟踪法
------------------
介绍:这是最通用的方法,对于未知壳,基本都用这种方法,这种方法过程比较麻烦,要一步一步的跟踪分析,要有一定的耐心.
1.用OD载入,选"不分析代码"
2.单步向下跟踪按F8,实现向下的跳.不让程序往回跳.
3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选)
4.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易运行.
5.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入.
6.一般遇到很大的跳转(跨段跳),比如 jmp XXXXXX 或 JE XXXXXX 或有RETN的一般很快就会到程序的OEP。
-----------------
方法二:ESP定律法
-----------------
介绍: 这种方法可以脱大部的压缩壳和少数加密壳,操作起来比较简单,脱壳速度也相对比较快.
1.开始就点F8向下走,注意观察OD右上角的寄存器中ESP有没突现(变成红色)
2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者hr
XXXXXXXX),按回车!
3.选中下断的地址,断点--->硬件访--->WORD断点。
4.按一下F9运行程序,直接来到了跳转处,按下F8向下走,就到达程序OEP。
-----------------
方法三:内存镜像法
-----------------
介绍:也是一种比较好用的脱壳方法,大部分的压缩壳和加密壳用内存镜像法能快速脱掉.非常实用.
1.用OD打开,设置选项——调试选项——异常,忽略所有异常(也就是把里面的忽略全部√上),然后CTRL+F2重载下程序!
2.按ALT+M,打开内存镜象,找到程序的第一个.rsrc.按F2下断点,然后按SHIFT+F9运行到断点.
3.接着再按ALT+M,打开内存镜象,找到程序的第一个.rsrc.上面的.CODE,按F2下断点!然后按SHIFT+F9,直接到达程序OEP!
----------------
方法四:一步到OEP
----------------
介绍:这是一种巧方法,脱壳速度最快,前提是要知道这个壳的特征,利用这种壳的共性快速找到程序的OEP.这种方法只用于少数壳.
1.开始按Ctrl+F,输入:popad,然后按下F2下断,按F9运行到此处.
2.很快来到大跳转,按F8向下走,来到OEP.
第三课 汉化修改软件
1 初识十六制编辑工具:UltraEdit1010c
2 应用程序软件的格式
3 汉化的原理及实现exescope的使用
regmon6.06的汉化过程
============主要内容=============
1 初识十六制编辑工具:UltraEdit1010c
以十六进制的方式看文件
破解必备
可以看到软件的信息
=========================================================
2 应用程序软件的格式
当软件作者完成代码编译成exe文件格式后
软件里面的图形和文字信息也以某种形式记录在文件里
我们只要用特定的软件就可以方便的提取和修改里面我们想要的东西
一般来说的高级语言编写的软件都可以修改
当然如果有壳的话要先脱壳
=========================================================
3 汉化的原理及实现
exescope.exe
专用的修改exe文件资源的软件
用它可以提取修改应用程序里面的资源
汉化regmon软件实例
第四课 爆破软件
1 学会使用反汇编软件w32dasm
2 十六进制编辑软件UltraEdit1010c
3 学会爆破一般的软件
4 汇编常用跳转语句
========================基本步骤=========================
1、首先看是否加壳
2、w32dasm反汇编,找到关键跳转
3、UE打开,修改跳转条件
JZ/JE 74 Z=1 零/等于
JNZ/JNE 75 Z=0 不为零/不等于
跳转常用74和75
JA/JNBE(比较无符号数) 77 C或Z=0 > 高于/不低于或等于
JAE/JNB(比较无符号数) 73 C=0 >= 高于或等于/不低于
JB/JNAE(比较无符号数) 72 C=1 < 低于/不高于或等于
JBE/JNA(比较无符号数) 76 C或Z=1 <= 低于或等于/不高于
JG/JNLE(比较带符号数) 7F (S异或O)或Z=0 > 大于/不小于或等于
JGE/JNL(比较带符号数) 7D S异或O=0 >= 大于或等于/不小于
JL/JNGE(比较带符号数) 7C S异或O=1 < 小于/不大于或等于
JLE/JNG(比较带符号数) 7E (S异或O)或Z=1 <= 小于或等于/不大于
第五课 寻找内存中注册码
1 十六进制编辑软件 WinHex 11.2 SR-1 的介绍与使用
2 学习从内存中直接提取注册码实例及原理实现
3 破解者工具的一般设置OD的基本设置,fi等软件的右键菜单的关联设置
第六课 跟踪注册码
1 进一步熟悉使用反汇编软件w32dasm
2 初步学会设置,使用动态调试工具ollydbg
3 学会会追出一般的软件的注册码
4 了解破解软件静态,动态的过程和意义
==========基本步骤===============
1、首先看是否加壳(已测试未加壳)
2、w32dasm反汇编,找到关键比较
3、ollydbg打开,设断点,注册,断下后查找注册码
最后,也就是最关键的,用学过的汇编知识写出注册机!
希望大家给提出宝贵意见或建议来完善我这不成熟的学习方法~~~
谢谢各位大侠的指教.
李子 2009/5/30
li521_yanmin@163.com
QQ:252413543
希望大家来交流~~~~~~~~
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)