X86逆向14:常见的脱壳手法】的更多相关文章

本章节内容将介绍软件的脱壳技术.什么是加壳?加壳就是用来压缩或者保护软件不被非法修改破解的一种工具,而脱壳就是将已经加壳的程序从壳中剥离出来,既然能给程序进行加壳,那也就会有相应的脱壳方法,本节课我们将讲解几种常见的脱壳方法,让你能够应对一部分软件的加壳保护. 接下来我们将使用不同的方法来脱几个常见的壳(UPX,Aspack,FSG,PECompact) ------------------------------------------------------------本章难度:★★☆☆☆☆…
问题: 未能从程序集 C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Data.Entity.Build.Tasks.dll 加载任务“EntityClean”.未能加载文件或程序集“file:///C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Data.Entity.Build.Tasks.dll”或它的某一个依赖项.系统找不到指定的文件. 请确认 <UsingTask> 声明正确,该程…
http://www.cnblogs.com/ludashi/p/5725743.html iOS逆向工程之App脱壳 本篇博客以微信为例,给微信脱壳."砸壳"在iOS逆向工程中是经常做的一件事情,,因为从AppStore直接下载安装的App是加壳的,其实就是经过加密的,这个“砸壳”的过程就是一个解密的过程.未砸壳的App是无法在Class-dump.Hopper等工具中使用的.所以我们要将App进行砸壳处理.在Android开发中也存在App加壳的处理,比如什么360加固了,其实就是…
栈和队列 一.栈 Stack 和队列 Queue 我们日常生活中,都需要将物品排列,或者安排事情的先后顺序.更通俗地讲,我们买东西时,人太多的情况下,我们要排队,排队也有先后顺序,有些人早了点来,排完队就离开了,有些人晚一点,才刚刚进去人群排队. 数据是有顺序的,从数据1到数据2,再到数据3,和日常生活一样,我们需要放数据,也需要排列数据. 在计算机的世界里,会经常听见两种结构,栈(stack)和队列 (queue).它们是一种收集数据的有序集合(Collection),只不过删除和访问数据的顺…
http://bbs.pediy.com/thread-218798.htm     前言 之前介绍了普通常见的反编译模式 但对于使用了 360加固 棒棒 爱加密 等等的加固应用就没办法了. 你会发现反编译出来的dex 只有几个类 逻辑都是调用so   真正的dex会被加载到内存中隐藏起来 加固应用都是多dex这种形式 要想拿到他真正的dex 需要进行脱壳处理  基本原理都是从内存中dump 我一般会先用工具来尝试 不行的话就得上 IDA(反汇编神器)超级强的一个工 具 杀手级别 贯穿移动端 P…
在软件的破解过程中,经常会遇到程序的自效验问题,什么是自效验?当文件大小发生变化,或者MD5特征变化的时候就会触发自效验暗装,有些暗装是直接退出,而有些则是格盘蓝屏等,所以在调试这样的程序的时候尽量在虚拟机里面进行吧. 这里作者编写了一个文件自效验的例子,并且使用UPX进行了加壳处理,这个CM程序,如果不脱壳的情况下是可以正常执行的,但只要一脱壳程序就废了,这也是大多数程序作者惯用的反破解手法,今天我们就来搞一搞,最终实现的效果是,软件被脱壳,并且程序还照样正常的执行,好了废话不多说,直接开搞.…
VB程序逆向常用的函数 1) 数据类型转换: a) __vbaI2Str    将一个字符串转为8 位(1个字节)的数值形式(范围在 0 至 255 之间) 或2 个字节的数值形式(范围在 -32,768 到 32,767 之间). b)__vbaI4Str   将一个字符串转为长整型(4个字节)的数值形式(范围从-2,147,483,6482,147,483,647) c)__vbar4Str  将一个字符串转为单精度单精度浮点型(4个字节)的数值形式 d)__vbar8Str   将一个字符…
本节课将讲解一下重启验证,重启验证在软件中也是非常的常见的,重启验证的原理很简单,用户在注册界面输入注册码以后程序会自动将输入的注册信息保存到配置文件中,这里可能保存到注册表,也可能使用INI文件来保存数据,然后程序会强制重启,在程序的启动环节读入文件或注册表,然后完成整个验证的过程,最后决定是否注册完成,下面作者编写了一个重启验证的小程序,并使用VMP加密了整个软件,本节课我们将在不脱壳的情况下寻找程序的注册码,最后完成注册. 有些新手认为,壳是必须要脱掉的,其实不然,我们完全可以在不脱壳的情…
本章我们将学习特征码的提取与定位,特征码是软件中一段固定的具有标志性的代码片段,特征码的用途非常广泛,最常见的就是杀毒软件的查杀了,查杀就是根据特征码定位技术实现的,再比如木马的免杀也是修改了特征码的一些特征片段而躲避查杀的啦. 本章的内容对于软件破解非常的有用,比如你需要破解一个程序,但你无法定位到关键按钮的事件中去,此时你可以先查看待破解程序使用了那种编程语言来写的,然后自己用对应的编程语言编写一个简单的小程序,并放入容易搜索到的字串,然后提取针对特定语言特定版本的通杀特征,最后应用到需要破…
本篇博客以微信为例,给微信脱壳."砸壳"在iOS逆向工程中是经常做的一件事情,,因为从AppStore直接下载安装的App是加壳的,其实就是经过加密的,这个“砸壳”的过程就是一个解密的过程.未砸壳的App是无法在Class-dump.Hopper等工具中使用的.所以我们要将App进行砸壳处理.在Android开发中也存在App加壳的处理,比如什么360加固了,其实就是给App加一层壳. 本篇博客我们就以WeChat(微信)为例,从AppStore上下载微信并安装,然后使用dumpdec…
VB程序逆向常用的函数 1) 数据类型转换: a) __vbaI2Str    将一个字符串转为8 位(1个字节)的数值形式(范围在 0 至 255 之间) 或2 个字节的数值形式(范围在 -32,768 到 32,767 之间). b)__vbaI4Str   将一个字符串转为长整型(4个字节)的数值形式(范围从-2,147,483,6482,147,483,647) c)__vbar4Str  将一个字符串转为单精度单精度浮点型(4个字节)的数值形式 d)__vbar8Str   将一个字符…
本章节我们将学习OD脚本的使用与编写技巧,脚本有啥用呢?脚本的用处非常的大,比如我们要对按钮事件进行批量下断点,此时使用自动化脚本将大大减小我们的工作量,再比如有些比较简单的压缩壳需要脱壳,此时我们也可以写出属于自己的脱壳脚本,以后遇到了对应的壳就可以使用对应脚本快速的搞定,好了废话不多说,开始进入今天的正题吧. ------------------------------------------------------------本章难度:★☆☆☆☆☆☆☆☆☆课程课件:CM_15.zip---…
本章我们将学习各种打补丁的方式,补丁在软件的破解过程中非常的重要,比如软件无法脱壳我们就只能通过打补丁的方式来破解程序,补丁原理就是当程序运行起来会被释放到内存并解码,然后补丁就通过地址或特征码定位到关键的位置,并替换关键的跳转. ------------------------------------------------------------本章难度:★☆☆☆☆☆☆☆☆☆课程课件:CM_12.zip---------------------------------------------…
本节课我们不去破解程序,本节课学习给应用程序插入一些代码片段,这里我就插入一个弹窗喽,当然你也可以插入一段恶意代码,让使用的人中招, 这里有很多原理性的东西我就不多罗嗦了毕竟是新手入门教程,如果想去了解工具的原理的话可以去系统学习PE文件结构的一些内容,好了废话不多说直接开搞. ------------------------------------------------------------本章难度:★★★☆☆☆☆☆☆☆课程课件:CM_01.zip---------------------…
软件逆向第一课中我们通过爆破的方式直接破解了程序的登录限制,但这一种方式很不合理,因为你只是破解了登录这一处的验证,如果程序内部还有其他的验证那么你需要再次爆破第二个验证,显然这种方式是很烦人的,如果有1000处这样的验证环节那么就需要爆破1000次跳转. 那有没有一种方式可以只破解一次就达到破解整个程序的目的呢? 有,关键CALL,我们猜测一下程序作者的思路,作者不可能将每一处需要验证的环节都写一遍,显然这样是很麻烦的,那有没有解决办法呢? 当然有,那就是单独写一个验证函数,注册和验证共用一个…
从本节课开始,我将带领小白入门学习软件破解的相关内容,大佬绕过,以后将会定期更新从最基本的破解知识点开始学习,由简单到复杂循序渐进,难度会逐步提高. 为了防止版权方面的争议,我将自行编写一些破解案例来供大家练手学习,破解其实就是一个思路的问题,这里别看每个程序都很小用处不大,破解的技术学到了,是可以应用到每一个程序中来实战的.在开始学习之前作者希望你具有一定的汇编代码阅读能力,和一定的C语言或易语言的开发能力. ------------------------------------------…
本章我们将学习Dll的注入技巧,我们将把一个动态链接库永久的插入到目标程序中,让程序在运行后直接执行这个Dll文件,这一章的内容也可以看作是第八课的加强篇,第八课中我们向程序中插入了一个弹窗,有木有发现一个问题?单单是一个弹窗我们就需要经历这么多的步骤,那如果你要调用几十个API函数估计早就疯透了,这里我们其实可以直接编写一些能够完成特殊功能的Dll文件,然后让程序通过LoadLibraryA函数动态的加载执行,LoadLibrary这个函数是在Kernel32.dll这个库中保存的,庆幸的是这…
本节课将介绍F12暂停法的使用技巧,F12暂停法的原理其实很简单,当我们点击OD中的暂停按钮时,OD会将当前的堆栈状态保存起来,并暂停当前窗体的线程执行,直到我们点击运行按钮OD才会唤醒全部线程并继续执行程序,我们可以在OD暂停的时候得到一些有价值的东西,这在软件破解中也是一个很不错的技巧. ------------------------------------------------------------本章难度:★★★☆☆☆☆☆☆☆课程课件:CM_11.zip--------------…
本节课我们将学习硬件断点的使用技巧,硬件断点是由硬件提供给我们的一组寄存器,我们可以对这些硬件寄存器设置相应的值,然后让硬件帮我们断在需要下断点的地址上面,这就是硬件断点,硬件断点依赖于寄存器,这些寄存器有个通用的名称,即调试寄存器,调试寄存器一共有8个分别从Dr0-Dr7.在软件破解中硬件断点常用来寻找赋值或读取的原始位置. 硬件断点并不是OD等调试器的特有功能,调试器只是把用户的需求转换成特定的格式,并写入DRX寄存器组中,等待硬件返回执行结果,由于硬件断点是由CPU直接提供硬件级别的支持,…
本章将讲解一下关于关键全局变量的一些内容,关键的全局变量对于软件的破解非常的有用,找到了关键全局变量并改写它同样可以完成完美爆破一个程序,这里我将使用CM小例子来讲解搜索关键变量的一些技巧,最后我们来实战破解一个程序练练手,从本节课开始我们将进入实战环节,不再仅仅局限于CM小程序的破解啦. ------------------------------------------------------------本章难度:★★★☆☆☆☆☆☆☆课程课件:CM_09.zip---------------…
本章我们来看两个案例,这两个案例同样使用爆破的方式破解,但是与其他的程序不同,这个程序没有弹窗,提示成功或失败使用的是图片或是一个类似图片的窗体,本章将学习两个新的API函数的使用技巧. ------------------------------------------------------------本章难度:★☆☆☆☆☆☆☆☆☆课程课件:CM_07.zip------------------------------------------------------------ 通过GetD…
易语言程序在中国的用户量还是很大的,广泛用于外挂的开发,和一些小工具的编写,今天我们就来看下如何给易语言程序DIY,这里是用的易语言演示,当然这门技术也是可以应用到任何一门编译型语言中的,只要掌握合适的方法,就可以加以修改应用到其他的语言中,这里一定要活学活用,才能将破解玩6. ------------------------------------------------------------本章难度:★★☆☆☆☆☆☆☆☆课程课件:CM_06.zip---------------------…
众所周知,一个元素,动往往比静更吸引眼球: 一套操作界面,合适的动态交互反馈能给用户带来更好的操作体验: 一个H5运营宣传页,炫酷的动画特效定能助力传播和品牌打造. 近两年,小到loading动画,表单动效,大到各式各样H5运营页的炫酷展现,“动效设计”一词可谓是火遍大江南北,而动效设计早已成为一名合格设计师必需有所知晓的领域.本文将通过一些案例,和大家一同挖掘几种常见的H5动效制作手法. 我们由浅入深来挖掘这动效制作的秘密,一个入门级的小问题:看上图这几个动画例子,大家是否能说出这动画是如何制…
目录 简述(脱壳前学习的知识.壳的历史.脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述 Apk文件结构 Dex文件结构 壳史 壳的识别 Apk文件结构 Dex文件结构 壳史 第一代壳 Dex加密 Dex字符串加密 资源加密 对抗反编译 反调试 自定义DexClassLoader 第二代壳 Dex抽取与So加固 对抗第一代壳常见的脱壳法 Dex Method代码抽取到外部(通常企业版) Dex动态加载 So加密 第三代壳 Dex动态解密与So混淆 Dex Method代码动态解密 So代…
脱壳第三讲,UPX压缩壳,以及补充壳知识 一丶什么是压缩壳.以及壳的原理 在理解什么是压缩壳的时候,我们先了解一下什么是壳 1.什么是壳 壳可以简单理解为就是在自己的PE文件中包含了代码.而有不影响我们的PE文件的执行. 2.什么是压缩壳 压缩壳指的是让我们的PE文件变小. 3.压缩壳原理 首先可以看到,我们的PE文件 一个PE头,两个节数据,其中节和节之间还有对齐值.而上图是我们的一个正常壳映射到内存中的示意图. 4.压缩壳的思路 从上图可以看出, 我们的PE文件,压缩一下变成了一个新的PE文…
DXperience汉化方法介绍 运用慧都提供的DXperience汉化包,能将最新版本的DXperience WinForm和ASP.NET控件界面.弹出框.右键菜单等汉化成中文,且能根据自己的需求定制个性化的DXperience本地化.结合汉化文档说明,仅需一行代码就可实现DXperience汉化,至少能节约30%的开发时间!下面就跟大家讲一讲DXperience的汉化方法. 怎样汉化DXperience DXperience汉化方法总结起来,主要有以下几种方式: 1.利用已经汉化好的资源包…
1. 实战背景由于工作需要,要爬取某款App的数据,App的具体名称此处不便透露,避免他们发现并修改加密逻辑我就得重新破解了. 爬取这款App时发现,抓包抓到的数据是加密过的,如图1所示(原数据较长,图中有省略),可以看到这个超长的data1字段,而且是加密过的.显然,对方不想让我们直接拿到它的信息,选择传过来一个加密的字段,而我们要做的,就是解密这个字段. 图1  数据包截图 2. 问题分析既然服务器返回了一段无法阅读的加密数据,那么必然,这段数据是在客户端进行解密的.因此,我们要做的就是找出…
生成成功后: 3>C:\Program Files (x86)\MSBuild\14.0\bin\Microsoft.Common.CurrentVersion.targets(1820,5): warning MSB3270: 所生成项目的处理器架构“MSIL”与引用“Microsoft.AspNet.Scaffolding.12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorAr…
1. 问题:  Arcgis10.0 组件初始化失败 解决方法:  ESRI.ArcGIS.RuntimeManager.BindLicense(ESRI.ArcGIS.ProductCode.EngineOrDesktop);该语句需要引用ESRI.ArcGIS.Version类库 2. 问题:  无嵌入互操作类 解决方法:  嵌入互操作类 改为 false 在VS2010中,使用.NETFramework 4.0环境时,ESRI的类库嵌入式互操作属性需要设置为False. 3.向axMapC…
1.下载DevExpress_.NET_Localization_Resources_14.2汉化包 2.解压后将zh-CN或zh-CHS复制到安装目录如D:\Program Files (x86)\DevExpress 14.2\Components\Bin\Framework 3.在开始菜中找到Visual Studio 命令提示(2010),并以管理员身份运行(WIN7,8) 4.切换命令行当前目录到D:\Program Files (x86)\DevExpress 14.2\Compon…