新手用OD脱壳
你好 脱壳时我们如何辨认快到OEP了呢.(快到OEP时,都有哪些共同现象).若出现下面情况时,说明OEP就要到了:1.跟踪时如果发现:popadpopfd或popad2.同时,紧接着,有retn ,jmp等其它跳转指令,发生跨段跳跃时.这说明也许我们马上要到OEP,但不能一概而论。
3.个人觉得是否达到OEP最直接的方法就是记牢《常见各种语言编写的程序的入口点代码》,来来去去不外乎就集中语言编写而成。
附代码入口点查看地址http://hi.baidu.com/zeroport/blog/item/7dfaedd26b1ad5093af3cf07.html
软件破解脱壳法
什么是脱壳技术?在一些电脑软件里有一段专门负责保护软件不被非法修改或反编译的程序。
它们一般都是先于程序运行拿到控制权,然后完成它们保护软件的任务。
就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。
由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。
就像电脑病毒和自然界的病毒一样,其实都是命名上的方法罢了。
从功能上抽象,软件的壳和自然界中的壳相差无几。
无非是保护、隐蔽壳内的东西。
而从技术的角度出发,壳是一段执行于原始程序前的代码。
原始程序的代码在加壳的过程中可能被压缩、加密……。
当加壳后的文件执行时,壳这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。
软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。
关于“壳”以及相关软件的发展历史请参阅吴先生的《一切从“壳”开始》。
(一)壳的概念:作者编好软件后,编译成exe可执行文件。
1.有一些版权信息需要保护起来,不想让别人随便改动如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。
2.需要把程序搞的小一点,从而方便使用。
于是需要用到一些软件,它们能将exe可执行文件压缩。
3.在黑客界给木马等软件加壳脱壳以躲避杀毒软件。
实现上述功能,这些软件称为加壳软件。
(二)加壳软件最常见的加壳软件ASPACK ,UPX,PEcompact 不常用的加壳软件WWPACK32;PE-PACK;PETITE NEOLITE (三)侦测壳和软件所用编写语言的软件,因为脱壳之前要查他的壳的类型。
1.侦测壳的软件 fileinfo.exe 简称 fi.exe (侦测壳的能力极强)。
2.侦测壳和软件所用编写语言的软件language.exe(两个功能合为一体,很棒)推荐。
language2000中文版(专门检测加壳类型)。
3.软件常用编写语言Delphi;VisualBasic (VB)最难破;VisualC (VC)。
(四)脱壳软件。
软件加壳是作者写完软件后,为了保护自己的代码或维护软件产权等利益所常用到的手段。
目前有很多加壳工具,当然有盾,自然就有矛,只要我们收集全常用脱壳工具,那就不怕他加壳了。
软件脱壳有手动脱和自动脱壳之分,下面我们先介绍自动脱壳,因为手动脱壳需要运用汇编语言,要跟踪断点等,不适合初学者,但我们在后边将稍作介绍。
======================================================================= 加壳一般属于软件加密,现在越来越多的软件经过压缩处理,给汉化带来许多不便,软件汉化爱好者也不得不学习掌握这种技能。
现在脱壳一般分手动和自动两种,手动就是用TRW2000、TR、SOFTICE等调试工具对付,对脱壳者有一定水平要求,涉及到很多汇编语言和软件调试方面的知识。
而自动就是用专门的脱壳工具来脱,最常用某种压缩软件都有他人写的反压缩工具对应,有些压缩工具自身能解压,如UPX;有些不提供这功能,例如:ASPACK,就需要UNASPACK对付,好处是简单,缺点是版本更新了就没用了。
另外脱壳就是用专门的脱壳工具来对付,最流行的是PROCDUMP v1.62,可对付目前各种压缩软件的压缩档。
在这里介绍的是一些通用的方法和工具,希望对大家有帮助。
我们知道文件的加密方式,就可以使用不同的工具、不同的方法进行脱壳。
下面是我们常常会碰到的加壳方式及简单的脱壳措施,供大家参考:脱壳的基本原则就是单步跟踪,只能往前不能往后。
脱壳的一般流程是:查壳--->寻找OEP--->Dump修复。
找OEP的一般思路如下:[color=blue]先看壳是加密壳还是压缩壳,压缩壳相对来说容易些一般是没有异常,找到对应的popad后就能到入口。
跳到入口的方式一般为:我们知道文件被一些压缩加壳软件加密,下一步我们就要分析加密软件的名称、版本。
因为不同软件甚至不同版本加的壳,脱壳处理的方法都不相同。
我很少写破文,最近看到一些新手常问查壳工具查不出是什麽壳?不知壳如何脱?我这里就简单的用一个范例程式谈谈脱壳方法,算是给新手打打气。
一般这种没有公开的壳不会太猛(除了hying,vcasm, jingulong等这些圈内人的壳哈)大多是自己土制的壳,有的还伪装一下致使查壳工具查不出或查出什麽Aspack,UPX的壳。
碰到这种壳不用太怕认真跟踪分析一下、一般都没多大问题。
一般加壳后的程式运行时大多是用各种方法AntiDebugger,其中夹杂很多花指令和垃圾指令、然后解码又是一堆AntiDebugger,可能又解码恢复IAT又是一堆AntiDebugger.....最后再跳到程式真正的OEP处。
对付这种壳一般的方法是先找到OEP,再修复IAT。
在壳跳到OEP的时候一般是个跨段跳转,跳转方法有很多例如:JMP XXXXXXXX, JMP [XXXXXXXX], JE [XXXXXXXX],PUSH XXXXXXXX RET, CALL XXXXXXXXX, CALL [XXXXXXXX], CALL EAX.....还有的是在SEH中直接指定EIP等等。
找到这个跳转位址,然后在相应位址上设上中断点,F9运行就到达OEP处了。
此时就是最好的Dump时机,修复IAT一般用...
初学者学脱壳,但是一脱壳,OD就卡住是怎么回
要想搞破解,首先汇编语言肯定是要学习而且必须非常精通才行,此外,你还要学习各种高级语言如C、C++、VB、Java等等,至少要做到熟悉的程度。
就像武术中要想破解一门武功,你首先要熟悉这门武功,知道这种武功的长处和短处,找出其破绽,然后汇编语言就像是最终的致命一击,一举击破对方。
除此之外,你还要熟悉电脑中各种硬件的工作原理,比如内存的存取机制、CPU的多任务运行机制、硬盘的缓存机制、显卡的显示原理等等,因为这些都是学习汇编语言的基础。
可以这么说,要想破解一个软件,那么你的编程水平至少要跟这个软件的设计者差不多才行,比方说要破解360的软件,那么你跟360的软件工程师的牛X程度就至少要做到不相上下,有这信心么?软件破解属于程序设计中比较高的境界了,就像黑客一样,不是掌握一两门程序设计语言、看过几本书、看过几段视频教程、会用几个破解工具等等之类的就能学会的。
如何给程序脱壳
你这个问题太过于笼统,其实破解中的脱壳是一个非常复杂的过程,有些壳很容易脱掉,在网上也可以找到相应的脱壳机,有些复杂的壳就需要手动脱壳,我觉得脱壳也可以成为一门复杂的学科,毕竟要破解就要学会脱壳,以前我也曾经看过很多关于脱壳的文章和视频但是由于编程技术不是很好所以总是似是而非,有一日看到一个视频,终于有了一个脱壳的思路,留下你的邮箱我可以给发过去,或者你加我的号码240410420 ,这个视频的文字教程如下:脱壳多种方法总结篇一.脱壳基础知识要点1.PUSHAD :(压栈) 代表程序的入口点2.POPAD :(出栈) 代表程序的出口点,与PUSHAD想对应.看到这个,就说明快到OEP了.3.OEP:程序的入口点,软件加壳就是隐藏OEP.而我们脱壳就是为了找OEP.二.脱壳调试过程中辨认快到OEP的简单方法下面二个条件是快到OEP的共同现象:若出现下面情况时,说明OEP就要到了:1. OD跟踪过程中如果发现:popad popfd 或popad2.同时,紧接着,有retn ,jmp等其它跳转指令,发生跨段跳跃时.说明OEP马上到了.三.脱壳必需牢记的要领1.单步往前走,不要让程序向上走,遇到向上跳时,在下一句按F4,运行到所选.2.刚载入程序,在附近就call时,我们按F7跟进去.3.若跟踪时,运行某个call程序就运行时,这个call也用F7进入.4.在跟踪时,出现比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN同时发生大跨段跳转时,说明很快就到OEP了.四.常用脱壳方法总结------------------方法一:单步跟踪法------------------介绍:这是最通用的方法,对于未知壳,基本都用这种方法,这种方法过程比较麻烦,要一步一步的跟踪分析,要有一定的耐心.1.用OD载入,选"不分析代码"2.单步向下跟踪按F8,实现向下的跳.不让程序往回跳.3.遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——>运行到所选)4.如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,不然程序很容易运行.5.在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入.6.一般遇到很大的跳转(跨段跳),比如 jmp XXXXXX 或 JE XXXXXX 或有RETN的一般很快就会到程序的OEP。
-----------------方法二:ESP定律法(ESP与EIP都为红色)-----------------介绍: 这种方法可以脱大部的压缩壳和少数加密壳,操作起来比较简单,脱壳速度也相对比较快.1.开始就点F8向下走,注意观察OD右上角的寄存器中ESP有没突现(变成红色)2.在命令行下:dd XXXXXXXX(指在当前代码中的ESP地址,或者hrXXXXXXXX),按回车!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!另外:加入内存模块中看到多个PE代码就从第一个PE下面的代码下断点,shift+F9,单步进行,看到INC 的地址,查找到这个地址一般就为程序入口,可能会因为有多个PE所以没有解密,单步进行知道程序返回到这个入口,然后脱壳----------------方法四:一步到OEP----------------介绍:这是一种巧方法,脱壳速度最快,前提是要知道这个壳的特征,利用这种壳的共性快速找到程序的OEP.这种方法只用于少数壳.1.开始按Ctrl+F,输入:popad,然后按下F2下断,按F9运行到此处.2.很快来到大跳转,按F8向下走,来到OEP.----------------方法五:利用内存异常(选项--异常,中下面勾都去掉)----------------shift+F9 几次 运行后记住运行了几次后打开的软件重新导入,shift+F9 运行比刚才少一次,观察od右下角SE异常,记下前面地址,ctrl+G,输入这个地址F2下断点,shift+F9运行到此处,取消断点然后单步F7跟踪到oep入口处,LE修改大小然后转存,然后用ImportRE修改OEP,然后将刚才转存的文件输入即可。
如何利用ESP定律脱壳和脱壳后如何修复软件?
楼主是软件破解入门者?!我以前做的动画ESP经验说说!ESP定理!(快捷易懂的方法)|OD-调试选项-异常-忽略所有异常|step:1.OD载入程序,观察OD寄存器中的ESP有无出现!2.如有,命令 hr XXXXXXXX (ESP地址) ,回车!3.F9运行程序,清除硬件断点!(调试-硬件断点-删除-确定)4.F8单步跟踪!飞向-OEP!(一般是一个大跳转,如: jmp XXXXXXXX 或 JE XXXXXXXX 或RETE=OEP)友情提示:某些程序OD载入时有几个ESP!所以要会判断那个是关键的!(反正有时间.一个一个的试!嘿嘿!积累经验嘛!)关于修复文件的问题:一般使用OD自带的ImportREC插件修复即可!选择选项1或者二都试一试!可使用ImportREC软件直接修复.对于一些加密软件处理过的壳.还要自己手动找一些关键地址和函数..这个地方有点动画和一些破解工具http://u.xdowns.com/?packed