CVE-2020-0391 Android9和Android10系统应用广播保护机制失效漏洞
《(Un)protected Broadcasts in Android 9 and 10》 https://www.blackhat.com/asia-21/briefings/schedule/index.html#unprotected-broadcasts-in-android–and–22378 http://i.blackhat.com/a...
《(Un)protected Broadcasts in Android 9 and 10》 https://www.blackhat.com/asia-21/briefings/schedule/index.html#unprotected-broadcasts-in-android–and–22378 http://i.blackhat.com/a...
这个漏洞是Flanker发现的,一个逻辑层的漏洞,却可以进行提权,分析完后觉得其实不困难,自己是可以发现的 三星有一个叫SamsungSMT这么个应用,具体是干啥的我不是很清楚 它有一个导出组件com.samsung.SMT.SamsungTTSService,其onCreate方法里动态注册了一个BroadcastReceiver,我们知道这默认是导出的 ...
之前的文章中,我们实现了在Native层中加载Dex文件,但是有个问题在于,解密后的Dex文件有那么一小段时间是写出到文件里的 写出的Dex文件通过调用Native层的函数进行加载,那么所调用的函数也是要先读取,再接着调用某函数进行Dex的加载,所以我们可以直接把解密后的Dex数据存在内存中,直接调用libdvm.so中的相关函数进行Dex加载即可 先来看D...
之前我们把壳从Java层转到了Native层,但是我们依旧是通过调用Java层的loadDex()方法来加载Dex文件 jclass clazz_DexFile = env->FindClass("dalvik/system/DexFile"); if (clazz_DexFile != nullptr) { LOGI("---> Find ...
前面几篇文章分享了如何在Java层对APK进行加壳,然而通过对现在市场上的第三方壳的分析,没有一家是纯粹使用Java代码实现壳的,即使是第一代壳,因为Java代码的特性,其反编译后的伪代码几乎就是源码,非常容易被逆向分析爱好者们分析出加壳逻辑,所以,从第一代壳开始,所有的壳都是以C和C++来实现壳代码,这样不仅可以实现很多Java实现不了的功能,还能增大脱壳难度...
原理就是在Linux系统中,父进程死亡,子进程会被init进程接管,并不会直接死亡,我们只需要fork一个子进程循环检测本应用文件夹是否存在或者使用Inotify机制检测应用卸载时发生的文件删除操作再或者监控日志等可以明显判断自身被卸载的特征即可 我们先来看如何使用Inotify机制来监控应用文件被删除的操作,先fork一个子进程,在子进程里初始化一个inot...
一种比较常规的反静态分析的方法,大概可以分为修改数据和修改指令两部分 第一步就是定位Dex在内存中的位置,所以我们来实现定位到关键数据的过程 最近Android Studio升级到了3.0,对NDK开发的支持做的还不错,直接在入口添加C++支持即可配置好NDK开发环境 我们先实现一个JNI_OnLoad,来实现自动执行而不是在Java层调用篡改Dex数据或...
到目前为止,我们实现的加壳方案是可以再进一步优化的,针对这点,咱们来聊一聊其中的一些不足之处:我们直接将整个APK文件加密后储存在assets文件夹下,然后其中的资源又拷贝了一份在壳工程中,这就造成了整个加壳后的APK文件非常大,而且我们在加载APK的时候,其实只对其中的Dex进行了加载,并没有加载其中的资源,这一点是因为我们已经把其中的资源都拷贝到壳工程里了,...
一般情况下,一个正常的APP都会有一个Application类,少有APP没有这个,那么我们加壳的时候就要处理这个Application 我们前面直接加上了自己的ProtectApplication,因为没有Application,所以直接就调用了入口的MainActivity,如果待加壳的应用存在Application,我们在加壳的时候,就需要先保存这个Ap...
我们在第一篇文章中简单的跑了一个很简单的壳,但是那种加密方式相当的挫,这里演示一种比较贴近现实的一种Demo:在开发完整个工程后,不使用新的APK去加载,而是提取Dex,加密后存到assets文件夹,资源文件等都不进行处理,然后重新写一个ProtectApplication入口,在这个入口进行原始Dex的解密加载 这样就解决掉了不能加载资源的问题 再进一步说...
本系列文章为个人学习知识总结笔记,文中所总结到的内容均会标明出处,本文会详解JiaZhiJun大牛在2013年发表的系列文章《Android APK加壳技术方案》,然后在此基础上进行靠近现代壳的扩展,比如将壳代码写进Native层,加入反调试,对核心代码进行混淆,再比如进行类抽取处理,SO文件区段破坏,自定义Loader等技术,希望和正在学习安卓加固技术的同学进...
0x00 前言 在DexClassLoader和PathClassLoader(三)中,分析到了最核心的生成ODex文件部分,在这个过程中,有几个比较关键的具体实现函数没有分析 rewriteDex(((u1*) mapAddr) + dexOffset, dexLength, doVerify, doOpt, &pClassLookup, NUL...
0x00 前言 在DexClassLoader和PathClassLoader(2)中,将加载Dex文件前期的准备工作详细的分析了一遍,包括几个很关键的结构体 篇幅问题,留了几个方法,从命名来看,明显的看出来这是关键的几个方法 dvmOpenCachedDexFile(fileName, cachedName, modTime, adler32, is...
0x00 前言 在DexClassLoader和PathClassLoader(一)中,我用了几个小例子介绍了一下DexClassLoader的用法,并给出了完整的代码,有兴趣的同学可以跟着玩一下,也可以根据代码进行扩展 在介绍完使用方法后,简单的介绍了下整个加载流程,篇幅问题只是将大概的过程给梳理了一下,留了许多问题,虽然这些问题都没有明说,DexFile...
0x00 前言 动态加载的一点点小总结 0x01 DexClassLoader 首先是制作一个Dex,然后里面写几个简单的方法用于调用测试 package com.wnagzihxa1n.plugin; /** * Created by wnagzihxa1n on 2017/3/25 0025. */ public class Plugin { ...
0x00 前言 本文目的是讲解Android平台的Hook技术,包括且不仅限于Xposed框架,需要各位同学有一定的Android开发能力 Xposed是Android平台一个非常著名的Hook框架,很多玩机的同学都比较喜欢,但是也有部分同学是没有玩过这些东西的,所以我会从代码层面来详细的讲解Hook技术以及实现 先来科普一下Hook的概念:Hook是钩子的...