软件加壳脱壳技术教程
- 格式:doc
- 大小:303.50 KB
- 文档页数:38
加壳与脱壳的应用与实现一、加壳 (2)1.什么是壳 (2)2.加壳原因 (2)3.壳的加载过程 (3)4.压缩引擎 (5)5.常见的加壳工具 (6)a.常用压缩壳介绍 (6)b.加密保护壳介绍 (7)二、脱壳 (10)1.侦壳 (10)2.脱壳 (13)a.查找程序的真正入口点(OEP) (13)b.抓取内存映像文件 (15)c.输入表重建 (15)附:视频“加壳与脱壳(软件)”和“手动脱壳” (17)加壳与脱壳一、加壳1.什么是壳在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译的程序。
它们一般都是先于程序运行,拿到控制权,然后完成它们保护软件的任务。
由于这段程序和自然界的壳在功能上有很多相同的地方,基于命名的规则,就把这样的程序称为“壳”了。
图1.12.加壳原因就把这样的程序称为“壳”了。
作者编好软件后,编译成exe可执行文件。
1)有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名,即为了保护软件不被破解,通常都是采用加壳来进行保护。
2)需要把程序搞的小一点,从而方便使用。
于是,需要用到一些软件,它们能将exe可执行文件压缩。
3)在黑客界给木马等软件加壳脱壳以躲避杀毒软件。
实现上述功能,这些软件称为加壳软件。
3.壳的加载过程1)获取壳自己所需要使用的API地址如果用PE编辑工具查看加壳后的文件,会发现未加壳的文件和加壳后的文件的输入表不一样,加壳后的输入表一般所引入的DLL和API函数很少,甚至只有Kernel32.dll以及GetProcAddress这个API 函数。
壳实际上还需要其他的API函数来完成它的工作,为了隐藏这些API,它一般只在壳的代码中用显式链接方式动态加载这些API函数2)解密原程序的各个区块(Section)的数据壳出于保护原程序代码和数据的目的,一般都会加密原程序文件的各个区块。
在程序执行时外壳将会对这些区块数据解密,以让程序能正常运行。
壳一般按区块加密的,那么在解密时也按区块解密,并且把解密的区块数据按照区块的定义放在合适的内存位置。
软件加壳技术及实现软件加壳是一种常见的软件保护技术,通过将原始的可执行文件进行加密和封装,增加软件的安全性和难度,提高软件的抵抗逆向工程、防止破解的能力。
下面将介绍软件加壳技术的原理及实现方法。
1.软件加壳原理软件加壳的基本原理是将原始可执行文件进行加密处理,生成一个加密后的壳程序,再将原始可执行文件嵌入到壳程序中,并根据可执行文件的特征信息进行相应的处理和解密,最终执行原始程序。
具体的加壳流程如下:(1)加密原始可执行文件:使用对称加密算法(如AES、DES等)对原始可执行文件进行加密处理,使其不可读。
(2)生成壳程序:编写一个壳程序,包括解密原始可执行文件、加载和执行原始程序等功能。
壳程序本身一般是已经加密的,以防止被分析破解。
(3)将原始可执行文件嵌入到壳程序中:将加密后的原始可执行文件隐藏在壳程序中,一般是作为一个资源或数据块存在。
(4)运行壳程序:用户双击运行壳程序,壳程序首先进行解密处理,获取原始可执行文件,然后进行加载和执行。
2.软件加壳实现方法(1)静态加壳:在编译链接阶段对可执行文件进行加壳处理。
静态加壳可以通过修改可执行文件的文件头信息和重定位表等方式实现。
(2)动态加壳:在运行时对可执行文件进行加壳处理。
动态加壳使用的是运行时加载原始程序的方式,可以提高软件的安全性,但也会增加运行的开销。
3.加壳脱壳工具目前市面上有很多成熟的加壳脱壳工具可供使用,如UPX、ASPack、FSG等。
这些工具可以方便地对可执行文件进行加壳和脱壳操作,但也容易被黑客用来破解软件。
总结:软件加壳技术是一种常用的软件保护手段,通过加密和封装原始可执行文件,增加软件的安全性和防破解能力。
加壳脱壳工具能够方便地实现对可执行文件的加壳和脱壳操作,但需要注意合理的加密算法和技术选型,以提高软件的安全性。
怎样使用脱壳软件使用脱壳软件是指将一个已经加壳和加密的程序进行去壳操作,以便分析其内部机制和功能。
脱壳操作可以帮助安全研究人员和逆向工程师了解加壳程序的运行方式,分析其潜在的恶意行为和风险,并可能发现潜在的漏洞和安全问题。
下面将介绍一般的脱壳过程和常用的脱壳软件。
一、脱壳软件使用的一般过程:2. 选择适合的脱壳软件:根据目标程序的特征和加壳方式选择合适的脱壳工具。
常见的脱壳软件有OllyDbg、x64dbg、IDA Pro等。
3.加载加壳程序到脱壳软件中:将获取到的加壳程序文件加载到所选的脱壳软件中,通常通过点击软件的“打开”或“载入”按钮来实现。
4.设置断点:在脱壳软件中设置断点,断点可以是程序入口点、解密函数等位置,以便在程序执行过程中暂停执行,并进行相应的分析。
5.运行加壳程序:运行被加载的加壳程序,让其开始执行。
通常,加壳程序在运行时会进行解密、反调试等处理,因此需要在适当的时机暂停执行。
6.分析解密过程:当加壳程序暂停时,可以通过逆向工程和调试工具分析解密过程。
可以查看内存中解密后的内容以及解密算法的具体实现,并将其保存下来。
7.脱壳并验证:经过分析和调试,获取到解密后的内容后,可以将其保存并进行验证。
验证过程可以是检查解密后的内容和原程序的差异、运行解密后的程序以验证其功能等。
8.分析被脱壳程序:对脱壳的程序进行进一步分析,可能需要使用其他反汇编工具、动态分析工具和调试工具等进行代码阅读、数据流分析、函数调用跟踪等操作。
9.编写报告和总结:根据脱壳过程和分析结果,编写报告和总结,记录分析过程中发现的问题、风险和建议。
二、常用的脱壳软件:1. OllyDbg:这是一款非常流行的反汇编和调试工具,适用于Windows系统,可用于脱壳加壳的程序、病毒、逆向等操作。
2. x64dbg:这是一款免费的32位和64位反汇编和调试工具,提供了易于使用的界面和强大的功能,适用于Windows系统。
3. IDA Pro:这是一款高级的静态反汇编工具,可用于对加密代码进行分析和逆向工程,支持多种CPU架构和文件格式。
介绍下加壳识别壳破壳的方法加壳是计算机软件中的一种保护措施,用于保护软件免受逆向工程和盗版侵害。
加壳通过在原始程序上添加一层原生或自定义的壳,在运行时加固被保护的代码,隐藏关键功能和算法,对软件进行加密和压缩等操作,使其更加难以被逆向工程分析和破解。
因此,加壳成为了软件开发者和软件厂商保护自己知识产权和商业模式的重要手段。
然而,随着逆向工程技术的发展,破解加壳技术也变得越来越成熟。
破壳是指绕过加壳保护,还原被保护的软件的原始二进制代码。
下面将介绍几种常见的加壳识别壳破壳的方法。
一、静态分析法静态分析法是在不运行加壳程序的情况下对其进行逆向分析的方法。
通过分析加壳程序的头部信息、导入导出表、节表信息、加壳部分的代码特征等,可以判断出是否存在加壳和使用的壳类型。
然后,借助逆向工程工具(如IDA Pro、OllyDbg等),对加壳程序进行反汇编和调试,还原出被壳保护的原始软件代码。
二、动态调试法动态调试法是通过运行加壳程序,在运行时动态调试其行为,获取关键信息,帮助识别壳的类型和破解壳。
通过使用调试工具,如OllyDbg和x64dbg等,可以在软件运行过程中观察和修改寄存器、内存、堆栈等信息,找到关键的跳转指令,尝试绕过壳的保护和加密操作。
三、壳特征识别法壳特征识别法是通过分析加壳程序的一些特征,如一些特殊字符串、特定函数的调用方式、调用API的顺序等,来识别壳的类型。
根据壳的特征,可以编写脚本或使用专门的壳特征识别工具,从二进制代码中特定的特征,找到壳并进行破解。
四、动态调用链分析法动态调用链分析法是通过分析加壳程序的动态调用链,了解程序的运行过程和保护措施。
通过传递参数、查找调用、分析返回值等方式,逐步跟踪加壳程序的执行流程,找到关键的调用和逻辑判断,破解保护措施,还原原始代码。
虽然破壳技术不断发展,加壳技术也不断进化,但是通过以上方法可以部分或完全破解绝大多数的软件加壳。
要保护软件不被破解,开发者需要采取更加综合和复杂的保护措施,如代码混淆、虚拟机保护、反调试等,提高软件的保护级别,增加破壳难度。
几种用OD脱壳方法OD是反编译软件的一种,可以将可执行文件转换为可读的源代码。
脱壳是指从已经加密或保护的软件中提取出原始的未加密或未保护的代码。
下面是几种常见的OD脱壳方法:1.静态分析法:静态分析是指对二进制文件进行分析,了解其结构、函数调用和控制流程等信息。
通过对逆向工程的分析,可以分析出加密算法和解密函数的位置。
使用静态分析法脱壳的主要步骤如下:-打开OD软件,将加密的可执行文件加载到OD中。
- 使用各种OD工具,如IDA Pro,OllyDbg等,显示可执行文件的汇编代码。
-通过分析代码和调试程序,找到加密算法和解密函数的位置。
-根据找到的位置,修改程序的执行流程,跳过解密函数,使得程序直接执行解密后的代码。
2.动态调试法:动态调试是指在运行时对程序进行调试和分析。
使用动态调试法脱壳的主要步骤如下:-打开OD软件,将加密的可执行文件加载到OD中。
- 使用动态调试工具,如OllyDbg或GDB等,在程序执行期间跟踪和记录函数调用和内存访问。
-通过分析函数调用和内存访问,找到加密算法和解密函数的位置。
-在找到的位置上下断点,执行程序并使用OD工具查看解密后的代码。
3.内存镜像法:内存镜像法是指通过将程序加载到内存中,并对内存进行镜像和分析来脱壳。
使用内存镜像法脱壳的主要步骤如下:-运行加密的可执行文件。
- 使用内存镜像工具,如DumpBin或WinDBG等,将程序的内存镜像保存到磁盘上。
-使用OD软件加载内存镜像文件。
-通过分析内存镜像文件,找到加密算法和解密函数的位置。
-修改程序的执行流程,跳过解密函数,使得程序直接执行解密后的代码。
这些方法都可以用于将加密的可执行文件转换为可读的源代码,从而进行进一步的分析和修改。
脱壳过程需要进行深入的逆向工程和对程序的理解,因此需要具备一定的技术和知识。
此外,需要注意的是,脱壳过程可能涉及到破解和侵犯版权的行为,应遵守法律规定,并仅限于安全研究和个人学习的目的使用。
upx脱壳方法-回复UPX(Ultimate Packer for eXecutables)是一种广泛使用的可执行文件压缩器和脱壳器。
它采用了先进的压缩算法,能够有效地减小可执行文件的体积,同时保持文件的可执行性。
然而,有时我们需要对UPX压缩过的可执行文件进行脱壳操作,以便进行进一步的分析或修改。
本文将一步一步介绍UPX脱壳的方法。
第一步:准备工作在开始UPX脱壳之前,我们需要先准备一些工具。
首先,我们需要下载并安装IDA Pro。
IDA Pro是一款非常强大的逆向工程软件,可以帮助我们分析和修改可执行文件。
其次,我们还需要下载并安装UPX工具集,以便进行脱壳操作。
最后,我们需要找到一个已经被UPX压缩过的可执行文件,作为我们的实验对象。
第二步:分析可执行文件打开IDA Pro,并导入我们选定的UPX压缩文件。
通过IDA Pro的静态分析功能,我们可以获取有关该文件的一些基本信息,例如文件的入口点地址和函数列表等。
这将有助于我们在后续操作中准确定位需要脱壳的代码。
第三步:寻找脱壳代码在IDA Pro中,我们需要找到UPX的脱壳代码。
UPX脱壳的主要原理是在运行时将压缩过的可执行文件还原为原始的可执行文件。
因此,UPX脱壳代码的位置通常在程序的入口点之后。
我们可以通过在IDA Pro中分析可执行文件的反汇编代码,寻找与UPX脱壳相关的代码段或函数。
这些代码段或函数通常包含有关文件解压缩和内存映射的指令。
第四步:研究脱壳代码找到UPX脱壳代码后,我们需要仔细研究这段代码的逻辑和功能。
通常,UPX脱壳代码会包含一系列指令,用于解压缩数据并将其映射到内存中。
通过对脱壳代码的分析,我们可以了解到UPX是如何解压缩和还原可执行文件的。
第五步:修改脱壳代码在研究了脱壳代码后,我们可以尝试对其进行修改,以实现我们的需求。
可能的修改包括改变解压缩的方式、修改解压缩后的文件内容等。
通过在IDA Pro中编辑脱壳代码,我们可以实现对UPX脱壳过程的定制。
如何将EXE安装文件脱壳和破解
首先,我要强调,破解软件和脱壳软件违反了软件版权法,这是非法
行为。
那么,如何脱壳和破解EXE安装文件呢?
1.脱壳软件
脱壳是指将被打包、加密或保护的EXE文件还原为原始的可执行文件。
脱壳软件通常需要一些专业的技术知识,并且不同软件的脱壳方法也会有
所不同。
下面是一些常见的脱壳方法:
-调试器:将脱壳软件用调试器打开,断点在加载代码之前的位置上,使得在加载期间可以捕捉到呈现在内存中的文件。
- 静态分析:通过静态分析工具,如IDA Pro,分析文件的指令、数
据和控制流,找出加密和保护技术,并获取原始的可执行文件。
2.破解软件
破解软件是指破解免注册版或试用期软件的功能限制,以获得免费使
用所需功能的方法。
以下是一些常见的破解方法:
-序列号生成器:破解序列号的软件,通过生成有效的序列号来解锁
软件的功能限制。
-反向工程:通过逆向工程将软件中的保护措施绕过或关闭,以便在
未注册的情况下使用软件的全部功能。
- Patching:通过修改软件的二进制代码,删除或绕过软件的注册验证,以实现破解的目的。
无论您是否打算进行此类操作,我们鼓励您始终遵守版权法。
许多软
件公司对未经授权的破解行为采取法律行动,并对侵权者提起诉讼。
同时,使用未经授权的破解软件可能会导致您的计算机感染恶意软件或病毒。
因此,我们建议您遵守软件许可协议,并根据开发商提供的合法方式
获得软件的完整功能。
如果您希望获得一款软件的全部功能,可以考虑购
买正版软件或使用免费的替代品。
加壳免杀与脱壳反编译图文教程时间:2009-09-14 10:24来源:安全中国第一、什么是免杀?免杀,也就是反病毒(Anti Virus)与反间谍(Anti Spyware)的对立面,英文为Anti Anti- Virus(简写Vi rus AV),逐字翻译为“反-反病毒”,我们可以翻译为“反杀毒技术”。
单从汉语“免杀”的字面意思来理解,可以将其看为一种能使病毒木马免于被杀毒软件查杀的技术。
但是不得不客观地说,免杀技术的涉猎面非常广,您可以由此轻松转型为反汇编、逆向工程甚至系统漏洞的发掘等其他顶级黑客技术,由此可见免杀并不简单。
第二、什么是加壳?加壳的全称应该是可执行程序资源压缩,是保护文件的常用手段. 其实是利用特殊的算法,对EXE、D LL文件里的资源进行压缩、加密。
类似WINZIP 的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。
它们附加在原程序上通过Windows加载器载入内存后,先于原始程序执行,得到控制权,执行过程中对原始程序进行解密、还原,还原完成后再把控制权交还给原始程序,执行原来的代码部分。
加上外壳后,原始程序代码在磁盘文件中一般是以加密后的形式存在的,只在执行时在内存中还原,这样就可以比较有效地防止破解者对程序文件的非法修改,同时也可以防止程序被静态反编译.第三、什么是脱壳?脱壳是站在加壳的对立面的,如果说加壳是变化,脱壳就是还原.第四、什么是反编译?高级语言源程序经过编译变成可执行文件,反编译就是逆过程。
但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序。
计算机软件反向工程(Reversepengineering)也称为计算机软件还原工程,是指通过对他人软件的目标程序(可执行程序)进行“逆向分析、研究”工作,以推导出他人的软件产品所使用的思路、原理、结构、算法、处理过程、运行方法等设计要素,作为自己开发软件时的参考,或者直接用于自己的软件产品中。
浅谈壳的加载步骤及手动脱壳。
现在玩脱壳的人越来越多了,不知道是好事还是坏事。
现在玩手动脱壳一般三样工具足矣:loader,ImpREC,TRW2000。
也许是这三剑客的功能太强大,因此手动脱壳也变得象流水化作业。
大致以下几个步骤就搞定了。
1)loader找OEP.(OEP就是程序原来的入口点,即Original Entry Point)2)TRW2000来Dump。
也就是把内存映象保存为文件。
3)ImpREC修补Import Table.(也就是修补程序原来的API地址)不过如果这样,那么我想手动脱壳也没有必要了,因为更先进的工具如各种脱壳机会更快捷有效。
既然是手动脱壳,当然想对壳有所了解,那么让我们看看壳是如何工作的吧。
壳和病毒从某些方面比较类似,都需要比原程序代码更早的获得控制权,这是通过在原程序的代码执行前加入自己的一段代码来实现的。
注意我说的这是执行时的情况。
对于文件中的情况,就是壳修改了原程序的执行文件的组织结构,从而达到壳的代码能够比原程序的代码提前获得控制权,并且不会影响原程序的正常运行,所以从这点上说,壳和病毒很类似。
现在的执行文件一般都是PE格式,如果你对PE格式一无所知,最好还是去看一看相关的资料。
我没有那么地道的专业知识,也怕误人子弟。
相关名词1)Entry Point (入口点)PE格式的可执行文件的执行时的入口点,即是PE格式中的Entry Point。
用PEditor或者LordPE之类的PE查看工具看看NotePad.exe,你就会看到Entry Point的值。
也就是说NotePad.exe在执行时的第一行代码的地址应该就是这个值。
(当然应该加上基地址)2)Section (节区)PE格式文件是按节区进行规划组织的,不同的节区一般保存的数据的作用也不相同。
通常使用缺省方式编译的程序文件,有CODE/DATA/TLS/.text/.data/.tls/.rsrc/.rdata/.edata/.reloc等不同的名称,有的用于保存程序代码,如CODE和.text节区,有的用于保存程序中的变量的,如DATA/.data节区,有的保存重定位信息,如.reloc,有的用于保存资源数据,如.rsrc。
一、概论壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳两种常见压缩壳:UPX、ASpcak、Telite、PElite、Nspack ...常见加密壳:Armadillo ASProtect ACProtect EPE SVKP ...顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。
当然加密壳的保护能力要强得多!二、常见脱壳方法预备知识1.PUSHAD (压栈)代表程序的入口点,2.POPAD (出栈)代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近3.OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP/FOEP),只要我们找到程序真正的OEP,就可以立刻脱壳。
如何分辨加密壳和压缩壳,通用特点,OD载入时有入口警告或询问是压缩程序吗?普通压缩壳OD调试时候没有异常,加密壳全部有反跟踪代码,会有许多SEH陷阱使OD调试时产生异常。
找OEP的一般思路如下:先看壳是加密壳还是压缩壳,压缩壳相对来说容易些,一般是没有异常。
外壳解压代码起始点如果是pushfdpushad跟踪时如果有发现popadpopfd对应有些壳只有pushad和popad相对应附近还有retnjmp等指令,发生跨断跳跃一般就到了OEP处。
当然也有其他的,如 je OEP等等,一般都是段之间的大跳转,OD的反汇编窗口里都是同一个段的内容,所以更好区别是否是段间跳转。
找Oep时注意两点。
1、单步往前走,不要回头。
2、观察。
注意poshad、poshfd,popad、popfd等,和外壳代码处对应,注意地址发生大的变化。
单步跟踪什么时候F8走,F7,F4步过?这里我说说关于F8(Step Over)和F7(Step in)的一般方法,粗跟的时候一般都是常用F8走,但是有些call是变形的Jmp,此时就需要F7代过,区别是否是变形Jmp的一个简单方法是比较call的目标地址和当前地址,如果两者离的很近,一般就是变形Jmp了,用F7走。
脱壳教程标题:脱壳教程引言:脱壳是指将软件或应用程序的包装层(也称为保护壳或加密层)移除,以便对其进行更深入的分析、修改或逆向工程。
脱壳过程可以帮助软件开发人员或安全研究人员理解程序的内部运行机制,发现其中的漏洞或者进行优化改进。
本文将介绍脱壳过程的基本原理和几种常见的脱壳工具以及其使用方法。
一、脱壳的基本原理脱壳的基本原理是通过破解或绕过软件的保护机制来移除保护壳。
保护机制通常包括各种检测和防御技术,如代码混淆、加壳、逆向工程等。
常见的保护壳有UPX、ASProtect、Enigma等。
脱壳的过程涉及对程序进行调试、分析和修改。
二、脱壳工具介绍及使用方法1. OllyDbgOllyDbg是一款著名的逆向工程和调试工具,也是脱壳过程中经常使用的工具之一。
它具有强大的调试和反汇编功能,可以帮助分析程序的执行流程、内存变化等。
使用OllyDbg进行脱壳时,首先需要加载待脱壳的程序,然后设置断点,跟踪程序执行,找到关键的保护机制的位置,最终移除保护壳。
2. IDA ProIDA Pro是一款功能强大的反汇编和逆向工程工具。
它可以将程序转换为易读的汇编代码,并提供强大的导航和分析功能。
脱壳时可以使用IDA Pro来分析和修改程序的内存和代码。
它可以帮助找到程序的入口点、解密过程等,从而移除保护壳。
3. x64dbgx64dbg是一款开源的调试器工具,适用于32位和64位的Windows系统。
它具有用户友好的界面和丰富的调试功能,并支持脱壳过程中的动态调试和反调试技术。
使用x64dbg进行脱壳时,可以跟踪程序的执行流程、查看内存变化,找到关键代码并进行修改。
三、脱壳过程示例以某款加壳的软件为例,介绍基本的脱壳过程。
1. 加载待脱壳的程序到脱壳工具中,并设置断点。
2. 运行程序,在断点处停下来,观察程序的状态和执行流程。
3. 跟踪程序的执行,查找关键的保护机制位置,例如解密函数、保护壳的入口等。
4. 分析并修改程序的内存和代码,移除保护壳。
360脱壳方法通常涉及到一系列的逆向工程技巧,具体如下:
1. 过掉反调试:需要找到并绕过360加固的反调试机制。
这可能涉及到对加固应用的内存进行分析,寻找和修改与反调试相关的代码部分。
2. 获取原APK的classes.dex文件:这是脱壳的关键一步,因为classes.dex文件包含了应用程序的大部分代码。
可以尝试从内存中DUMP出原始的classes.dex文件。
在Dalvik虚拟机下,可能需要自己实现加载classes.dex的代码,而在ART环境下,操作空间可能会更小。
3. 使用MT管理器脱壳:MT管理器是一个常用的工具,可以用来进行APK文件的分析、编辑和脱壳。
通过MT管理器,可以对APK包中的文件进行操作,尝试去除加固壳的部分。
4. IDA手动脱壳:IDA(Interactive Disassembler)是一个强大的逆向工程工具,可以用来静态分析和动态调试程序。
在Dalvik模式下,可以在memcmp处进行断点,结合静态和动态分析来寻找反调试点,并在JNI_Onload处dump出so文件进行修复。
个人总结的一个VMP脱壳步骤个人在学习脱VMP加壳的过程中总结的一个步骤。
按照这个步骤,包括VMP1.6—2.0在内应该有70%-80%能脱壳。
脱不了的也别问我,我也刚开始学习。
我还想找人问呢。
想要脱VMP的壳,首要工作当然是要找一个强OD啦!至于是什么版本的OD自己多试验几个,网上大把大把的,一般来说只要加载了你想脱的VMP加壳程序不关闭都可以。
其次就是StrongOD.dll这个插件了,现在用的比较多的就是海风月影,同样网上也是大把大把的。
下载回来后复制到你的OD程序所在的文件夹里面的plugin里。
StrongOD的设置选项搞不懂就全部打钩。
接下来要做的工作就是搞清楚我们要脱壳的程序编程的语言了,可以用PEID或者fastscanner查看,如果在这里看不到也可以在OD载入以后通过里面的字符串判断了。
例如VB的程序会出现MSVB----/VC的会出现MSVC---等等。
这些都是程序运行所需要的windows链接文件。
做完这些预备工作接下来当然是用OD载入文件啦。
文件载入后在反汇编窗口CTRL+G搜索VirtualProtect(注意V跟P要大写,至于为什么要搜索这个别问我)。
一般来说搜索的结果会出现以下的类似:7C801AE3 E8 75FFFFFF call kernel32.VirtualProtectEx我们在这里下F2断点。
然后F9运行到我们下的这个断点。
接下来我们就要注意观察堆栈窗口了。
一般来说当我们F9运行到我们上面下的断点的时候在堆栈窗口会出现以下类似:0012F66C 00401000 |Address = TradeCen.004010000012F670 000280D1 |Size = 280D1 (164049.)0012F674 00000004 |NewProtect = PAGE_READWRITE0012F678 0012FF98 \pOldProtect = 0012FF98我们要注意观察的就是在接下来我们F9运行的时候,ADDRESS和NEWPROTECT这两行的变化。
介绍下加壳识别壳破壳的方法加壳是指在软件应用程序中,使用一种技术将其原始代码进行保护和加密,以防止非法复制、修改或逆向工程。
加壳技术可以对应用程序进行多种不同的保护措施,例如加密,混淆,虚拟机等,使得破解者难以破解原始代码。
然而,加壳也带来了为开发者和研究人员分析应用程序带来的困难,因此,识别和破解加壳成为了逆向工程的一个重要领域。
在识别壳并进行破壳的过程中,可以采用多种方法和技术。
下面将介绍一些常见的加壳识别与破壳方法。
1. 静态分析:静态分析主要是通过分析目标应用程序的可执行文件,以了解其结构和特征,从而确定是否使用了加壳技术。
常用的静态分析工具包括IDA Pro、OllyDbg等。
静态分析的过程中,可以查看应用程序的导入表、导出表、标题信息等,通过对这些信息的分析,可以判断是否存在加壳行为。
2. 动态调试:动态调试是指在应用程序运行的过程中,通过调试器对其进行动态分析。
动态调试可以帮助分析人员观察程序的执行过程、内存变化、寄存器状态等,从而判断是否存在加壳行为。
常用的动态调试工具包括OllyDbg、WinDbg等。
3.特征匹配:加壳工具通常会在目标应用程序中插入一些特征代码或指令,用于解密和执行加壳后的代码。
通过分析这些特征代码的存在与否,可以判断目标程序是否加壳。
例如,一些加壳工具会在代码中插入字符串或控制流混淆指令,通过检测这些特征代码的存在,可以识别加壳壳。
4.元数据检测:一些加壳工具会修改目标应用程序的元数据信息,例如PE文件头中的相关字段。
通过比较目标程序的元数据信息与原始程序的差异,可以判断是否存在加壳行为。
5.虚拟机检测:一些加壳工具使用了虚拟机技术,将原始代码转化为虚拟指令集,以增加破解难度。
通过动态执行目标应用程序,并对其执行过程进行监测和分析,可以检测虚拟机指令的存在,并进一步破解加壳。
6. Dump内存:一旦确定目标程序使用了加壳技术,可以通过Dump 内存的方式,将内存中的加壳代码和解密数据导出到磁盘上。
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编写的软件可以选用PE Explorer V1.98 R2汉化工具或Passolo V7.0.01.1汉化工具来汉化;而Visual Basic 编写的软件就要用VBLocaloze V1.0来汉化。
所以不同语言编写的软件要选用相应的汉化工具进行汉化。
如何将EXE安装文件脱壳和破解
对于EXE安装文件的脱壳和破解,首先需要明确一点:这种行为是非法的,违反了软件版权法,如果未经授权擅自进行脱壳和破解,将会面临法律风险。
因此,我们鼓励用户遵守法律法规,正当使用软件。
下面的内容仅供学习和了解用途,请勿用于非法活动。
脱壳和破解是逆向工程的一种技术手段,通常用于破解软件的限制或加密保护,使其可以在未经授权的情况下运行或修改。
下面的步骤介绍了脱壳和破解流程的一般步骤:
1.分析静态和动态行为:使用反编译工具或调试器分析EXE文件的静态和动态行为。
这包括查看程序的逻辑、代码结构和数据流。
2.寻找加密和保护机制:在静态和动态分析的基础上,尝试找到程序使用的加密和保护机制。
这可能包括对文件的加密、检测反调试措施、或者对特定代码进行混淆等。
3.去除加密和保护:通过修改程序的二进制代码,解开加密和保护措施,使得程序可以正常运行。
这可能需要修改关键函数、解密算法或者绕过反调试措施。
4.修改程序的逻辑:如果需要修改程序的逻辑,使其满足特定需求,可以通过修改代码或者增加额外功能来实现。
这可能需要对程序进行重写或者插入自定义代码。
5.重新打包和分发:脱壳和破解完成后,重新打包成可执行文件,并进行分发。
注意,这一步骤可能也涉及到版权问题,请谨慎操作。
如果您对软件有需求,可以考虑购买正版软件或者寻找合法的替代方案。
----------------<小 A 分>----------------一、概论壳出于程序作者想对程序资源压缩、注册保护的目的,把壳分为压缩壳和加密壳(强壳)两种"UPX" "ASPCAK" "TELOCK" "PELITE" "NSPACK(北斗)" ... "ARMADILLO" "ASPROTECT" "ACPROTECT" "EPE(王)" "SVKP" ...顾名思义,压缩壳只是为了减小程序体积对资源进行压缩,加密壳是程序输入表等等进行加密保护。
当然加密壳的保护能力要强得多!-----------<小 A 分割线>-------------二、工具的认识OllyDBG ring3 shell 层级别的动态编译工具、PEid、ImportREC、LordPE、softIce ring0 级别调试工具-------------<小 A 分割>-------------------三、常见手动脱壳方法预备知识1.P USHAD (入栈/压栈)代表程序的入口点,2.P OPAD (弹栈/出栈)代表程序的出口点,与 PUSHAD 想对应,一般找到这个OEP 就在附近3.O EP:程序的入口点,软件加壳就是隐藏了 OEP(或者用了假的 OEP/FOEP),只要我们找到程序真正的 OEP,就可以立刻脱壳。
------------<小 A 分割线>--------------------方法一:单步跟踪法1.用OD 载入,点“不分析代码!”2.单步向下跟踪 F8,实现向下的跳。
也就是说向上的跳不让其实现!(通过F4)3.遇到程序往回跳的(包括循环),我们在下一句代码处按 F4(或者右健单击代码,选择断点——>运行到所选)4.绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!5.如果刚载入程序,在附近就有一个 CALL 的,我们就 F7 跟进去,不然程序很容易跑飞,这样很快就能到程序的 OEP6.在跟踪的时候,如果运行到某个 CALL 程序就运行的,就在这个 CALL 中F7 进入7.一般有很大的跳转(大跨段),比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETN 的一般很快就会到程序的 OEP。
记一次APP去壳破解重新打包1.拿到apk包时,第一步先判断是否加壳,加的是什么壳在手机上或者虚拟机上用MT管理器找到对应的apk包可以看的这个包虽然说是未加固,但还有个伪百度加固,其实也就是加了百度的壳的2.利用BlackDex32进行去壳在手机或虚拟机上安装BlackDex32,在软件中选择你要去壳的APP(ps:要先把apk安装上,不然找不到),在软件中可以指定去壳后的文件存储路径,到对应位置下找到apk的包名即可找到去壳后的dex文件3.回到MT管理器,打开脱壳的后dex与未脱壳的dex进行比较未脱壳的:脱壳后的:可以看到,第一个是一些测试用代码,第二个是百度的壳相关代码,第三个是真正隐藏起来的代码,第四个和暴露出来的代码一致。
那么就简单了,保留第三个和第四个,其他的都不要了。
4.还是用MT管理器修改你想破解的代码可以看的源码跟java类似,但还是很难解读,这就需要预先了解一些smali语法了。
5.修改原始apk包1.将之前修改好的dex文件重命名为classes.dex,用MT管理器查看原始apk包,将原始的dex文件重命名为classes1.dex,将新的dex文件拖进去2.打开assets文件夹,将里面带baidu字样的全都删掉,再打开lib下的armeabi文件夹,同样把带baidu字样的so文件全都删掉3.打开AndroidManifest.xml文件,找到application标签里的android:name属性,这里的启动类是假,根据内容找到对应的代码文件去寻找真正的启动类4.5.打开对应的AppInfo文件,找到真正启动类6.7.8.将真正的启动类替换掉假的启动类,保存退出6.长按apk包,对apk进行签名,签名完后将之前的安装的删掉,重新安装破解的即可以上只是浅显的针对我的那个apk进行的简单破解,很大概率可能还是解决不了你的问题,具体问题还是得具体分析,当然如果能对你有所帮助,那我也很开心能帮上忙。