概述 现在使用Proguard进行混淆的代码,也很容易被破解,所以就出现了加固工具,让反编译的难度更大。但是有了加固技术,就会有反加固技术,正所谓道高一尺魔高一丈。 经过加固后的apk,通过 dex2jar反编译: 腾讯乐固: ? 360加固: ? 从上面可以看出,经过加固后的apk,通过常规方法反编译无法获取到源码。 下载工具 脱壳工具FDex2 通过Hook ClassLoader的loadClass方法,反射调用getDex方法取得Dex(com.android.dex.Dex类对象),在将里面的dex写出。 Step6: 在 VirtualXposed中运行要脱壳的应用。 Step7: 脱壳后的dex文件: ? Step8: 通过 dex2jar对 脱壳的dex进行反编译: ? 从上图就可以看到脱壳后的dex文件被成功的反编译。
参考文章:https://www.jianshu.com/p/138c9de2c987 概述 现在使用Proguard进行混淆的代码,也很容易被破解,所以就出现了加固工具,让反编译的难度更大。 但是有了加固技术,就会有反加固技术,正所谓道高一尺魔高一丈。 下载工具 脱壳工具FDex2 通过Hook ClassLoader的loadClass方法,反射调用getDex方法取得Dex(com.android.dex.Dex类对象),在将里面的dex写出。 e.printStackTrace(); XposedBridge.log("文件写出失败"); } } } 参考链接 【手机端】腾讯乐固,360加固一键脱壳 安卓xposed脱壳工具FDex2 ---- 悲伤的夏洛特
2核2G云服务器首年95元,GPU云服务器低至9.93元/天,还有更多云产品低至0.1折…
测试环境: 调试器: IDA6.5 手机及系统版本: image.png .SO层脱壳 一:.如何到达壳入口点? 二:so如何脱壳? 1.到达壳入口后我们单步跟踪看看,到修改代码属性这里 image.png image.png R0为要修改的开始地址 2.准备解密代码,跟进该函数。 (样本就是上传了,想玩玩的去XX加固保官网下载去吧) 资料下载 http://yunpan.cn/cAFzDYcB6weWY (提取码:6e74)
文章目录 一、脱壳起点 : 整体加固脱壳 二、Dalvik 脱壳机制 : 利用 DexClassLoader 加载过程进行脱壳 1、DexClassLoader 源码 2、DexClassLoader 加载 dex 字节码示例 一、脱壳起点 : 整体加固脱壳 ---- 一代壳 即 DEX 整体加固 , 所有类型的加固 , 都会在最外围加上一层 整体加固的 壳 , 即使进行了 VMP / Dex2C : 如果拿到 DEX 文件后 , 发现是空函数 , 则说明在 整体加固 的基础上 还进行了 函数抽取 加壳 ; 下一步针对 函数抽取 脱壳 ; VMP 或 Dex2C 脱壳 : 如果拿到 DEX 文件后 , 发现是 Native 函数 , 说明在 整体加固 的基础上进行了 VMP 或者 Dex2C 加壳 ; 下一步 针对 Native 化的函数脱壳 ; 二、Dalvik 脱壳机制 : 利用 DexClassLoader 加载过程进行脱壳 ---- Dalvik 脱壳机制 : 在 Dalvik 下 , 使用自定义 DexClassLoader 加载 dex 字节码文件中的类 , 通过分析 DexClassLoader
文章目录 一、脱壳点简介 二、修改系统源码进行脱壳 一、脱壳点简介 ---- 在上一篇博客 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 rewriteDex 函数分析 | 脱壳点 | 获取 dex 文件在内存中的首地址 ) 中 , 提到了 2 个脱壳点 : ① /dalvik/vm/DvmDex.cpp 的 dvmDexFileOpenPartial 方法 ② /dalvik/libdex/DexFile.cpp 的 dexFileParse 方法 可以脱壳的 HOOK 点函数 , 不止上面 2 个 , 凡是函数中有 DEX 文件首地址的函数都可以作为脱壳点 ; 如 : DexPrepare.cpp 中 rewriteDex() 方法 也可以作为脱壳点 ; HOOK 上面的 dvmDexFileOpenPartial 或 dexFileParse 方法 , ---- 这里对 Android 系统的源码进行简单的修改 , 然后进行脱壳操作 , 这里的脱壳其实就是将 dex 文件在 内存的起始地址 ; /* 记录当前 dex 文件索引 */ int dexCount
使用upx脱壳工具脱壳(攻防世界新手第七题为例simple-unpack) 查壳工具链接:https://www.52pojie.cn/thread-437586-1-1.html 脱壳工具链接:https type=reverse&number=4&grade=0) ida打开只有四个函数 丢入ExeinfoPe里面 发现有壳(最下面那行显示是upx壳) 脱壳 首先安装工具,解压完之后进入到最里层文件夹中复制下来此时的地址 ,cmd打开命令行先cd把地址转换,之后直接输入upx.exe -h安装完成 会出现这样(一大串) 之后就可以脱壳了,还在这个窗口,因为刚刚已经把地址转到了upx脱壳工具这里了,所以这下不用再转 ,(下次打开需要重新转) 先打操作指令 这些是指令,其中-d是这次要用到的脱壳指令 先打好指令upx -指令名 文件位置和名称 这样打 脱壳成功 好接下来再丢到ExeinfoPe
实战脱壳360加固 正文共: 1741字 7图 预计阅读时间: 5分钟 1、最近一直在搞工控设备方面的漏洞挖掘,其中遇到一个应用程序进行渗透时遇到请求参数被加密或者签名的情况, 在请求数据被修改后提示异常 , 导致无法有效地进行漏洞挖掘,因此把最近关于脱壳的方法做个记录,逆向反编译应用进行查看 2、通过查壳和上面分析是360加固,经过加固后的apk,通过常规方法反编译无法获取到源码 3、配置环境并启动 if (retval.toInt32() > 0) { /* do something */ } } }); 7、上面利用脚本配置好后进行脱壳如下 8、可以看到下面是我们脱壳的dex文件
实战脱壳360加固 正文共: 1741字 7图 预计阅读时间: 5分钟 1、最近一直在搞工控设备方面的漏洞挖掘,其中遇到一个应用程序进行渗透时遇到请求参数被加密或者签名的情况, 在请求数据被修改后提示异常 , 导致无法有效地进行漏洞挖掘,因此把最近关于脱壳的方法做个记录,逆向反编译应用进行查看 ? 2、通过查壳和上面分析是360加固,经过加固后的apk,通过常规方法反编译无法获取到源码 ? 3、配置环境并启动frida服务 ? 4、端口转发 ? if (retval.toInt32() > 0) { /* do something */ } } }); 7、上面利用脚本配置好后进行脱壳如下 8、可以看到下面是我们脱壳的dex文件 ?
目录简述(脱壳前学习的知识、壳的历史、脱壳方法) 第一代壳 第二代壳 第三代壳 第N代壳 简述Apk文件结构Dex文件结构壳史壳的识别Apk文件结构 ? Dex文件结构 ? 壳史 第一代壳 Dex加密 Dex字符串加密资源加密对抗反编译反调试自定义DexClassLoader 第二代壳 Dex抽取与So加固 对抗第一代壳常见的脱壳法Dex Method代码抽取到外部(通常企业版 )Dex动态加载So加密 第三代壳 Dex动态解密与So混淆 Dex Method代码动态解密So代码膨胀混淆对抗之前出现的所有脱壳法 第四代壳 arm vmp(未来) vmp壳的识别 1.用加固厂商特征 DexHunter-最强大的二代壳脱壳工具 https://github.com/zyq8709/DexHunter DexHunter的工作流程: ? DexHunter的工作原理: ? 静态脱壳机 分析壳so逻辑并还原加密算法 http://www.cnblogs.com/2014asm/p/4924342.html ?
第二步 打开模拟器,准备安装软件: 1.需要脱壳的软件 2.XP 框架.(直接在模拟器应用商店搜索即可) 3.易开发. 4.MT 管理器.(推荐),当然你用别的文件管理器也行. 打开要脱壳的软件.点击悬浮窗 ? 数据就会在: /data/data/应用包名/dump/ 目录下 ? 你在这个文件夹里会没有权限,移动到 SD 卡的根目录 ? 好了完成了! ?
0x00APK加固简介与静态脱壳机的编写思路 1.大家都知道Android中的程序反编译比较简单,辛苦开发出一个APK轻易被人反编译了,所以现在就有很多APK加固的第三方平台,比如爱加密和梆梆加固等。 2.一般的加固保护通常能够提供如下保护:加密、防逆向、防篡改、反调试、反窃取等功能,编写静态脱壳机须要信息有加密后的原始DEX数据、解密算法、解密密钥、要想获得这些信息我们首先要解决的问题是过反调试、动态分析解密流程 0x01壳简单分析 1.整体来看一下加固前APK包和加固后的APK包结构相关变化,如图1所示。 ? 的标志,用16进制工具打开librsprotect.so发现标志被改成了RSP!,将其改成UPX!后再将尝试,出现 图8所示的信息。 ? 图18 2.以上就是简单实现一般APK加固静态脱壳机的编写步骤,由于该加固核心so文件使用UPX默认加壳并未做变形处理,导致so被轻松的静态脱卓,而so模块中的反调试手段比较初级且模块化,可以非常简单的手工
SECURITY_ATTRIBUTES.lpSecurityDescriptor = 0
360加固? fa?! ? 我以为上帝关上了我的门,还会留个窗给我,结果还是无情地把窗给我锁上了 ? 0x01 zjDroid脱壳 刀不锋利马太瘦,你拿什么工具和我斗。 我们已经知道不论是利用什么方法加固apk 若要让软件要正常运行,就必须让程序最终加载原dex文件,这样的话,如果我能dump出内存中已经加载的dex 就可以无视在加载dex前的一大堆解壳操作 而ZjDroid data成员调用的方法就是dump出内存中dex文件的代码,接着程序将data写出到指定目录 遗憾的是,红线出的代码为native层的代码,而native层的代码作者并没有开源 编译,运行 踩坑注意:这个工具的 so文件似乎在5.0以上的安卓系统不起作用,所以我特意刷了一个4.4的安卓再去安装ZjDroid 在手机的Xposed中启用此插件,然后打开需要脱壳的app adb shell dumpsys activity
01 概述 — 由于近期很多朋友问关于Android加壳与脱壳技术,这两天我就对目前主流的脱壳工具和加壳方法做了研究,就对目前的脱壳方法做个汇总和方法记录。 首先目前市面上有很多的安卓脱壳工具,主流的有DexExtractor, ZjDroid, drizzleDumper,其中前面的2个工具与后面的工具略有不同,文章会一一对工具进行分析和尝试脱壳,各个工具的使用都在手机 其实对于加壳的方案很多加固尝试都做了什么防动态调试等等措施,所以整体来讲,Android的加壳技术也提升了不少。 03 总结 通过对3款Android应用的脱壳工具的测试,效果最好的就是drizzleDumper 了,但未测试收费的加壳服务不知道能不能脱壳,后面有机会再测试,脱壳过程主要是研究各个工具的使用,均是利用工具自动化方式来实现 还有其他厂商的加固,如梆梆,腾讯,爱加密等,如果有兴趣也可以一一进行尝试。
文章目录 一、 加固工具准备 二、 生成签名 APK 三、 加固操作 四、 反编译验证加固效果 本博客用于记录下 360 加固保 加固应用流程 ; ( 上一次加固还是一年前 , 过程全忘了 o(╥﹏╥) o ) 一、 加固工具准备 ---- 下载 " 360 加固住手 " 软件 , 下载页面 https://jiagu.360.cn/#/global/download , 下载完成后 , 将下载的 " ---- 在 " 360 加固保 " 的 " 应用加固 " 界面 , 点击 " 添加应用 " , 选择 " D:\jiagu\app-debug-signed.apk " 文件 , 选中应用后 , ; 大约 10 ~ 20 分钟后 , 加固完成 , 会弹出提示 , 点击 " 确定 " 按钮 , 进入到加固后的 apk 安装目录 , 加固后的 apk 文件输出到了 " D:\jiagu\360jiagubao_windows 反编译工具 | apktool | dex2jar | enjarify | jd-gui | jadx ) 博客进行反编译验证 ; 将反编译工具包 , 拷贝到 " D:\jiagu\ " 目录中 ,
文章目录 一、加固厂商在 ART 下使用的两种类加载器 ( InMemoryDexClassLoader | DexClassLoader ) 二、InMemoryDexClassLoader 源码分析 一、加固厂商在 ART 下使用的两种类加载器 ( InMemoryDexClassLoader | DexClassLoader ) ---- 脱壳就是要在加固厂商使用类加载器加载 DEX 文件时 , 从加载过程中 , 从内存中获取 DEX 文件 ; 在 Dalvik 虚拟机的 Android 系统 中 , 即 Android 4.4 及以下的系统 , 加固厂商 使用 DexClassLoader 加载 DEX 字节码文件 ; 在 ART 虚拟机的 Android 系统 中 , 即 Android 5.0 及以上的系统 , 加固厂商使用 InMemoryDexClassLoader 或者
现在市面上的加固产品的还是比较多的,并且各个加固技术产品都有其各自优缺点,但是加固产品的所采用技术去有很多共性的地方。下面就对加固和脱壳对抗方案做些梳理总结。 第一代加固的出现也同时出现各种对加固技术的攻破。从而出现了各种对抗加固的脱壳方法。 内存 dump脱壳法 通过工具:IDA Pro + dumpDEX 1、通过/proc/%d/maps获取内存映射 2、在内存中查找关键字 dex.035或dex.036 3、手动dump查找到的数据。 内存dump脱壳法 通过工具:IDA Pro + dumpDEX 1、通过/proc/%d/maps获取内存映射 2、在内存中查找关键字 dex.035或dex.036 3、手动dump查找到的数据。 自定义系统和定制的android设备方法: 1、采用定制的android的rom,可以有效对抗市场中所有的加密壳、类抽取类型的壳;相比开源的脱壳工具,大体都是基于hook框架,例如frida、Xposed
文章目录 前言 一、DexPrepare.cpp 中 rewriteDex() 方法分析 二、DvmDex.cpp 中 dvmDexFileOpenPartial() 方法分析 ( 脱壳点 ) 三、DexFile.cpp 中 dexFileParse() 方法分析 ( 脱壳点 ) 前言 ---- 上一篇博客 【Android 逆向】整体加固脱壳 ( DEX 优化流程分析 | DexPrepare.cpp 中 dvmContinueOptimizati doVerify, bool doOpt, DexClassLookup** ppClassLookup, DvmDex** ppDvmDex) dvmDexFileOpenPartial 函数是 脱壳点 函数 , 通过该函数定位脱壳点 , 然后进行脱壳操作 ; /* * 既然可以直接读取DEX文件,那么创建一个DexFile结构 * 为了它。 = 0; bail: return result; } 源码路径 : /dalvik/vm/DvmDex.cpp 三、DexFile.cpp 中 dexFileParse() 方法分析 ( 脱壳点
操作时机:项目打包时 加固: 针对apk,加固是多维度的安全防护方案,包括反破解、反逆向、防篡改等,可以防止应用被各类常见破解工具逆向,安全性要远大于单纯的代码混淆。 生成加固后的apk文件 6. 对加固后的apk文件进行签名,apk加固完成。 原理分析: 1.为什么要对原始dex进行加密,同时用脱壳dex文件替换原始dex文件? 用脱壳dex替换原始dex文件之后,用上面的反编译工具反编译apk文件,只能看到脱壳程序的class文件,看不到apk本身的class文件。 加固后的apk启动之后,脱壳dex文件会对加密后的dex文件进行解密,然后机遇dexclassload动态加载解密后的dex文件。从用户的角度,加固前后App的功能和体验基本是一样的。 加固工具: 1、腾讯加固 2、360加固
力争做到全网最干货公众号博主的波哥,就来跟大家聊聊这个安全加固。 有些新手可能对于linux系统的安全加固还是比较陌生加哪里?怎么加?还比较模糊。 其实系统的安全加固概念由来已久,主要是对几个核心的文件以及用户权限,用户密码的策略及生命周期有强制要求,当然有些单位还有很多特殊的要求,比如必须开启内核防火墙。严格的出口入口规则管制等等。 那么今天波哥就给大家出一版通用行的安全加固一键脚本。 当然以该脚本为基础波哥会丰富更多的功能然后集成到我们的kkitDeploy1.0和kkitDeploy2.0中,以便全覆盖系统安全加固全部内容选项。
小程序安全针对小程序不同业务场景提供包括小程序安全加固、小程序安全扫描、小程序渗透测试功能,通过分析仿冒程序,挖掘风险漏洞、保护核心代码等方法保护小程序业务安全、数据安全,降低客户业务风险和资金损失。
扫码关注腾讯云开发者
领取腾讯云代金券