Android系统安全和逆向分析研究
文章平均质量分 93
专注于Android系统安全和逆向分析相关的研究和学习,譬如:Android进程的so注入、Android进程的Hook、Android源码的编译和修改、Android内核的提取和分析、Android系统调用的Hook、Android动态调试和逆向分析等等,不限于此。
Fly20141201
做真实的自己,不为别人而活;做自己喜欢的事,努力、踏实~
展开
-
Android插件化原理解析——Hook机制之动态代理
提示:Java的动态代理非常有用,特别实在Android逆向过程中非常有用,比较典型的两个应用实例就是:1.xposed框架利用Java的动态代理Hook实现对Https请求信息的打印替代Https抓包的操作。2.利用Java的动态代理Hook实现对Android应用的签名进行破解。总之呢,Java的动态代理Hook真的非常有用,本想自己写博客,后面看到epic框架的作者写这篇文章非常好就转载作为记录,解释和版权归原作者,只做学习记录使用,想要获取更多的知识去作者的博客学习。使用代理机.转载 2020-06-23 18:13:09 · 793 阅读 · 2 评论 -
Android木马病毒com.schemedroid的分析报告
某安全公司移动病毒分析报告的面试题目,该病毒样本的代码量比较大,最大的分析障碍是该病毒样本的类名称和类方法名称以及类成员变量的名称被混淆为无法辨认的特殊字符,每个被分析的类中所有的字符串都被加密处理了并且每个类的加密算法还不是一样的,人肉还原出被加密的字符串是很不现实的,该样本大约有100多个类,需要处理的加密字符串的解密高达几千个之多,有兴趣和能拿到样本的同学可以挑战一下自己,暂不提供样本。经...原创 2018-08-03 09:36:15 · 6478 阅读 · 7 评论 -
Xposed框架中XSharePreference的使用
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/81194406在Xposed框架的模块编写中,通常希望我们自己写的Android界面控制部分能够对Xposde框架的模块进行配置,也就说在当前Android应用中写的SharePreference文件,在其...原创 2018-07-25 22:47:47 · 7056 阅读 · 3 评论 -
开启Android应用调试选项的工具XDebug的介绍
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/81187769最近这段时间比较郁闷,就不分享和学习比较复杂的Android逆向技巧和工具了,每天进步一点就好。这里介绍一下,作者deskid编写的开启Android应用调试选项的工具XDebug,该工具也...原创 2018-07-24 19:28:31 · 1752 阅读 · 0 评论 -
Android Linker 与 SO 加壳技术
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57e3a...作者:王赛1. 前言Android 系统安全愈发重要,像传统pc安全的可执行文件加固一样,应用加固是Android系统安全中非常重要的一环。目前Android 应用加固可以分为dex加固和Native加固,Native 加固的保护对象为 Nativ...转载 2018-07-24 15:58:45 · 1318 阅读 · 3 评论 -
Android Linker 与 SO 加壳技术
1. 前言Android 系统安全愈发重要,像传统pc安全的可执行文件加固一样,应用加固是Android系统安全中非常重要的一环。目前Android 应用加固可以分为dex加固和Native加固,Native 加固的保护对象为 Native 层的 SO 文件,使用加壳、反调试、混淆、VM 等手段增加SO文件的反编译难度。目前最主流的 SO 文件保护方案还是加壳技术, 在SO文件加壳转载 2016-11-15 10:46:58 · 1501 阅读 · 0 评论 -
Android apk快速定位、灰色按钮克星--DroidSword
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80994434在进行Android应用程序的逆向分析时,经常需要对Android应用程序的按钮事件、Activity界面等类的代码进行定位分析,传统的代码定位方法就是进行按钮或者Activity界面等显示的 字符串信息 进行全局的搜索,然后找他们的id或者类进行代码的定位,比较繁琐...原创 2018-07-11 10:32:30 · 6132 阅读 · 5 评论 -
Android系统加载Apk文件的时机和流程分析(1)--Android 4.4.4 r1的源码
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80982869Android系统在启动时安装应用程序的过程,这些应用程序安装好之后,还需要有一个Home应用程序来负责把它们在桌面上展示出来,在Android系统中,这个默认的Home应用程序就是Lau...原创 2018-07-10 22:02:02 · 2650 阅读 · 0 评论 -
开启Android Apk调试与备份选项的Xposed模块的编写
在进行Android应用程序逆向分析的时候,经常需要进行Android应用程序的动态调试,一般情况下基于Android应用程序的安全性考虑,发布版的Android应用程序都会关闭它的调试选项,因此只有开启该Android应用程序的调试选项,才能在Android应用程序的Activity界面显示之前(即Application类的attach函数和onCreate函数执行之前)使Android应用程序...原创 2018-07-09 11:12:48 · 2909 阅读 · 2 评论 -
基于Xposed Hook实现的Android App的协议算法分析小工具-CryptoFucker
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80962121在进行Android应用的网络协议分析的时候,不可避免涉及到网络传输数据的加密算法的分析,这里分享一下作者无名侠写的一个小工具 CryptoFucker,看雪论坛的原帖子《[推荐]【Tools】CryptoFucker》.CryptoFucker工具的github地址...原创 2018-07-08 20:41:35 · 7022 阅读 · 0 评论 -
基于Frida框架打造Art模式下的脱壳工具(OpenMemory)的原理分析
作者dstmath在看雪论坛公布一个Android的art模式下基于frida框架的脱壳脚本,详情见文章《基于frida的脱壳工具》的介绍,作者dstmath公布的frida脚本代码见github地址:https://github.com/dstmath/frida-unpack,脱壳原理比较简单,和我前面的博客《ART模式下基于Xposed Hook开发脱壳工具》中提到的作者的脱壳的思路是一致,...原创 2018-07-08 12:11:59 · 9671 阅读 · 16 评论 -
查找和定位Android应用的按钮点击事件的代码位置基于Xposed Hook实现
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80956455在进行Android程序的逆向分析的时候,经常需要通过Android应用程序的界面UI来定位代码的位置,比较常见的例子就是分析Android应用的网络协议时,用户点击登录按钮,实现客户端程序的登录,将用户的账号信息发送给服务器端进行验证,那么我们分析这个网络数据传输的...原创 2018-07-08 07:31:28 · 6894 阅读 · 8 评论 -
Xposed框架Hook Android应用的所有类方法打印Log日志
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80954759在进行Android程序的逆向分析的时候,经常需要Android程序的静态分析和动态调试的结合,尤其是对一些加固后的Android类方法被调用的确认,需要Hook java类方法打印java类方法的调用堆栈。有幸在网上看到了这篇文章《XPosed暴力列举Pac...原创 2018-07-07 21:27:38 · 20692 阅读 · 12 评论 -
基于frida框架Hook native中的函数(1)
0x01 前言关于android的hook以前一直用的xposed来hook java层的函数,对于so层则利用adbi,但是不知道为什么adbi给我的体验并不是很好,刚好前段时间了解到frida框架支持android、ios、linux、windows、macos,而且在android设备上可以同时hook java、native十分方便,最重要的一点是不需要重启手机,于是就研究了一下0x02 ...转载 2018-06-24 09:06:09 · 14201 阅读 · 6 评论 -
DexHunter在Dalvik虚拟机模式下的脱壳原理分析
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78494671在前面的博客《DexHunter的原理分析和使用说明(一)》、《DexHunter的原理分析和使用说明(二) 》中已经将DexHunter工具的原理和使用需要注意的地方已经学习了一下,前面的博客中只讨论了DexHunter脱壳工具在Dalvik虚拟机模式下的脱壳原理和使...原创 2018-04-25 21:57:49 · 2001 阅读 · 10 评论 -
GNU C++的符号改编机制介绍(函数的名称粉碎格式解析)
转载:http://blog.csdn.net/roland_sun/article/details/43233565众所周知,强大的C++相较于C增添了许多功能。这其中就包括类、命名空间和重载这些特性。对于类来说,不同类中可以定义名字相同的函数和变量,彼此不会相互干扰。命名空间可以保证在各个不同名字空间内的类、函数和变量名字不会互相影响。而重载可以保证即使在同一个命名空间内的同一个类中,函数名字...转载 2018-03-06 09:13:59 · 1170 阅读 · 1 评论 -
如何在C或C++代码中嵌入ARM汇编代码
转载自:http://blog.csdn.net/roland_sun/article/details/42921131 大家知道,用C或者C++等高级语言编写的程序,会被编译器编译成最终的机器指令。这中间,编译器会对代码自动进行优化。但是,这种优化往往不一定非常高效。所以,出于性能优化的目的,对...转载 2018-03-06 09:08:41 · 1519 阅读 · 0 评论 -
利用Xposed Hook打印Java函数调用堆栈信息的几种方法
本文博客链接:http://blog.csdn.net/QQ1084283172/article/details/79378374在进行Android逆向分析的时候,经常需要进行动态调试栈回溯,查看Java函数的调用流程,Android的smali动态调试又不是很方便,因此使用Android的Java Hook的方法,打印Java函数调用堆栈信息辅助静态分析。package com.xposedd...原创 2018-02-26 16:21:39 · 11241 阅读 · 0 评论 -
DexHunter在ART虚拟机模式下的脱壳原理分析
本文博客地址: http://blog.csdn.net/qq1084283172/article/details/78494620DexHunter脱壳工具在Dalvik虚拟机模式下的脱壳原理分析,在前面的博客中已经提到了,但是自我感觉分析和理解的还不够透彻,后面又对DexHunter脱壳工具的源码再阅读了几遍,总算是把DexHunter脱壳工具在Dalvik虚拟机模式下和ART虚拟原创 2018-01-26 14:12:31 · 2796 阅读 · 0 评论 -
Android so库文件的区节section修复代码分析
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78818917一、Android so库文件的节表secion修复方案整理 1. 简单粗暴的so加解密实现 https://bbs.pediy.com/thread-191649.htm原创 2017-12-16 21:31:16 · 7389 阅读 · 1 评论 -
ART模式下基于dex2oat脱壳的原理分析
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78513483一般情况下,Android Dex文件在加载到内存之前需要先对dex文件进行优化处理(如果Android Dex文件已经优化过,则不需要进行优化处理操作,后面进行加载到内存即可),在Dalvik虚拟机模式下,Android dex文件经过dex2oat进程优原创 2017-11-12 18:16:23 · 6181 阅读 · 4 评论 -
阿里早期Android加固代码的实现分析
看雪上有作者(寒号鸟二代)将早期阿里移动的Android加固进行了逆向分析,得到了能够运行成功的NDK代码,主要是基于第2界阿里移动破解大赛的apk逆向分析出来的,文章的原地址《阿里早期加固代码还原4.4-6.0》。周末有空仔细阅读和分析了一下作者寒号鸟二代给出的逆向还原的代码,发现阿里移动的Android加固在dalvik虚拟机模式下dex文件的加载方案和看雪上的一些作者给出的方案一样,具体可以原创 2017-11-02 10:27:29 · 4036 阅读 · 9 评论 -
Dalvik模式下在Android so库文件.init段、.init_array段构造函数上下断点
在前面的博客《在Android so文件的.init、.init_array上和JNI_OnLoad处下断点》中,已经分享了Dalvik虚拟机模式下如何在Android so库文件的.init段、.init_array段构造函数上下断点的方法,也是网上流传比较多的常规方法。尽管那些方法也能实现在Android so库文件.init段、.init_array段构造函数上下断点,但是总体来说还是感原创 2017-10-15 22:08:45 · 1538 阅读 · 1 评论 -
手动绕过百度加固Debug.isDebuggerConnected反调试的方法
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/782375711.调用Debug.isDebuggerConnected函数这种反调试的Android加固比较少,主要是因为Debug.isDebuggerConnected这种方法的反调试作用不大,过掉也比较容易。百度的Android应用加固使用了调用Debug.isD原创 2017-10-14 22:29:55 · 4503 阅读 · 0 评论 -
Dalvik模式下System.loadLibrary函数的执行流程分析
Android逆向分析的过程中免不了碰到Android so被加固的情况,要对被加固的Android so进行脱壳处理,就需要先了解Android so的加载流程,进而了解Android so的加固原理。学习Android so加固的思路和学习Android dex文件加固的思路是类似的,下面就以Android so加固的源头System.loadLibrary函数为入口点进行学习,这里的源码分析原创 2017-10-12 10:38:42 · 1513 阅读 · 0 评论 -
ART模式下基于Xposed Hook开发脱壳工具
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78092365Dalvik模式下的Android加固技术已经很成熟了,Dalvik虚拟机模式下的Android加固技术也在不断的发展和加强,鉴于Art虚拟机比Dalvik虚拟机的设计更复杂,Art虚拟机模式下兼容性更严格,一些Dalvik虚拟机模式下的Android加固技术并不能马上...原创 2017-09-26 10:20:28 · 5010 阅读 · 7 评论 -
Android so加固的简单脱壳
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78077603Android应用的so库文件的加固一直存在,也比较常见,特地花时间整理了一下Android so库文件加固方面的知识。本篇文章主要是对看雪论坛《简单的so脱壳器》这篇文章的思路和代码的分析,很久之前就阅读过这篇文章但是一直没有时间来详细分析它的代码,最近比原创 2017-09-24 16:24:21 · 6234 阅读 · 1 评论 -
Dalvik模式下基于Android运行时类加载的函数dexFindClass脱壳
前段时间在看雪论坛发现了《发现一个安卓万能脱壳方法》这篇文章,文章说的很简略,其实原理很简单也很有意思,说白了还是dalvik虚拟机模式下基于Android运行时的内存dex文件的dump,对一些免费版本的加固壳还是有效果的,dalvik模式下二代之后的加固壳就不行了。文章脱壳的原理涉及到dalvik模式下dex文件的类查找和加载的过程,下图是dalvik模式下dex文件的类查找和加载的流程示意图原创 2017-09-16 14:05:08 · 4820 阅读 · 9 评论 -
基于dalvik模式下的Xposed Hook开发的某加固脱壳工具
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/77966109这段时间好好的学习了一下Android加固相关的知识和流程也大致把Android加固的一些思路理清楚了,不巧在博客上看到了这篇文章《某加固使用xposed脱壳》感觉还不错,正好有时间可以学习一下这款基于Xposed Hook框架开发的某加固脱壳工具,原作原创 2017-09-13 17:09:56 · 5537 阅读 · 0 评论 -
Android平台dalvik模式下java Hook框架ddi的分析(2)--dex文件的注入和调用
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/77942585前面的博客《Android平台dalvik模式下java Hook框架 ddi 的分析(1)》中,已经分析了dalvik模式下 ddi 框架Hook java方法的原理和流程,这里来学习一下ddi框架代码中涉及到的 dex文件的注入和调用。将一个Android的原创 2017-09-12 16:10:01 · 1700 阅读 · 0 评论 -
Android平台dalvik模式下java Hook框架ddi的分析(1)
一、前 言在前面的博客中已经学习了作者crmulliner编写的,针对Android系统的跨进程 inline Hook的实现即Android native Hook框架adbi的实现。Android Hook框架adbi主要是针对的Android的native函数进行inline Hook操作,那么如果需要对Android系统中Java编写的函数进行Hook,又该怎么操作呢?作者crmulline原创 2017-07-23 18:25:22 · 1945 阅读 · 0 评论 -
Android Hook框架adbi的分析(3)---编译和inline Hook实践
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/75200800一、序言在前面的博客中,已经分析过了Android Hook框架adbi源码的具体实现,Android Hook框架adbi的实现主要分为两部分,一部分是root权限下的Android跨进程的so注入,一部分是基于Android系统的inline Hook。原创 2017-07-16 23:30:15 · 3511 阅读 · 1 评论 -
Android Dex文件格式解析
Dex文件是Android虚拟机下的可执行文件,包含了应用程序所用到所有操作指令和运行时数据。在程序编译过程中,java源文件先被编译成class文件,然后通过dx工具将多个class文件整合为一个dex文件。这样的文件结构使得各个类能够共享数据,充分减少了存储空间,提升了运行效率。Java源文件生成Dex文件的映射关系。dex文件的结构如下图:我们可以在a转载 2016-12-12 17:11:28 · 6568 阅读 · 2 评论 -
Android Hook框架adbi的分析(2)--- inline Hook的实现
一、 Android Hook框架adbi源码中inline Hook实现部分的代码结构 Android Hook框架adbi源码中inline Hook部分的实现代码结构示意图如下所示,hijack代码部分是前面的博客中提到的root下Android跨进程注入so的注入工具,instruments\base代码部分为inline Hook的操作实现,instruments\example代码部原创 2017-07-09 12:16:04 · 5641 阅读 · 0 评论 -
Android Apk加固的初步实现思路(dex整体加固)
一、前 言Android Apk加固的发展已经有一段时间了,相对来说本篇博客要记录的Android加壳的实现思路是4年的东西了,已经被老鸟玩烂了,Android加固的安全厂商也不会采用这么粗犷的方式来进行Android Apk的加固处理。早期Android加固聚焦的两个点主要是在DexClassLoader和Android类加载这两条代码执行流程上去下功夫,后期Android加固会在Android动原创 2017-07-05 15:29:50 · 6256 阅读 · 6 评论 -
Android Hook框架adbi的分析(1)---注入工具hijack
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/74055505一、Android Hook框架adbi的基本介绍adbi是Android平台的inline Hook框架,和前面博客中提到的libinject和poison注入工具原理差不多,要说具体的相似性的话,poison注入工具可以替换此处adbi的hijack注入工具实现so的原创 2017-07-01 21:57:53 · 5084 阅读 · 0 评论 -
Android APK程序的smali动态调试
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/71250622一、Apktool的下载和安装Apktool是Android逆向分析的基础工具,在进行Android APK的smali动态调试的时候会使用到它。有关Apktool工具的下载、安装、使用以及源码的编译可以参考Apktool工具的官网:https://ib原创 2017-05-07 01:32:59 · 6789 阅读 · 4 评论 -
Hook android系统调用的实践
一、环境条件Ubuntukylin 14.04.5 x64bitAndroid 4.4.4Nexus 5二、Android内核源码的下载执行下面的命令,获取 Nexus 5手机 设备使用的芯片即获取Nexus 5手机设备内核源码的版本信息。$ adb shell # 查看移动设备使用的芯片信息 $ ls /dev/block/platfor原创 2017-05-01 19:00:43 · 6553 阅读 · 3 评论 -
Android内核的编译和调试
一、Android内核源码的选择Android手机设备内核源码的调试需要外部硬件设备的支持,调试步骤比较麻烦。相对来说,Android模拟器内核源码的调试就比较简单了,这里以Android模拟器内核源码的调试为例。首先创建一个Android API 19(Android 4.4.x版本)的Android模拟器,然后运行该Android模拟器。在 ubuntu 14.04.5系统或者 Win原创 2017-04-28 11:02:27 · 15961 阅读 · 6 评论 -
Android Studio导入Android 4.4.4r1的源码
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/70339471一、环境配置1.ubuntu 14.04.52.jdk-6u45-linux-x64.bin3.Android Studio4.Android 4.4.4r1二、JDK的配置根据google官方文档 https://source.an原创 2017-04-23 11:44:32 · 2712 阅读 · 0 评论