非代码抽取的dex加固脱壳

常见的非代码抽取的dex加固,可以通过修改或者hook源码中的dex解析函数拿到目标dex完成脱壳。该dex解析函数为DexFile* dexFileParse(const u1* data, size_t length, int flags),位于src4.4.4_r1/dalvik/libdex/DexFile.cpp文件。

1.修改源码,编译系统,实现脱壳,使用该方法的代表工具--“DexExtractor”。对其的介绍和使用教程见一大牛博客:

http://www.wjdiankong.cn/apk%E8%84%B1%E5%A3%B3%E5%9C%A3%E6%88%98%E4%B9%8B-%E5%A6%82%E4%BD%95%E8%84%B1%E6%8E%89%E6%A2%86%E6%A2%86%E5%8A%A0%E5%9B%BA%E7%9A%84%E4%BF%9D%E6%8A%A4%E5%A3%B3/

2.利用Cydia Substrate 框架hook dexFileParse函数,完成脱壳。以下为详细的步骤:

http://wps2015.org/drops/drops/Android.Hook%E6%A1%86%E6%9E%B6Cydia%E7%AF%87(%E8%84%B1%E5%A3%B3%E6%9C%BA%E5%88%B6%E4%BD%9C).html

时间: 2024-11-17 19:38:31

非代码抽取的dex加固脱壳的相关文章

Java Web项目中的经典代码抽取

前言: 众所周知的,项目开发中做得最多的无非就是增删查改(CRUD)操作.自从国内Web项目开发渐渐盛行SSH框架之后,其开发开发流程也变得更加灵活:本文就项目开发中的业务层代码作个简单的抽取,供业内朋友参考. 代码抽取原理图如下: 这个图主要展示开发中的2个业务,账号(Account)管理跟类别(Category)管理,具体代码实现比较简单就不附上了.从上面的UML图中我们只需要抽象出BaseService接口并且实现BaseServiceImpl类,其他业务的实现一概继承BaseServic

9.代码抽取(adapter)

1  抽取Adapter 共性的方法 2  把getView方法里 和holder相关的逻辑 摘取到Holder代码中 3  把Holder 相关的代码 抽取到BaseHolder中 4  把adapter 中getVIew 方法 抽取到了DefaultAdpater中, 其中每个子类getView方法中holder不太一样,所以定义了抽象方法getHolder 要求子类去实现holder BaseHolder 所有holder的基类 DefaultAdapter 所有adapter 的基类 B

Dao接口和实现类以及Service接口和实现类代码抽取

紧接着上次无线点餐项目的文档,我们进行Dao层抽取. 6.Dao接口以及实现类代码抽取 对于BoardDao和CuisineDao的处理接口和实现类,除了定义自己的特有方法外,其他基本功能的CRUD方法都一样,只是操作的实体对象不一样.为了代码的复用,简化代码,我们可以将公共的CRUD方法提取到BaseDao中,只需要实现接口即可. 同理, 不同的实现类,实现CRUD相同的业务逻辑的时, 除了操作的实体不同,其他都是相同的, 所以我们可以把相同的业务逻辑实现,抽取出来,放到BaseSericeI

github上好用的非代码工具

1. github上好用的非代码工具 1.1. 面试题地址 地址 1.2. 书籍 这里 1.3. 百度网盘不限速下载器 这里 原文地址:https://www.cnblogs.com/sky-chen/p/11219783.html

Thymeleaf静态资源引入方式及公共页面代码抽取

静态资源引入 Thymeleaf模板引擎url问题,要用如下的方式写,确保在任何情况下都能访问到 <!-- Bootstrap core CSS --> <link href="bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"> <!-- 引用webjars的方式引入静态资源 --> <link th:href="@{/webjars/bootstrap/

某梆企业版加固脱壳及抽代码还原方法

某梆加固企业版还是会调用系统的dvmDexFileOpenPartial 接口,因此可以这里添加hook 51df6008-52cd50__unpackedDex.dmp即是dump出来的dex,拖到jeb里,可以看到这些函数都是空的 汇编显示,大片的指令都为nop,这些指令都被抽掉了,执行之前才会还原. 它hook了dvmResolveClass还动态加解密指令 可以看到,它执行了两次___Decrypt_dvmResolveClass,解密完等原始dvmResolveClass执行完后,还会

安卓 dex 通用脱壳技术研究(四)

/*     当第一个类执行到此函数时,我们在dvmDefineClass执行之前,也就是第一个类加载之前     注入我们的dump代码:即DumpClass()函数 */ static void Dalvik_dalvik_system_DexFile_defineClassNative(const u4* args,     JValue* pResult) {     StringObject* nameObj = (StringObject*) args[0];     Object*

安卓 dex 通用脱壳技术研究(一)

注:以下4篇博文中,部分图片引用自DexHunter作者zyqqyz在slide.pptx中的图片,版本归原作者所有: 0x01 背景介绍 安卓 APP 的保护一般分为下列几个方面: JAVA/C代码混淆 dex文件加壳 .so文件加壳 反动态调试技术 其中混淆和加壳是为了防止对应用的静态分析:代码混淆会增加攻击者的时间成本, 但并不能从根本上解决应用被逆向的问题:而加壳技术一旦被破解,其优势更是荡然无存:反调试用来对抗对APP的动态分析: 昨天看雪zyqqyz同学发了一个Android应用程序

安卓 dex 通用脱壳技术研究(二)

0x03 DexHunter代码分析 DexHunter 实现中,只需要修改一处文件:dalvik\vm\native\dalvik_system_DexFile.cpp 下面是BeyondCompare比对: 首先看一下DexHunter的设计原理: APP 启动时,通过freature string定位dex在内存中位置,并读取classdef块之前的内存为part1,读取classdef之后的内存为data.遍历class_def_item结构,生成文件classdef,并通过code_i