破解基础—判断你到底有没有壳
软件破解脱壳法
软件破解脱壳法什么是脱壳技术?在一些电脑软件里有一段专门负责保护软件不被非法修改或反编译的程序。
它们一般都是先于程序运行拿到控制权,然后完成它们保护软件的任务。
就像动植物的壳一般都是在身体外面一样理所当然(但后来也出现了所谓的“壳中带籽”的壳)。
由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,大家就把这样的程序称为“壳”了。
就像电脑病毒和自然界的病毒一样,其实都是命名上的方法罢了。
从功能上抽象,软件的壳和自然界中的壳相差无几。
无非是保护、隐蔽壳内的东西。
而从技术的角度出发,壳是一段执行于原始程序前的代码。
原始程序的代码在加壳的过程中可能被压缩、加密……。
当加壳后的文件执行时,壳这段代码先于原始程序运行,他把压缩、加密后的代码还原成原始程序代码,然后再把执行权交还给原始代码。
软件的壳分为加密壳、压缩壳、伪装壳、多层壳等类,目的都是为了隐藏程序真正的OEP(入口点,防止被破解)。
关于“壳”以及相关软件的发展历史请参阅吴先生的《一切从“壳”开始》。
(一)壳的概念:作者编好软件后,编译成exe可执行文件。
1.有一些版权信息需要保护起来,不想让别人随便改动如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。
2.需要把程序搞的小一点,从而方便使用。
于是需要用到一些软件,它们能将exe可执行文件压缩。
3.在黑客界给木马等软件加壳脱壳以躲避杀毒软件。
实现上述功能,这些软件称为加壳软件。
(二)加壳软件最常见的加壳软件ASPACK ,UPX,PEcompact 不常用的加壳软件WWPACK32;PE-PACK;PETITE NEOLITE(三)侦测壳和软件所用编写语言的软件,因为脱壳之前要查他的壳的类型。
1.侦测壳的软件 fileinfo.exe 简称 fi.exe (侦测壳的能力极强)。
2.侦测壳和软件所用编写语言的软件language.exe(两个功能合为一体,很棒)推荐。
language2000中文版(专门检测加壳类型)。
PEID查壳脱壳使用教程(图文)及程序汉化方法
PEID查壳脱壳使⽤教程(图⽂)及程序汉化⽅法进⾏软件汉化,第⼀步就是要查壳,看看软件是否加壳,加的⼜是什么壳。
下⾯介绍PEID查壳软件使⽤⽅法。
PEID简介:PEiD是⼀款著名的查壳⼯具,其功能强⼤,⼏乎可以侦测出所有的壳,其数量已超过470 种PE⽂档的加壳类型和签名,可以探测⼤多数PE⽂件封包器、加密器和编译器。
⾸先:运⾏PeiD,如图:图1 PEiD主界⾯第⼆步,定位要查壳的软件,如图2。
点击“打开”⽂件后就会出现如图3所⽰的界⾯。
说明该软件是加了Nullsoft PiMP Stub壳的,可以⽤专门脱Nullsoft PiMP Stub脱壳机来脱壳,也可能⽤⾃动脱壳机⽆法脱壳(版本更新等原因),可以选择⼿动脱壳。
PEID的扫描模式正常扫描模式:可在PE⽂档的⼊⼝点扫描所有记录的签名;深度扫描模式:可深⼊扫描所有记录的签名,这种模式要⽐上⼀种的扫描范围更⼴、更深⼊; 核⼼扫描模式:可完整地扫描整个PE⽂档,建议将此模式作为最后的选择。
PEiD内置有差错控制的技术,所以⼀般能确保扫描结果的准确性。
前两种扫描模式⼏乎在瞬间就可得到结果,最后⼀种有点慢,原因显⽽易见。
插件应⽤最常⽤的插件就是脱壳。
Peid的插件⾥⾯有个通⽤脱壳器,能脱⼤部分的壳,如果脱壳后import表损害,还可以⾃动调⽤ImportREC修复improt表。
点击“=>”打开插件列表。
如图:根据插件列表,还可以专门针对⼀些壳脱壳,效果⽐通⽤脱壳器会好。
程序汉化如果程序没有加壳,或者脱壳好后,就可以⽤专门的汉化⼯具进⾏汉化了。
汉化时应选择适合的⼯具进⾏汉化,⽐如Microsoft Visual C++6.0编写的软件可以选⽤或来汉化;⽽Visual Basic 编写的软件就要⽤来汉化。
所以不同语⾔编写的软件要选⽤相应的汉化⼯具进⾏汉化。
第6章 揭开加密软件那神秘的壳
第6章揭开加密软件那神秘的壳第6章揭开加密软件那神秘的壳● 加壳/脱壳知识基础● 认识几款加壳工具● 脱壳软件使用介绍● 如何进行手动脱壳● 加深一点对壳的理解对于软件解密者来说,不论是才高八斗的高手,还是初窥门径的菜鸟,在拿到一个软件要对它进行调试或解密的时候,首要的工作就是分析程序的类型,了解程序是用什么语言编写的或用什么编译器编译的,程序有没有加壳保护,用什么压缩软件进行压缩加的壳,然后才有可能确定自己下一步的具体解密方法。
6.1 加壳/脱壳知识基础在当今时代,对软件商品没有进行壳的加密保护,简直是难以想像的,除非软件作者缺乏基本的加密常识。
因此,了解壳的基本知识,对软件加/解密者来说是很有用的,可以说是学习加/解密的基础。
6.1.1 什么是壳那么,究竟什么是壳呢?所谓“壳”,就是在一些计算机软件里的一段专门负责保护软件不被非法修改或反编译的程序。
它们一般都是先于程序运行并拿到控制权,然后完成它们保护软件的任务。
通俗点说它是一种专门的压缩工具,对exe、com和dll等程序文件进行压缩,在程序中加入一段如同保护层的代码,使原程序文件代码失去本来的面目,从而保护程序不被非法修改和反编译,这段如同保护层的代码,与自然界动植物的壳在功能上有很多相似的地方,所以我们就形象地称之为程序的“壳”。
6.1.2 为什么要加壳在弄明白了什么是壳以后,接下来就是要搞清楚为什么要对程序进行加壳了?其实,这个问题完全可以从壳的概念中看出,给程序加壳的目的和作用不外乎下述两个方面。
1.保护(Protectors)程序这是给程序加壳的主要目的,就是通过给程序加上一段如同保护层的代码,使原程序文件代码失去本来的面目,保护程序不被非法修改和反编译。
如果用反汇编工具对加过壳的程序进行反汇编,则因根本看不到真实的可执行文件代码,而无法对程序进行修改。
要想修改程序必须把这层壳脱掉,还原程序的本来面目,才可以修改。
这几年虽然也出现了一些不用脱壳就能修改程序资源的软件,但要想完美修改程序和解密程序仍然是无法实现的。
介绍下加壳识别壳破壳的方法
介绍下加壳识别壳破壳的方法加壳是计算机软件中的一种保护措施,用于保护软件免受逆向工程和盗版侵害。
加壳通过在原始程序上添加一层原生或自定义的壳,在运行时加固被保护的代码,隐藏关键功能和算法,对软件进行加密和压缩等操作,使其更加难以被逆向工程分析和破解。
因此,加壳成为了软件开发者和软件厂商保护自己知识产权和商业模式的重要手段。
然而,随着逆向工程技术的发展,破解加壳技术也变得越来越成熟。
破壳是指绕过加壳保护,还原被保护的软件的原始二进制代码。
下面将介绍几种常见的加壳识别壳破壳的方法。
一、静态分析法静态分析法是在不运行加壳程序的情况下对其进行逆向分析的方法。
通过分析加壳程序的头部信息、导入导出表、节表信息、加壳部分的代码特征等,可以判断出是否存在加壳和使用的壳类型。
然后,借助逆向工程工具(如IDA Pro、OllyDbg等),对加壳程序进行反汇编和调试,还原出被壳保护的原始软件代码。
二、动态调试法动态调试法是通过运行加壳程序,在运行时动态调试其行为,获取关键信息,帮助识别壳的类型和破解壳。
通过使用调试工具,如OllyDbg和x64dbg等,可以在软件运行过程中观察和修改寄存器、内存、堆栈等信息,找到关键的跳转指令,尝试绕过壳的保护和加密操作。
三、壳特征识别法壳特征识别法是通过分析加壳程序的一些特征,如一些特殊字符串、特定函数的调用方式、调用API的顺序等,来识别壳的类型。
根据壳的特征,可以编写脚本或使用专门的壳特征识别工具,从二进制代码中特定的特征,找到壳并进行破解。
四、动态调用链分析法动态调用链分析法是通过分析加壳程序的动态调用链,了解程序的运行过程和保护措施。
通过传递参数、查找调用、分析返回值等方式,逐步跟踪加壳程序的执行流程,找到关键的调用和逻辑判断,破解保护措施,还原原始代码。
虽然破壳技术不断发展,加壳技术也不断进化,但是通过以上方法可以部分或完全破解绝大多数的软件加壳。
要保护软件不被破解,开发者需要采取更加综合和复杂的保护措施,如代码混淆、虚拟机保护、反调试等,提高软件的保护级别,增加破壳难度。
用一个软件教你如何破解的多种方法
只用一个软件,说明破解的层次!前言网上流传的卡巴斯基30天循环使用补丁,是怎么制作出来的如何把共享软件的注册码变成形同虚设遇到软件要注册,不用到处跪求注册码,如何自己寻找到真正的注册码如何制作一个属于自己的注册机我将对一个软件《拓维美容美发行业管理系统》进行多层次破解,借助最基本的方法来说明这些原理。
软件下载地址:一、修改注册表文件,清除软件使用次数限制。
打开软件,首先跳出来一个注册的框,其中用户名可以随便填写。
左下角红色的字显示还可以试用的次数。
点击试用以后,可以进入软件。
但是试用总共有100次。
我们要做的是消除次数限制,无限试用。
原理分析:一般来说,试用次数被记录在注册表中,不管使用了多少次,我们如果能找到这个注册表文件,把已经使用的次数改为0,又可以重头计算,那样不就是无限循环使用了吗工具:Regshot,一款体积小巧的注册表比较软件能在操作前后对注册表进行两次快照,自动比较。
步骤:1、安装好软件以后,先不要启动软件。
打开regshot,选择第一快照。
这记录的是试用次数还有100次的注册表状态。
2、扫描完成后,不要关闭regshot,这时打开软件,点击试用,进入软件,然后可以退出了。
3、启动regshot,选择第二快照。
扫描结束后,自动比较两个扫描结果,并弹出如图的报告。
报告显示有3处发生改变,找到显示改变注册表的路径。
其中的[HKEY_LOCAL_MACHINE\SOFTWARE\tw\twzc]引起了我们的注意。
因为这个路径tw是软件名称拓维的缩写,而且键的名称是day,肯定和时间有关。
4、点击开始—运行—输入regedit,回车,进入注册表编辑器。
按照路径找到这个键,选中它,依次点击文件—导出。
可以将这个注册表文件任意命名保存。
这个文件记录的是还能试用99次的状态。
当试用次数快结束时,双击导入这个文件,又恢复到可以试用99次的状态了。
至此,我们达到了循环试用的目的。
以前网上流传了一个卡巴斯基30天试用循环的补丁,批处理内容如下:@echo off@reg delete HKEY_LOCAL_MACHINE\SOFTWARE\KasperskyLab\L icStorage /f@reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryp tography\RNG /f@reg delete HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Syst emCertificates\SPC\Certificates /fpause & exit核心部分就是删除了3个键。
查壳教程
大家好:我是“鳳舞九天”QQ:403071884 今天给大家发个查壳教程。
本人也是小鸟,不是神雕,所以呢?“神雕大侠”请飞过。
很多新手想要学汉化软件。
不知道从何学。
今天我就发个最基本的查壳教程。
当然咯。
此教程只对新手。
老鸟请飞过。
下面我就简单的介绍一下:新手想要学汉化。
第1步。
就是要查壳。
看看软件加的是什么壳。
什么是壳。
壳呢?就象我们人穿的外表的衣服。
穿了衣服。
我们也就看不到里面的。
下面我就用PEID查壳软件来查壳:PEiD查壳软件介绍:PEiD 可以探测大多数的 PE 文件封包器、加密器和编译器。
当前可以探测 600 多个不同签名。
PEiD 是最强大的一个查壳工具。
汉化包中包含了绝大多数插件,并添加了某些插件必须的库文件(m fc70.dll、msvcr70.dll、rtl70.bpl、vcl70.bpl)。
查壳目标:SWF to MP3 Converter英文版查壳工具:PEiD首先:您要下载SWF to MP3 Converter英文版的软件和PEiD软件。
然后。
运行PEiD主程序。
如下图:回复举报飘过0砸0顶03楼鳳舞九天发表于2008.07.11 21:44:46看到了吗?这个就是PEiD主程序界面,( 点击)那几个小数点的。
那几点小数点。
就是(浏览)的意思。
找到您要汉化的英文版软件的主程序。
如图:回复举报飘过0砸0顶04楼鳳舞九天发表于2008.07.11 21:51:27您找到英文版的主程序以后。
点(打开) ,如图:回复举报飘过0砸0顶05楼鳳舞九天发表于2008.07.11 22:02:59您找到英文版的主程序以后。
点(打开)后。
就会出现如下图4:回复举报飘过0砸0顶06楼鳳舞九天发表于2008.07.11 22:10:12上面的图,看到了没有。
说明这个软件是没有加壳的。
是用Microso ft Visual C++ 6.0软件编写的。
如果您查到了是aspack的。
那就说明是加了aspack的壳。
无壳源程序破解实例
无壳源程序破解实例近年来,随着计算机技术的飞速发展,软件破解成为了一个备受关注的话题。
无壳源程序破解是其中的一种常见方式。
本文将以一个实例来介绍无壳源程序破解的过程。
假设我们有一个加密的无壳源程序,我们想要破解它并获取其中的源代码。
首先,我们需要了解无壳源程序的特点。
无壳源程序是指没有经过加壳处理的程序,即没有使用任何保护措施的程序。
这种程序相对容易破解,因为它没有经过加密或混淆,源代码相对容易被还原。
首先,我们需要使用逆向工程的方法来分析程序的结构和功能。
逆向工程是指通过分析程序的二进制代码,还原出程序的源代码和设计思路的过程。
我们可以使用一些逆向工程的工具来帮助我们进行分析,比如IDA Pro、OllyDbg等。
接下来,我们需要使用调试器来动态调试程序。
调试器是一种用于分析程序运行过程的工具,可以帮助我们了解程序的执行流程和变量的值。
我们可以使用OllyDbg等调试器来对程序进行动态调试。
在动态调试的过程中,我们可以通过设置断点来暂停程序的执行,然后逐步跟踪程序的执行流程。
我们可以查看程序的寄存器、内存和堆栈等信息,以及程序执行过程中的变量值。
通过这些信息,我们可以了解程序的运行逻辑和算法。
在分析程序的过程中,我们还可以使用反汇编工具来将程序的二进制代码转换为汇编代码。
汇编代码是一种低级语言,可以更加直观地了解程序的执行过程。
我们可以使用IDA Pro等反汇编工具来进行转换。
通过分析程序的结构和功能,我们可以逐步还原出程序的源代码。
我们可以通过查看程序的函数调用、变量赋值和条件判断等语句,来推测出程序的逻辑和算法。
通过这些推测,我们可以逐步还原出程序的源代码。
当我们还原出程序的源代码后,我们就可以对其进行修改或者重新编译。
我们可以根据自己的需求来修改程序的功能或者增加新的功能。
当然,在进行这些操作时,我们需要遵守相关的法律法规,不得进行非法的破解行为。
总结起来,无壳源程序破解是一种常见的软件破解方式。
第三课 - 散人手把手教你学破解
第三课- 手把手教你学破解2012年1月23日星期一13:18大家好!我是散人,呵呵!我们又见面了,看过我课的朋友今天就继续往下看了!没看过的朋友假如有兴趣的话就请先把前两节课看完!好,按照惯例,今天应该讲脱壳了!好,我们先看一下“壳”的定义:我认为一个软件为什么加壳,主要原因还是利益问题,加了壳的软件一般是不能够编译破解使用的,就达不到我们免费的目的,只有我们先把他的皮剥下去,才能达到我们的破解目的。
这也就是我们为什么要学习脱壳的原因。
壳有千万种,但常用的就那几种,我们只要把常用的几种壳的脱法学会,那别的什么壳也就自然会了,这是一个过程,是要慢慢积累的!在这里我尽量教大家快捷简单的脱壳方法,尽量让大家一看就懂。
现在我们先讲一下给一个软件脱壳我们要用到的软件:----------------------------------------------------------------------------------------------------------------- 1、查壳工具PEID--功能强大的侦壳工具,自带脱壳插件(但是,效果不怎么样,所以我们就用它查壳就够了!)工作原理:核心是userdb.txt(呵何!大家可以看看)[通过壳的入口特征码进行辨认]使用方法:可以拖放、也可以把PEID添加到右键菜单里面去(如图)下载地址:PEid0.94汉化版.rar2、手动脱壳工具(为什么不用自动的呢?因为没有手动来的干净,好使!)ODbyDYK(OD)--第一节课有讲过的,我就不多说了!常用快捷键:F2:在需要的地方下断点(INT3型断点)F3:选择打开程序F4:运行到所选择的那一行F7:单步进入F8:单步跟踪F9:执行程序(运行程序)3、修复工具Import REConstructor 1.6—非常强大的修复工具哦~!~!~(如图)下载地址:Import_Fix_1.6.rar------------------------------------------------------------------------------------------------------------------------------好!现在我们讲一下我们破解软件的工作原理:查壳(使用工具PEID)--->寻找OEP(OEP就是脱壳的关键地点)(使用工具OD)--->脱壳--->修复(使用工具Import REConstructor)好!工作原理知道了吧·那我们今天就脱个带有ASPack壳的笔记本,让他脱下狼的伪装,漏出真面目!ASPack是现在比较流行的一种壳!进入正题!带有ASPack壳的笔记本下载地址:NotePad.98.E(ASPack_2.12).exe脱壳步骤1。
用OD手脱未知壳 - 顺风猪病通3.0脱壳 + 破解
用OD手脱未知壳- "顺风"猪病通3.0脱壳+ 破解【脱壳作者】刹那恍惚【使用工具】OllyDBG 汉化第二版,LordPE Deluxe 增强版,ImportREC v1.6F,PEiD v0.94,FI 4.01a【脱壳平台】WinXP SP2【软件名称】猪病通3.0【软件大小】22.0 MB【保护选项】作者自己保护【加壳方式】未知壳【软件简介】《猪病通XP版》计算机软件是由农业部饲料工业中心、北京广胜丰联信息技术有限公司的专家合作研究的新一代智能型兽医临床诊断软件,系统采用了现代计量医学的研究成果,应用概率统计的方法,如最大似然法、逐步判别法和聚类分析法等,其主要诊断原理是通过对兽医临床诊断的大量样本、专家经验和书本知识对疾病信息和症状信息进行分值计量定义,找出症状与疾病之间的统计规律,确定出经验公式,然后根据对这些症状信息的统计处理而得出诊断结果。
【下载地址】/products/download/swine.rar【脱壳声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)--------------------------------------------------------------------------------【脱壳内容】一、准备工作老规矩设置Ollydbg忽略所有异常,用IsDebug 1.4插件去掉Ollydbg的调试器标志。
1 侦壳:用PEiD查壳Borland Delphi 4.0 - 5.0 用FI 4.01a 查显示为Borland Delphi 5 !! (*PE)二,去效验+ 寻找OEP + DUMPOD 载入后有入口警告0082420C > 55 &nb sp;PUSH EBP ; 程序入口0082420D 8BEC MO V EBP,ESP0082420F B9 0E000000 MOV ECX,0E00824214 6A 00 PUSH 000824216 6A 00 PUSH 000819885 66:8B4C24 0E MOV CX,WORD PTR SS:[ ESP+E] ; 返回到这里0081988A 66:8B5424 0A MOV DX,WORD PTR SS:[ ESP+A]0081988F 66:8B4424 08 MOV AX,WORD PTR SS:[ ESP+8]00819894 E8 6BFFFFFF CALL flDiagS.00819804 00819899 DD5C24 18 FSTP QWORD PTR SS:[ESP+18]0081989D 9B WAIT0081989E 66:8B4424 16 MOV AX,WORD PTR SS:[ ESP+16]008198A3 50 PUSH EAX008198A4 66:8B4C24 18 MOV CX,WORD PTR SS:[ ESP+18]008198A9 66:8B5424 16 MOV DX,WORD PTR SS:[ ESP+16]008198AE 66:8B4424 14 MOV AX,WORD PTR SS:[ ESP+14]008198B3 E8 D0FDFFFF CALL flDiagS.00819688 008198B8 DC4424 18 FADD QWORD  ;PTR SS:[ESP+18]008198BC DD1C24 FSTP Q WORD PTR SS:[ESP]008198BF 9B WAIT008198C0 DD0424 FLD QW ORD PTR SS:[ESP]008198C3 83C4 20 ADD ESP, 20008198C6 C3 RETN ; 返回到008245F4F8 单步,走到008198C6 处时返回到008245F4008245EF E8 8452FFFF CALL flDiagS.00819878 & nbsp; ; 获取本地时间。
脱壳基础知识入门
脱壳基础知识入门现在加解密发展己形成2个分支了,一个就是传统的算法,另一个就是加密壳。
越来越多的软件采用了密码学相关算法,现在要做出一个软件注册机己不象前几年那么容易,这就要求解密者必须要有一定的数学功底和密码学知识,而这些在短时间内是不容易掌握的。
除了密码学的应用,越来越多的软件加壳了,因此要求解密者必须掌握一些脱壳技术,这就使得壳成了解密必须迈过的一个门槛。
壳发展到今天,强度越来越高了,将许多人挡在门外,使得大家望壳兴叹。
另外,论坛现在两极分化比较严重,高手讨论的脱壳技术新手看不懂,很多人想学脱壳,但看到壳这么难,只好放弃了,造成新手与高手间一个断档,为了鼓励更多新人加入脱壳的行列,很有必要将壳有关知识总结一下。
主页提供的教学确实有点过时了,己到非更新不可了。
相对于密码学算法,脱壳并不难,只要肯花时间,短期内还是比较容易取得成绩的。
第一课 PE格式要想学脱壳,第一步就得掌握PE格式,PE是Portable Executable File Format(可移植的执行体)简写,它是目前Windows平台上的主流可执行文件格式。
Microsoft Visual C++提供的WINNT.H里有PE数据结构的完整定义。
推荐文档:ah007翻译的“PE文件格式”1.9版qduwg翻译的PE文件格式Iczelion's 的PE文件格式PE结构各字段偏移参考学习PE格式的方法是自己先准备一个十六进制工具,如HexWorkshop,WinHex,用这些工具打开一个EXE文件对照着学。
强烈推荐你用Stud_PE v.2.2.0.5这款工具辅助学习PE格式。
PE格式学习的重点是在输入表(Import Table)这块。
Stud_PE工具界面:PE结构图:第二课 SEH技术结构化异常处理(Structured Exception Handling,SEH)是Windows操作系统处理程序错误或异常的技术。
SEH是Windows操作系统的一种系统机制,与特定的程序设计语言无关。
壳加壳脱壳介绍壳的一些基本常识
壳加壳脱壳介绍壳的一些基本常识壳(Shell)是计算机操作系统的一种用户接口,它提供了用户与操作系统内核之间的交互方式。
它是用户与操作系统之间的纽带,使用户能够通过命令、脚本等方式与操作系统进行交互。
加壳(Packaging)指的是给软件程序添加额外的代码,以便增加安全性、保护程序免受非法分析和篡改。
加壳技术可以对软件进行加密,防止逆向工程和盗版,同时还可以实现防病毒和反调试的功能。
脱壳(Unpacking)是指将被加壳的软件程序恢复为原始的可执行文件。
通常情况下,脱壳是为了分析软件的结构和行为,或者绕过加壳的保护机制进行非法操作。
下面是一些基本的壳常识:1. 壳的种类:常见的壳包括命令行壳和图形用户界面壳。
命令行壳(例如Bash、PowerShell等)提供了一个命令行界面,用户可以通过输入命令来与操作系统进行交互。
图形用户界面壳(例如Windows的资源管理器、macOS的Finder等)提供了可视化的界面,用户可以通过鼠标点击和拖放来进行操作。
2.壳的功能:壳作为用户接口,提供了很多功能,例如操作文件和文件夹、运行程序、管理系统设置等。
它还可以提供脚本语言的支持,使用户可以通过编写脚本来自动化任务和定制操作。
3.壳的配置和定制:壳通常可以进行配置和定制,用户可以根据自己的需求设置壳的外观和行为。
例如,可以更改壳的主题、布局和颜色,添加自定义菜单和工具栏,设置快捷键等。
4. 壳脚本:壳脚本是一种用于定制壳行为的脚本语言。
例如,在Bash中,用户可以编写Shell脚本来自动执行一系列命令和操作。
壳脚本可以用于自动化任务、批处理、系统管理等方面。
5.加壳的原因和目的:加壳可以增加软件的安全性,保护知识产权和商业机密。
它可以防止软件被逆向工程,避免黑客和破解者篡改程序逻辑或者盗版软件。
加壳还可以实现软件的防病毒功能,使病毒难以对软件进行分析和感染。
6.加壳的原理和技术:加壳通常通过改变软件的结构和代码来实现。
软件脱壳破解精典实例教程
软件脱壳破解精典实例教程软件脱壳、破解精典实例教程我要破解的软件:网络填表终结者破解需要的软件(点击下载):侦壳language.exe 脱壳AspackDie.exe反编译W32Dasm黄金中文版16进制编辑器UltraEdit.rar在破解之前先复习一下基础知识:一.破解的等级初级,修改程序,用ultraedit修改exe文件,称暴力破解,简称爆破中级,追出软件的注册码高级,写出注册机二.用w32dasm破解的一般步骤:1.看软件的说明书,软件注册与不注册在功能上有什么区别,如何注册2.运行此软件,试着输入你的姓名和任意注册码去注册,有什麽错误提示信息,将错误提示信息记下来3.侦测有无加壳(第一课).若加壳,脱壳(第二课)4.pw32dasmgold反汇编5.串式参考中找到错误提示信息或可能是正确的提示信息双击鼠标左键6.pw32dasmgold主窗口中分析相应汇编,找出关键跳转和关键call7.绿色光条停在关键跳转,在pw32dasmgold主窗口底部找到关键跳转的偏移地址(实际修改地址)8.用ultraedit找到偏移地址(实际修改地址)修改机器码,保存壳的概念:版权信息需要保护起来,不想让别人随便改动,exe可执行文件压缩,最常见的加壳软件ASPACK ,UPX,PEcompact脱壳:拿到一个软件,侦测它的壳,然后我们要把它的壳脱去,还原它的本来面目.若它没有加壳,就省事不用脱壳了.脱壳软件unaspack,caspr,upx,unpecompact,procdump 实际修改地址(偏移地址)和行地址(虚拟地址)pw32dasmgold反汇编出来的代码由三列组成第一列行地址(虚拟地址)第二列机器码(最终修改时用ultraedit修改)第三列汇编指令第一列第二列第三列:0041BE38 2B45F0 sub eax, dword ptr [ebp-10]:0041BE3B 6A42 push 00000042:0041BE3D 50 push eax:0041BE3E FF75F4 push [ebp-0C]:0041BE41 FF75F0 push [ebp-10]:0041BE44 FF35A8AB4400 push dword ptr [0044ABA8]两种不同情况的不同修改方法1.修改为jmpje(jne,jz,jnz) =>jmp相应的机器码EB (出错信息向上找到的第一个跳转)jmp 的作用是绝对跳,无条件跳,从而跳过下面的出错信息 2.修改为nopje(jne,jz,jnz) =>nop相应的机器码90 (正确信息向上找到的第一个跳转)nop 的作用是抹掉这个跳转,使这个跳转无效,失去作用,从而使程序顺利来到紧跟其后的正确信息处。
新手破解——调用堆栈法
新手破解——调用堆栈法大家好,今天给大家带来的是完整的破解教程,要破解的软件是“开心知识问答”,本教程是提供给新手朋友的,老手可以飞过。
我们首先查壳,是Aspack的壳,对于这个壳,大家应该很熟了。
我已经脱好了壳,再查一下壳,是Dephi的我们先使用一下软件,详细了解很明显,未注册版本不能使用“单人挑战”、“网络挑战”等功能,那么破解就是为了可以使用这些功能。
好,我们用Ollydbg载入软件,这是程序入口让软件运行,并点击“单人挑战”,随意选择等级,弹出“未注册”让软件暂停运行,点击“查看”—“调用堆栈” 弹出堆栈窗口,如图选择最后的一行,右击,选择显示调用,来到弹出窗口的CALL分析一下,显然00569A7F是跳转的关键。
那有朋友要说,不是把那行的“jnz”改为“je”就可以了吗?是的,这样确实可以,但因为未注册版本有很多功能无法使用,如果只改这里,那么其他的功能(如网络挑战)还得按照这样的方法修改。
这不是很烦吗?所以我们要找到使这个跳转跳向未注册的关键点我们在这段代码的开头下F2断点,重新运行软件,点击“单人挑战”,随意选择等级,程序马上暂停,Ollydbg提示有断点。
然后一步步分析,发现00569A7C的代码似乎是判断是否注册的关键。
单步运行到00569A7C,CPU下方小窗口显示ds[005731E4]=00,那很显然,只要ds[005731E4]=01,那么程序就是注册的了。
我们右击这个提示,选“数据窗口中跟随地址”,如图如图,将005731E4的数据改为01接下来就是要生成破解后的文件,在数据窗口右击,选“复制到可执行文件”,在弹出的窗口右击,选“保存文件”我们试用一下破解后的文件,可以了,已经没有限制到这里,教程就结束了,大家下去后好好练习下。
我修改了一下软件的界面,如图附上软件的地址/file/f3af9dca33开心知识问答.zip其中的kxqa.exe是原程序,脱壳.exe是脱壳后的文件,破解.exe是破解后的文件,开心知识问答.exe是我修改软件界面后的文件。
查壳脱壳工具介绍(图)02
查壳脱壳工具介绍(图)02导读] 软件加壳,可以起到压缩自身体积,防止资源被修改,同时也提高了破解难度的目的。
我们调试一个软件,非压缩壳一般都需要先脱壳修复程序后方可调试。
软件加壳,可以起到压缩自身体积,防止资源被修改,同时也提高了破解难度的目的。
我们调试一个软件,非压缩壳一般都需要先脱壳修复程序后方可调试。
常见的加壳工具我们将在下文给予介绍。
这里我们先来介绍一下查壳及通用脱壳工具。
常见的程序编写语言有:Borland Delphi 6.0 - 7.0Microsoft Visual C++ 6.0Microsoft Visual Basic 5.0 / 6.0还有汇编、易语言等。
I 查壳工具介绍:我们在很多破解教程中都能够看到这个查壳工具fileinfo.exe(简称fi),由于很久都没有更新,故不推荐大家使用。
目前大家常用的查壳工具主要有PEiD v0.94 和 DiE 0.63 汉化版。
本人感觉DiE 0.63的功能更强大些。
软件界面如下图所示:(汉化版下载,详见附件)II 通用脱壳机介绍:现在比较好用的通用脱壳工具这里推荐两个:1.RL!dePacker 1.3官方地址:官方下载:汉化版下载,详见附件。
目前该脱壳机已经支持以下84种壳的脱壳。
到该软件的官方,还可以下载到其他的脱壳工具,这里就不一一列举。
RL!dePacker is tested with 84+ packers:UPX 0.8x - 2.x [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]HidePX 1.4 [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]ASPack 1.x - 2.xeXPressor 1.2.x - 1.4.xEZip 1.0MEW 1.xNeoLite 1.0 & 2.0JDPack 1.xJDProtect 0.9nSPack 2.x - 3.x [use GenOEP to detect true OEP and Force OEP option in all cases!]PECompact 1.x - 2.xWWPack32 1.xWinUPack 0.2x - 0.3xPeX 0.99PC Shrink 0.71Polyene 0.01FSG 1.xx & 2.0PackMan 0.0.0.1 & 1.0UPolyX 0.4 & 0.5UPXRedir [use GenOEP to detect true OEP in Delphi case!UPXCrypt [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]32Lite 0.3aStone`s PE Encryptor 2.0NWCCHidePE 2.1StealthPE 2.1PE Diminisher 0.1ORiEN 2.12AHPack 1.xSoftware Compress 1.xPolyCrypt PE 2.1.5PeTite 1.xSPLayer 0.08ShrinkWarp 1.4[G!X]`s Protector 1.2!ExE Pack 1.xLameCrypt 1.0Winkript 1.0SPEC b3DEF 1.0EP Protector 0.3 [don`t use GenOEP function since it is jammed!]SmokesCrypt 1.2dot Fake Signer 3.xVirogenCrypt 0.75UPX Inkvizitor [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]UPXFreak 0.1 [use GenOEP to detect true OEP in Delphi case!dePackSimple UPX-Scrambler[use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]BJFNT 1.3PEStubOEP 1.6KByS Packer 0.2xPELockNT 2.xaUS [Advanced UPX Scrambler] 0.4 - 0.5hmimys-Packer 1.xnPack 1.xUPolyX 0.x [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]PePack 1.0UPXLock 1.x [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]PC PE Encryptor alpha [use GenOEP to detect true OEP in all cases!]UG Chruncher 0.xUPX-Scrambler RC 1.x [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]UPX Protector 1.0x [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]UPXShit 0.06 & 0.0.1 [use GenOEP to detect true OEP in Delphi case! UPX 2.x STUB]yC 1.0SimplePack 1.xRLPack Basic Edition 1.xBeRoEXEPacker 1.xPackItBitchPEncrypt 4.0 [use GenOEP to detect true OEP in all cases!]ReCrypt 0.15 - 0.80 [and all other versions that do not use API redirection, use Tracer option to fix IAT]PEnguinCrypt 1.0UPXScramb 2.xtELock [use Tracer option to fix IAT on versions higher than 0.80]yC [use Tracer option to fix IAT on versions higher than 1.1] CryptoPeProtector 0.9x [use Tracer option to fix IAT on all versions]SLVc0deProtector 1.x [use Tracer option to fix IAT on all versions, manually fix stolen code]ARMProtector 0.xEXEStealth 2.x [use Tracer option to fix IAT on all versions]PeLockNt 2.xPerplex PE-Protector 1.x [use Tracer option to fix IAT on all versions]CodeCrypt 0.16x!EP (ExE Pack) 1.x [without Morphine protection]Krypton 0.x [use Tracer option to fix IAT on all versions]OrIEN 2.1x [use Tracer option to fix IAT on all versions]2.QuickUnpack V1.0 RC1官方地址:官方下载:wp-content/uploads/2007/03/quickunpack10rc1.zip更多信息:官方下载:原文出自【比特网】,转载请保留原文链接:。
破解之多种方法脱ASP壳
破解之多种方法脱ASP壳工具:PEID-经典查壳工具OD -动态调试工具理论知识:所谓壳即软件作者为防止软件被调试破解所用的一种的保护方法,分为压缩壳和加密壳,就安全性和破解 复杂性来说,加密壳要比压缩壳厉害的多。
OD界面:左上角为CPU窗口,分别为地址,机器码,汇编代码,注释右上角为寄存器窗口左下角为内存窗口右下角为当前堆栈情况和注释经常使用的快捷键:F2:在需要的地方下断点(INT3型断点) F3:选择打开程序F4:运行到所选择的那一行F7:单步进入F8:单步跟踪F9:执行程序(运行程序)USHAD (压栈) 代表程序的入口点,OPAD (出栈) 代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真 正的OEP,就可以立刻脱壳。
二。
开始破解1。
单步跟踪法破解(最基本)载入PEID,显示:ASPack 2.12 -> Alexey Solodovnikov显然是ASPpack2.12版本的壳,今天我们的目标就是它了OD载入程序停在0040D001 > 60 pushad0040D002 E8 03000000 call NotePad_.0040D00A0040D007 - E9 EB045D45 jmp 459DD4F70040D00C 55 push ebp0040D00D C3 retn0040D00E E8 01000000 call NotePad_.0040D0140040D013 EB 5D jmp short NotePad_.0040D072pushad:程序入口点call :为调用即调用NotePad_.0040D00A这里用先用F8步进,F7进入call,继续F8步进,会遇到向下的箭头0040D008 /EB 04 jmp short NotePad_.0040D00E 0040D00A |5D pop ebp0040D00B |45 inc ebp0040D00C |55 push ebp0040D00D |C3 retn0040D00E \E8 01000000 call NotePad_.0040D014不用管它,我们破解断点只断向上的跳转到这里注意一下0040D008 /EB 04 jmp short NotePad_.0040D00E 0040D00A |5D pop ebp0040D00B |45 inc ebp0040D00C |55 push ebp0040D00D |C3 retn0040D00E \E8 01000000 call NotePad_.0040D0140040D013 EB 5D jmp short NotePad_.0040D0720040D015 BB EDFFFFFF mov ebx,-13注意这个call,要用F7进入,不然就要跑飞(程序运行起来) 继续F8步进,直到0040D12F /74 2E je short NotePad_.0040D15F0040D131 |78 2C js short NotePad_.0040D15F0040D133 |AC lods byte ptr ds:[esi]0040D134 |3C E8 cmp al,0E80040D136 |74 0A je short NotePad_.0040D1420040D138 |EB 00 jmp short NotePad_.0040D13A 0040D13A |3C E9 cmp al,0E90040D13C |74 04 je short NotePad_.0040D1420040D13E |43 inc ebx0040D13F |49 dec ecx0040D140 ^|EB EB jmp short NotePad_.0040D12D0040D142 |8B06 mov eax,dword ptr ds:[esi]向上的跳转,在向上箭头的下一行下断点,具体这么做:0040D142 8B06 mov eax,dword ptr ds:[esi]在这一行上点右键——断点——运行到选定位置F8继续步进以下还会遇到几处向上的跳转,仿照上述设置断点即可一直调试到这里0040D3A9 8985 A8030000 mov dword ptr ss:[ebp+3A8],eax 0040D3AF 61 popad0040D3B0 75 08 jnz short NotePad_.0040D3BA0040D3B2 B8 01000000 mov eax,10040D3B7 C2 0C00 retn 0C0040D3BA 68 CC104000 push NotePad_.004010CC0040D3BF C3 retn0040D3C0 8B85 26040000 mov eax,dword ptr ss:[ebp+426]注意:0040D3BA 68 CC104000 push NotePad_.004010CC程序的OEP原因:一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN的一般很快就会到程序的OEP。
软件加壳、脱壳基础介绍
软件加壳、脱壳基础介绍什么是加壳加壳的全称应该是可执⾏程序资源压缩,压缩后的程序可以直接运⾏。
加壳,顾名思义,就是给⼀个东西加上⼀个壳,只不过这⾥是程序。
就好⽐这⼤⾃然中的种⼦⼀样,为了保护⾃⼰,有⼀层壳,要想看到⾥⾯的东西,就要剥开这层壳。
加壳的另⼀种常⽤的⽅式是在⼆进制的程序中植⼊⼀段代码,在运⾏的时候优先取得程序的控制权,之后再把控制权交还给原始代码,这样做的⽬的是隐藏程序真正的OEP(⼊⼝点,防⽌被破解)。
⼤多数病毒就是基于此原理。
加壳的程序需要阻⽌外部程序或软件对加壳程序本⾝的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运⾏。
这种技术也常⽤来保护软件版权,防⽌软件被破解。
但对于病毒,加壳可以绕过⼀些杀毒软件的扫描,从⽽实现它作为病毒的⼀些⼊侵或破坏的⼀些特性。
加壳的⼯具分为压缩壳和加密壳:* UPX ASPCAK TELOCK PELITE NSPACK … ** ARMADILLO ASPROTECT ACPROTECT EPE SVKP …*什么是脱壳 脱壳就是将外⾯的保护程序脱掉,看到⾥⾯的程序。
对于有壳的程序,每次程序的⼊⼝点总是从壳开始,,这个⼊⼝点是EP,那么源程序的⼊⼝点是OEP,壳将真正的OEP隐藏了,我们脱壳就是修改程序的⼊⼝点。
如何脱壳 如果没有基础的汇编知识,那就查出相应的壳,⽤相应的脱壳机进⾏脱壳,那如果,脱壳机⽆法脱呢?⼿动脱壳!基础知识1.PUSHAD (压栈)代表程序的⼊⼝点,2.POPAD (出栈)代表程序的出⼝点,与PUSHAD想对应,⼀般找到这个OEP就在附近3.OEP:程序的⼊⼝点,软件加壳就是隐藏了OEP(或者⽤了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以⽴刻脱壳。
脱壳的⽅法清单⽅法⼀:单步跟踪法1.⽤OD载⼊,点“不分析代码!”2.单步向下跟踪F8,实现向下的跳。
也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下⼀句代码处按F4(或者右健单击代码,选择断点——>运⾏到所选)4.绿⾊线条表⽰跳转没实现,不⽤理会,红⾊线条表⽰跳转已经实现!5.如果刚载⼊程序,在附近就有⼀个CALL的,我们就F7跟进去,不然程序很容易跑飞,这样很快就能到程序的OEP6.在跟踪的时候,如果运⾏到某个CALL程序就运⾏的,就在这个CALL中F7进⼊7.⼀般有很⼤的跳转(⼤跨段),⽐如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN的⼀般很快就会到程序的OEP。
破解基础—你到底有没有壳
首先说明一下,这篇文章是转自/read.php?tid=1667455这个教程主要是讲判断程序是否加壳,所以老鸟飞过。
很多人一看到这里,就会说用PEID查壳就行了呀,其实不然。
现在一些商用的软件为了加密来保护知识产权,已不满足于ASProtect、ACProtect 等这些有名的强壳,这些壳虽加密强度高,对新手来说遥不可及,但因为很多人研究,已经很容易手动脱壳。
所以这些商家就想到了自行加壳(这在看雪的加密与解密中有提到)和修改程序入口的特征(搞黑客,做木马免杀的都知道),这样查壳工具就会显示无壳,但其实还是加了壳的,有时还不止一层壳。
那怎么准确的判断是否加壳呢?这就是今天的主要内容。
首先按照常规给软件查壳看上去没有壳,那我们再深入看看,点击PEID右下角的扩展信息试试判断1: 你有没有压缩呀?虽然壳有压缩壳和加密壳,但现在大多数的壳都有压缩功能,而现在PEID提示压缩的可能非常大,也就是说加壳的可能性很大,当然Ollydbg在载入时也有类似的提示。
但这些还不能完全准确地判断,还是OD载入试试判断2: 好多命令有问题哦!看见了吗,很多是未知命令或错误命令,一般程序不会是这样的吧!再看看判断3: 我知道你有多少一般加壳程序为了不让人破解,就会加密一些重要的信息,比如文本字串,这个软件查找文本字串时会出现错误,显然作者有东西不让我们知道到这里,同学们都知道这软件八成就是加壳的,那还有什么其他特征呢判断4: 跳转和循环一般来说,加壳的软件一般都有很多的跳转,而且没有规律,大多是JMP,循环出现在算注册码的时候,但有时用在加壳程序在内存中解码的时候,所以可以作为脱壳的突破口判断5: 雷人的命令这程序真的很雷人,004DA3C2的命令就是一个死循环,进去就出不来说到这里,我突然想到有些壳会故意加这些命令来使OD提示异常,有些可以跳过,有些(比如这个软件)OD会提示无法回避命令,这样的话,个人推荐StrongOD插件,具体设置见图设置好了,就可以跳过大多数的异常了,当然在记得在不用的时候把钩去掉对于这种不明的壳,只有手动了,具体的手动操作大家可以在百度找“手动脱壳”,我就不提了个人尝试了一下,找到一个疑似OEP的地方入口是Dephi的,而壳刚刚查过,是VC的,那么这是OEP的可能很大,脱壳试试修复过程很正常,但是运行时出错个人觉得奇怪的是既然系统提示出错,为何软件又运行了,难道是自校验。
介绍下加壳识别壳破壳的方法
介绍下加壳识别壳破壳的方法加壳是指在软件应用程序中,使用一种技术将其原始代码进行保护和加密,以防止非法复制、修改或逆向工程。
加壳技术可以对应用程序进行多种不同的保护措施,例如加密,混淆,虚拟机等,使得破解者难以破解原始代码。
然而,加壳也带来了为开发者和研究人员分析应用程序带来的困难,因此,识别和破解加壳成为了逆向工程的一个重要领域。
在识别壳并进行破壳的过程中,可以采用多种方法和技术。
下面将介绍一些常见的加壳识别与破壳方法。
1. 静态分析:静态分析主要是通过分析目标应用程序的可执行文件,以了解其结构和特征,从而确定是否使用了加壳技术。
常用的静态分析工具包括IDA Pro、OllyDbg等。
静态分析的过程中,可以查看应用程序的导入表、导出表、标题信息等,通过对这些信息的分析,可以判断是否存在加壳行为。
2. 动态调试:动态调试是指在应用程序运行的过程中,通过调试器对其进行动态分析。
动态调试可以帮助分析人员观察程序的执行过程、内存变化、寄存器状态等,从而判断是否存在加壳行为。
常用的动态调试工具包括OllyDbg、WinDbg等。
3.特征匹配:加壳工具通常会在目标应用程序中插入一些特征代码或指令,用于解密和执行加壳后的代码。
通过分析这些特征代码的存在与否,可以判断目标程序是否加壳。
例如,一些加壳工具会在代码中插入字符串或控制流混淆指令,通过检测这些特征代码的存在,可以识别加壳壳。
4.元数据检测:一些加壳工具会修改目标应用程序的元数据信息,例如PE文件头中的相关字段。
通过比较目标程序的元数据信息与原始程序的差异,可以判断是否存在加壳行为。
5.虚拟机检测:一些加壳工具使用了虚拟机技术,将原始代码转化为虚拟指令集,以增加破解难度。
通过动态执行目标应用程序,并对其执行过程进行监测和分析,可以检测虚拟机指令的存在,并进一步破解加壳。
6. Dump内存:一旦确定目标程序使用了加壳技术,可以通过Dump 内存的方式,将内存中的加壳代码和解密数据导出到磁盘上。
脱壳知识——精选推荐
脱壳知识什么是壳因为许多软件为了保护⾃⼰的软件不被和修改,通常会加壳,代码加密,增加破解的难度,从⽽达到保护软件的⽬的。
⾸先⼤家应该先明⽩“壳”的概念。
在⾃然界中,我想⼤家对壳这东西应该都不会陌⽣了,植物⽤它来保护种⼦,动物⽤它来保护⾝体等等。
同样,在⼀些计算机软件⾥也有⼀段专门负责保护软件不被⾮法修改或反编译的程序。
它们⼀般都是先于程序运⾏,拿到控制权,然后完成它们保护软件的任务。
举个例⼦,核桃⼤家都知道吧,想要吃到⾥⾯的⾁,就必须得先打开核桃外⾯那⼀层坚硬的壳,同样,外⾯想要看到⼀个程序的内部逻辑代码,就要脱掉外⾯的⼀层壳。
程序作者在编好软件后,编译成exe可执⾏⽂件。
有⼀些版权信息需要保护起来,不想让别⼈随便改动,如作者的姓名,即为了保护软件不被破解,通常都是采⽤加壳来进⾏保护。
需要把程序搞的⼩⼀点,缩⼩程序的体积,减少内存容量,从⽽⽅便使⽤。
于是,需要⽤到⼀些软件,它们能将exe可执⾏⽂件压缩,在⿊客界给⽊马等软件加壳以躲避杀毒软件。
实现上述功能,这些称为加壳。
⾃然有加壳就会有脱壳。
为什么要脱壳脱壳是为了能够学习⼀个软件的程序设计逻辑,达到我们想要的⽬的。
如果不脱壳,我们就不能够了解软件的逻辑,也就⽆法得到源代码,也就⽆法破解⼀个软件,也就不会有这篇⽂章了。
我们拿到⼀个软件想要了解它的编程逻辑,那么我们就需要对它进⾏反汇编,当然有壳,也必须先脱壳(有些软件也可以不脱壳破解)。
如果我们需要对⼀个病毒或者⽊马进⾏分析,也是需要脱壳的,如果病毒⽊马不加壳,早被杀毒软件杀掉了。
⼀些常见的壳1、aspack壳2.caspr2、upx壳3、PEcompact壳等等...我们要脱壳,就需要⽤到⼀些汇编的指令,这是必须的,如果不懂汇编指令的话,那么就⽆法进⾏软件的脱壳了。
下⾯我就来介绍破解需要的⼀些主要的汇编指令⼀、数据传输指令───────────────────────────────────────它们在存贮器和寄存器、寄存器和输⼊输出端⼝之间传送数据.1. 通⽤数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压⼊堆栈.POP 把字弹出堆栈.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压⼊堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压⼊堆栈.POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP 交换32位寄存器⾥字节的顺序XCHG 交换字或字节.( ⾄少有⼀个操作数为寄存器,段寄存器不可作为操作数)CMPXCHG ⽐较并交换操作数.( 第⼆个操作数必须为累加器AL/AX/EAX )XADD 先交换再累加.( 结果在第⼀个操作数⾥ )XLAT 字节查表转换.── BX 指向⼀张 256 字节的表的起点, AL 为表的索引值 (0-255,即0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )2. 输⼊输出端⼝传送指令.IN I/O端⼝输⼊. ( 语法: IN 累加器, {端⼝号│DX} )OUT I/O端⼝输出. ( 语法: OUT {端⼝号│DX},累加器 )输⼊输出端⼝由⽴即⽅式指定时, 其范围是 0-255; 由寄存器 DX 指定时,其范围是 0-65535.3. ⽬的地址传送指令.LEA 装⼊有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 传送⽬标指针,把指针内容装⼊DS.例: LDS SI,string ;把段地址:偏移地址存到DS:SI.LES 传送⽬标指针,把指针内容装⼊ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送⽬标指针,把指针内容装⼊FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送⽬标指针,把指针内容装⼊GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送⽬标指针,把指针内容装⼊SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF 标志寄存器传送,把标志装⼊AH.SAHF 标志寄存器传送,把AH内容装⼊标志寄存器.PUSHF 标志⼊栈.POPF 标志出栈.PUSHD 32位标志⼊栈.POPD 32位标志出栈.⼆、算术运算指令───────────────────────────────────────ADD 加法.ADC 带进位加法.INC 加 1.AAA 加法的ASCII码调整.DAA 加法的⼗进制调整.SUB 减法.SBB 带借位减法.DEC 减 1.NEC 求反(以 0 减之).CMP ⽐较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.DAS 减法的⼗进制调整.MUL ⽆符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),AAM 乘法的ASCII码调整.DIV ⽆符号除法.IDIV 整数除法.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)三、逻辑运算指令───────────────────────────────────────AND 与运算.OR 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算术右移.(=SHR)ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上⼋种移位指令,其移位次数可达255次.移位⼀次时, 可直接⽤操作码. 如 SHL AX,1.移位>1次时, 则由寄存器CL给出移位次数.如 MOV CL,04SHL AX,CL四、串指令─────────────────────────────────────── DS:SI 源串段寄存器 :源串变址.ES:DI ⽬标串段寄存器:⽬标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志 0表⽰重复操作中SI和DI应⾃动增量; 1表⽰应⾃动减量. Z标志⽤来控制扫描或⽐较操作的结束.MOVS 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. ) CMPS 串⽐较.( CMPSB ⽐较字符. CMPSW ⽐较字. )SCAS 串扫描.把AL或AX的内容与⽬标串作⽐较,⽐较结果反映在标志位.LODS 装⼊串.把源串中的元素(字或字节)逐⼀装⼊AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )STOS 保存串.是LODS的逆过程.REP 当CX/ECX<>0时重复.REPE/REPZ 当ZF=1或⽐较结果相等,且CX/ECX<>0时重复.REPNE/REPNZ 当ZF=0或⽐较结果不相等,且CX/ECX<>0时重复.REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复.五、程序转移指令─────────────────────────────────────── 1>⽆条件转移指令 (长转移)JMP ⽆条件转移指令CALL 过程调⽤RET/RETF过程返回.2>条件转移指令 (短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1<OP2 )JA/JNBE 不⼩于或不等于时转移.JAE/JNB ⼤于或等于转移.JB/JNAE ⼩于转移.JBE/JNA ⼩于或等于转移.以上四条,测试⽆符号整数运算的结果(标志C和Z).JG/JNLE ⼤于转移.JGE/JNL ⼤于或等于转移.JL/JNGE ⼩于转移.JLE/JNG ⼩于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.JC 有进位时转移.JNC ⽆进位时转移.JNO 不溢出时转移.JNP/JPO 奇偶性为奇数时转移.JNS 符号位为 "0" 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为 "1" 时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环.LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移.4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回5>处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯⽚引线TEST为⾼电平时使CPU进⼊等待状态.ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD 置⽅向标志位.CLD 清⽅向标志位.STI 置中断允许位.CLI 清中断允许位.其实上⾯我们⽤到的也就主要有⼀些赋值指令和⼀些跳转指令⽽已,⼤部分我们⽬前是⽤不到的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
首先说明一下,这篇文章是转自
/read.php?tid=1667455
这个教程主要是讲判断程序是否加壳,所以老鸟飞过。
很多人一看到这里,就会说用PEID查壳就行了呀,其实不然。
现在一些商用的软件为了加密来保护知识产权,已不满足于ASProtect、ACProtect 等这些有名的强壳,这些壳虽加密强度高,对新手来说遥不可及,但因为很多人研究,已经很容易手动脱壳。
所以这些商家就想到了自行加壳(这在看雪的加密与解密中有提到)和修改程序入口的特征(搞黑客,做木马免杀的都知道),这样查壳工具就会显示无壳,但其实还是加了壳的,有时还不止一层壳。
那怎么准确的判断是否加壳呢?这就是今天的主要内容。
首先按照常规给软件查壳
看上去没有壳,那我们再深入看看,点击PEID右下角的扩展信息试试
判断1: 你有没有压缩呀?
天骄无双小说:
虽然壳有压缩壳和加密壳,但现在大多数的壳都有压缩功能,而现在PEID提示压缩的可能非常大,也就是说加壳的可能性很大,当然Ollydbg在载入时也有类似的提示。
但这些还不能完全准确地判断,还是OD载入试试
判断2: 好多命令有问题哦!
看见了吗,很多是未知命令或错误命令,一般程序不会是这样的吧!再看看
判断3: 我知道你有多少
一般加壳程序为了不让人破解,就会加密一些重要的信息,比如文本字串,这个软件查找文本字串时会出现错误,显然作者有东西不让我们知道
到这里,同学们都知道这软件八成就是加壳的,那还有什么其他特征呢
判断4: 跳转和循环
一般来说,加壳的软件一般都有很多的跳转,而且没有规律,大多是JMP,循环出现在算注册码的时候,但有时用在加壳程序在内存中解码的时候,所以可以作为脱壳的突破口
判断5: 雷人的命令
这程序真的很雷人,004DA3C2的命令就是一个死循环,进去就出不来说到这里,我突然想到有些壳会故意加这些命令来使OD提示异常,有些可以跳过,有些(比如这个软件)OD会提示无法回避命令,这样的话,个人推荐StrongOD插件,具体设置见图
设置好了,就可以跳过大多数的异常了,当然在记得在不用的时候把钩去掉
对于这种不明的壳,只有手动了,具体的手动操作大家可以在百度找“手动脱壳”,我就不提了
个人尝试了一下,找到一个疑似OEP的地方
入口是Dephi的,而壳刚刚查过,是VC的,那么这是OEP的可能很大,脱壳试试
修复过程很正常,但是运行时出错
个人觉得奇怪的是既然系统提示出错,为何软件又运行了,难道是自
校验。
但也许是我修复输入表时有问题。
教程就写到这里了,牛人可以试试脱壳,能脱的,请回复一下,简要讲讲脱壳的过程,或是另外写一个帖子,反正就是要分享经验了。
把软件地址附上/file/f3915243ea 2011常识判断名师模块-伍景玉01.exe
难点3.jpg(37.46 KB, 下载次数: 2)。