Android逆向学习
文章平均质量分 87
Fly20141201
做真实的自己,不为别人而活;做自己喜欢的事,努力、踏实~
展开
-
Android系统自带的android.util.Base64的实现源码
由于Android逆向还原的时候,经常需要用到android.util.Base64的代码,因此从Android 4.4.4的 系统里抠出来进行备份,懒得用其他的代码进行修改替换了。/* * Copyright (C) 2010 The Android Open Source Project * * Licensed under the Apache License, Version...原创 2019-09-14 10:19:52 · 1547 阅读 · 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 · 11255 阅读 · 0 评论 -
DexHunter在ART虚拟机模式下的脱壳原理分析
本文博客地址: http://blog.csdn.net/qq1084283172/article/details/78494620DexHunter脱壳工具在Dalvik虚拟机模式下的脱壳原理分析,在前面的博客中已经提到了,但是自我感觉分析和理解的还不够透彻,后面又对DexHunter脱壳工具的源码再阅读了几遍,总算是把DexHunter脱壳工具在Dalvik虚拟机模式下和ART虚拟原创 2018-01-26 14:12:31 · 2797 阅读 · 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 · 7398 阅读 · 1 评论 -
DexHunter在Dalvik虚拟机模式下的脱壳原理分析
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78494671在前面的博客《DexHunter的原理分析和使用说明(一)》、《DexHunter的原理分析和使用说明(二) 》中已经将DexHunter工具的原理和使用需要注意的地方已经学习了一下,前面的博客中只讨论了DexHunter脱壳工具在Dalvik虚拟机模式下的脱壳原理和使...原创 2018-04-25 21:57:49 · 2006 阅读 · 10 评论 -
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 · 6187 阅读 · 4 评论 -
阿里早期Android加固代码的实现分析
看雪上有作者(寒号鸟二代)将早期阿里移动的Android加固进行了逆向分析,得到了能够运行成功的NDK代码,主要是基于第2界阿里移动破解大赛的apk逆向分析出来的,文章的原地址《阿里早期加固代码还原4.4-6.0》。周末有空仔细阅读和分析了一下作者寒号鸟二代给出的逆向还原的代码,发现阿里移动的Android加固在dalvik虚拟机模式下dex文件的加载方案和看雪上的一些作者给出的方案一样,具体可以原创 2017-11-02 10:27:29 · 4039 阅读 · 9 评论 -
DexHunter的原理分析和使用说明(二)
前面的博文《Android通用脱壳工具DexHunter的原理分析和使用说明(一)》中已经记录了很多关于DexHunter脱壳工具的脱壳原理和思考的思路问题并没有涉及到DexHunter脱壳工具的代码的分析,今天我就代码分析、理解和DexHunter脱壳工具的使用以及需要注意的地方进行博文的记录。原创 2016-12-18 22:10:24 · 8035 阅读 · 24 评论 -
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 · 4504 阅读 · 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 · 1515 阅读 · 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 · 6791 阅读 · 4 评论 -
adb、adb shell am、adb shell pm命令的详细使用说明
1.在命令行终端执行下面的命令:adb >adb.txt 2>&1Android Debug Bridge version 1.0.31 -a - directs adb to listen on all interfaces for a connection -d -原创 2017-03-20 22:37:13 · 10806 阅读 · 2 评论 -
如何在C或C++代码中嵌入ARM汇编代码
转载自:http://blog.csdn.net/roland_sun/article/details/42921131 大家知道,用C或者C++等高级语言编写的程序,会被编译器编译成最终的机器指令。这中间,编译器会对代码自动进行优化。但是,这种优化往往不一定非常高效。所以,出于性能优化的目的,对...转载 2018-03-06 09:08:41 · 1523 阅读 · 0 评论 -
GNU C++的符号改编机制介绍(函数的名称粉碎格式解析)
转载:http://blog.csdn.net/roland_sun/article/details/43233565众所周知,强大的C++相较于C增添了许多功能。这其中就包括类、命名空间和重载这些特性。对于类来说,不同类中可以定义名字相同的函数和变量,彼此不会相互干扰。命名空间可以保证在各个不同名字空间内的类、函数和变量名字不会互相影响。而重载可以保证即使在同一个命名空间内的同一个类中,函数名字...转载 2018-03-06 09:13:59 · 1174 阅读 · 1 评论 -
Android木马病毒com.schemedroid的分析报告
某安全公司移动病毒分析报告的面试题目,该病毒样本的代码量比较大,最大的分析障碍是该病毒样本的类名称和类方法名称以及类成员变量的名称被混淆为无法辨认的特殊字符,每个被分析的类中所有的字符串都被加密处理了并且每个类的加密算法还不是一样的,人肉还原出被加密的字符串是很不现实的,该样本大约有100多个类,需要处理的加密字符串的解密高达几千个之多,有兴趣和能拿到样本的同学可以挑战一下自己,暂不提供样本。经...原创 2018-08-03 09:36:15 · 6483 阅读 · 7 评论 -
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 · 20721 阅读 · 12 评论 -
Xposed框架中XSharePreference的使用
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/81194406在Xposed框架的模块编写中,通常希望我们自己写的Android界面控制部分能够对Xposde框架的模块进行配置,也就说在当前Android应用中写的SharePreference文件,在其...原创 2018-07-25 22:47:47 · 7069 阅读 · 3 评论 -
开启Android应用调试选项的工具XDebug的介绍
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/81187769最近这段时间比较郁闷,就不分享和学习比较复杂的Android逆向技巧和工具了,每天进步一点就好。这里介绍一下,作者deskid编写的开启Android应用调试选项的工具XDebug,该工具也...原创 2018-07-24 19:28:31 · 1758 阅读 · 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 · 1321 阅读 · 3 评论 -
Android apk快速定位、灰色按钮克星--DroidSword
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80994434在进行Android应用程序的逆向分析时,经常需要对Android应用程序的按钮事件、Activity界面等类的代码进行定位分析,传统的代码定位方法就是进行按钮或者Activity界面等显示的 字符串信息 进行全局的搜索,然后找他们的id或者类进行代码的定位,比较繁琐...原创 2018-07-11 10:32:30 · 6139 阅读 · 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 · 2653 阅读 · 0 评论 -
开启Android Apk调试与备份选项的Xposed模块的编写
在进行Android应用程序逆向分析的时候,经常需要进行Android应用程序的动态调试,一般情况下基于Android应用程序的安全性考虑,发布版的Android应用程序都会关闭它的调试选项,因此只有开启该Android应用程序的调试选项,才能在Android应用程序的Activity界面显示之前(即Application类的attach函数和onCreate函数执行之前)使Android应用程序...原创 2018-07-09 11:12:48 · 2915 阅读 · 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 · 7029 阅读 · 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 · 9682 阅读 · 16 评论 -
查找和定位Android应用的按钮点击事件的代码位置基于Xposed Hook实现
本文博客地址:https://blog.csdn.net/QQ1084283172/article/details/80956455在进行Android程序的逆向分析的时候,经常需要通过Android应用程序的界面UI来定位代码的位置,比较常见的例子就是分析Android应用的网络协议时,用户点击登录按钮,实现客户端程序的登录,将用户的账号信息发送给服务器端进行验证,那么我们分析这个网络数据传输的...原创 2018-07-08 07:31:28 · 6905 阅读 · 8 评论 -
基于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 · 14205 阅读 · 6 评论 -
ubuntu 14.04.5 编译Android 4.4.4 r1源码(最新)
吐槽:ubuntu系统真是让人又爱又恨,也有可能是VMware Workstation Pro虚拟机的原因;同一个版本的ubuntu系统在Oracle VM VirtualBox上安装很顺利没有多大的问题,但是在VMware Workstation Pro虚拟机上安装,就会出现各种奇葩的问题,为了配置一个自己用的顺手的ubuntu环境真是折腾死人,来来回回不下10次,而且还发现一个问题,按照别人的原创 2017-01-14 16:45:26 · 5062 阅读 · 0 评论 -
编译Android 4.4.4 r1的源码刷Nexus 5手机详细教程
网上关于编译Android源码的教程已经很多了,但是讲怎么编译Android源码刷到真机上的教程不是很多并且也没有讲清楚,仅仅编译Android源码不部署到真机上折腾一下是不愉快的。在Android安全学习的过程不免涉及到修改Android源码过各种对抗的事情,今天有空来学习一下如何编译Android源码部署到谷歌的Nexus 5 手机上,以Android 4.4.4 r1的源码为例子,在Ubun原创 2017-01-15 23:46:55 · 9232 阅读 · 0 评论 -
深入学习Android系统上mount命令的使用
在Android系统的预装apk病毒和elf病毒的清除时,经常需要先获取root权限,再执行 “mount -o remount,rw /system” 命令修改系统分区属性为可写,然后才能将system/xbin、system/bin以及system/app下的病毒清除干净。在清除Android系统病毒的这个过程中,必须涉及到 mount修改Android系统的分区属性为可写的行为,这里原创 2016-09-10 17:39:22 · 13461 阅读 · 0 评论 -
Windows下Nexus 5 改user模式为debug模式
博客链接:http://blog.csdn.net/qq1084283172/article/details/52337241在学习Android软件安全的过程中,经常要用到Android的动态调试。但是呢,一般的Android应用在发布的时候都是发布版的不能直接被调试,为了能使Android应用能够支持调试就需要对Android应用进行解包以及打包加android:debuggable="t原创 2016-08-28 01:16:06 · 4971 阅读 · 0 评论 -
手机改 user模式为debug模式
logcat 是Android中一个命令行工具,可用于监控手机应用程序的log信息。网上相关的教学很多,这里只想把自己折腾 2 部手机(一个是三星S4 I9500 港水,Android 5.01,一个是 NOTE4 N9108V 移动4G国行版 Android 4.4.4)的心得做个记录,这种方法个人觉得最好,同样的风险也不小。建议具有一定刷机经验的朋友看。没有任何经验的不要乱试。在测试中得到了越转载 2015-07-24 18:56:45 · 4746 阅读 · 2 评论 -
IDA动态调试Android的DEX文件
Android程序的dex文件的动态调试确实是个大问题,网上也有一些教程但是不是特别的详细,今天用到了IDA动态调试Android的DEX文件,特此记录一下。 IDA 6.6新添加了对dex文件的调试支持,但是功能还是很弱的说,因为IDA动态调试Android程序的DEX文件时,查看变量很不方便,可以说然并卵。 @根据android的官方文档,如果要调试一个App里面的dex代码,原创 2015-10-19 16:14:17 · 6811 阅读 · 0 评论 -
APK程序Dex文件无源码调试方法讨论
那些不靠谱的工具先来说说那些不靠谱的工具,就是今天吭了我小半天的各种工具,看官上坐,待我细细道来。IDA proIDA pro6.6之后加入了dex动态调试功能,一时间普天同庆、喜大普奔。兴奋之后你才会发现IDA这东西在动态调试方面真的是很挫,就算他是静态反编译之王,我也不得不说他的动态调试功能还非常需要加强。先说说使用ida调试dex的方法。IDA pro调试原创 2015-10-22 09:52:34 · 2644 阅读 · 0 评论 -
ARM寄存器
一、ARM工作状态下的寄存器组织ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个位状态寄存器。但是这些寄存器不能被同时访问,具体哪些寄存器是可以访问的,取决ARM处理器的工作状态及具体的运行模式。但在任何时候,通用寄存器R14~R0、程序计数器PC(即R15)、一个状态寄存器都是可访问的。通用寄存器通用寄存器包括R0~R15,可以分为3类:(1转载 2015-08-05 15:28:05 · 916 阅读 · 0 评论 -
ARM工作模式
1. 工作状态从编程的角度看,ARM微处理器的工作状态一般有两种,并可在两种状态之间切换:1)第一种为ARM状态,此时处理器执行32位的字对齐ARM指令,绝大部分工作在此状态;2)第二种为Thumb状态,此时处理器执行16位的半字对齐的Thumb指令。ARM微处理器有32位的ARM指令集和16位的Thumb指令集,微处理器可以随时在两种工作状态之间切换,并且,处理器工作状态转载 2015-08-05 15:21:16 · 848 阅读 · 0 评论 -
ARM详细指令集
算术和逻辑指令ADC : 带进位的加法(Addition with Carry)ADC{条件}{S} , , dest = op_1 + op_2 + carryADC 将把两个操作数加起来,并把结果放置到目的寄存器中。它使用一个进位标志位,这样就可以做比 32 位大的加法。下列例子将加两个 128 位的数。128 位结果: 寄存器 0转载 2015-08-05 15:43:32 · 1239 阅读 · 0 评论 -
ARM寻址方式
所谓寻址方式就是处理器根据指令中给出的地址信息来寻找物理地址的方式。ARM处理器的寻址方式目前ARM处理器支持9种寻址方式,分别是立即数寻址、寄存器寻址、寄存器偏移寻址、寄存器间接寻址、基址变址寻址、多寄存器寻址、相对寻址、堆栈寻址和块拷贝寻址。1. 立即数寻址也叫立即寻址,是一种特殊的寻址方式,操作数本身包含在指令中,只要取出指令也就取到了操作数。这个操作转载 2015-08-05 15:39:15 · 924 阅读 · 0 评论 -
ARM汇编中的:比较指令--CMN / CMP / TEQ / TST
1. 简介 CMP / CMN : 算术指令 TEQ / TST : 逻辑指令 它们总是会影响CPSR条件标志位. APSR(CPSR)与condition的关系图: 2. CMN -- 比较取负的值 CMN{条件}{P} , status转载 2015-08-05 14:48:54 · 17010 阅读 · 0 评论 -
ARM指令集
ARM指令的基本格式ARM指令的基本格式为: {} {S} , { , }其中,内的项是必需的,{ }内的项是可选的。(1)Opcode项Opcode是指令助记符,即操作码,说明指令需要执行的操作,在指令中是必需的。(2)Cond项(command)Cond项表明了指令的执行的条件,每一条ARM指令都可以在规定的条件下执行,每条ARM指令包含4位的条转载 2015-08-05 15:47:02 · 1749 阅读 · 0 评论