![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Android逆向从入门到进阶
文章平均质量分 78
随着移动端市场的发展,我们发现生活中大部分时间都被手机给占用。侧面也反映出移动端市场的火爆,但随着各种安全事件的发生,让我们逐渐认识到移动端安全的重要性。
YJJYXM
这个作者很懒,什么都没留下…
展开
-
unidbg工具使用
一、下载IntelliJ IDEA在此处不过多赘述了,去官方网站下载IDEA就可以了。当然此处有社区版和专业版,那么这里就看个人需求了。安装教程网上还是很多的,在此处也不多说了。二、IDEA相关配置在使用之前需要配置好Maven以及修改默认Repository,接下来就说一下此方面。1.配置Maven环境(1) .下载apache-maven文件,选择自己需要的版本,这里下载3.6的就可以,地址:http://maven.apache.org/(2) 解压1所下载文件,本人解压到:D:\apac原创 2021-04-28 11:06:55 · 2532 阅读 · 1 评论 -
jadx工具介绍及使用
jadx工具是一款反编译利器,同时支持命令行和图形界面,能以最简便的方式完成apk的反编译操作。原创 2021-01-06 17:30:49 · 4798 阅读 · 2 评论 -
”川报观察“协议分析(抓不到包)
抓不到包怎吗办,来我手把手教你啊原创 2020-12-29 17:06:40 · 324 阅读 · 1 评论 -
实战分析43XX的HTTPS协议
抓包分析43XX的登录协议,两次抓包,对比哪些字段发生了变化,重点分析变化字段。原创 2020-12-28 17:42:12 · 1283 阅读 · 0 评论 -
实战分析人X的HTTP协议
使用抓包工具抓取人X的数据,通过对比工具分析哪些数据发生了改变,着重分析改变的字段及加密算法。原创 2020-12-25 15:42:56 · 1395 阅读 · 0 评论 -
普通协议(HTTP)与安全协议(HTTPS)
HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。HTTP协议属于应用层,建立在传输层协议TCP之上。客户端通过与服务器建立TCP连接,之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现。原创 2020-12-24 17:12:06 · 958 阅读 · 1 评论 -
pc端和移动端抓包工具
Fiddler是一款非常流行并且实用的http抓包工具,它的原理是在本机开启了一个http的DL服务器,然后它会转发所有的http请求和响应,因此,它比一般的firebug或者是chrome自带的抓包工具要好用的多。不仅如此,它还可以支持请求重放等一些高级功能。显然它是可以支持对手机应用进行http抓包的。本文就来介绍下如何用fiddler对手机应用来抓包。原创 2020-12-23 16:15:48 · 4667 阅读 · 0 评论 -
客户端与服务器端
概念:协议就是服务器与客户端交互信息的一种规则。客户端和服务器连接:实质都是连接服务器的IP地址和开放端口。原创 2020-12-22 16:55:01 · 818 阅读 · 0 评论 -
CydiaSubstrate框架
Cydia Substrate是一个基于Hook的代码修改框架,可以在Android、iOS平台使用,并实现修改系统默认代码。原创 2020-12-21 16:42:44 · 2407 阅读 · 0 评论 -
Frida Native层HOOK
实例hook案例app成功打印返回值、参数。原创 2020-12-18 14:32:18 · 964 阅读 · 0 评论 -
Frida hook Java层
Frida hook Java层包括Hook普通方法(包含静态方法)、构造方法、重载方法、以及构造对象参数和修改对象属性象参数。原创 2020-12-17 15:46:40 · 1210 阅读 · 0 评论 -
frida环境安装
frida是一款基于python + java 的hook框架,可运行在android、ios、linux、winosx等各平台上,主要使用动态二进制插桩技术。原创 2020-12-16 14:41:26 · 1053 阅读 · 2 评论 -
Xposed框架安装、使用及插件开发
Xposed框架是一款可以在不修改APK的情况下影响程序运行(修改系统)的框架服务,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。对原生Launcher替换图标等应用或功能均基于此框架。原创 2020-12-15 15:00:57 · 6688 阅读 · 0 评论 -
HOOK startActivity
Hook的英文含义是钩子,你可以理解为用钩子把要Hook的对象勾过来,然后再把替换的对象送回去。Hook其实就是把原来的对象替换成仿造的对象,还有就是必须拿到当前对象里的某个属性进行Hook,否则你的hook是失败的,没有意义的。原创 2020-12-14 16:34:44 · 554 阅读 · 1 评论 -
HOOK框架——动态代理
动态代理的目的就是为了解决静态代理的缺点,通过使用动态代理,在运行时动态生成一个持有RealObject,并实现代理接口的Proxy,同时注入相同的扩展逻辑。即使你要代理的RealObject是不同的对象,代理不同的方法,都可以通过动态代理来扩展功能。原创 2020-12-11 11:08:57 · 755 阅读 · 0 评论 -
HOOK框架——静态代理
代理模式分为静态代理和动态代理 ,静态代理是编译阶段就生成代理类来完成对代理对象的一系列操作。动态代理是指在运行时动态生成代理类。即代理类的字节码将在运行时生成并载入当前代理的 ClassLoader。原创 2020-12-10 17:11:59 · 325 阅读 · 0 评论 -
实战案列分析:Crakeme01
往期推荐实战:AliCrackme实战案列:AntiDebugself-debugging反调试轮循检测技术需要样本的朋友,可以【加入此处即可打包获取】先运行软件,观察程序特点,步骤与第八节实战相似,都是运用IDA静态调试与动态调试相结合获取密码,从而进入功能页面,具体操作流程如下。一: jdax-gui中分析java代码在xml文件里,找到程序入口点,如下图所示。直接查看click,如下图所示。此处if的判断与之前分析的AliCreackme不同。先判断它是否为空,如果为空,先弹出原创 2020-12-09 11:27:16 · 364 阅读 · 0 评论 -
实战:AliCrackme
往期推荐self-debugging反调试轮循检测技术进程名称检测实战案列:AntiDebug一:分析AliCrackme将AliCrackme程序拖入jdax-gui进行分析。1.从xml中找到程序入口点,如下图所示。2.分析Oncreate,前面是布局初始化和设置监听的操作,如下图所示。3.点击onclick里的内容,如果这个函数返回值为真,就进行页面跳转,否则显示弹窗失败,如下图所示。4.点击函数,发现被native修饰,说明是使用NDK开发,直接分析so库,如下图所示。原创 2020-12-08 11:08:13 · 312 阅读 · 0 评论 -
实战案列:AntiDebug
Anti Debug主要是通过各种函数去确定当前进程是否处于被调试的状态。原创 2020-12-07 16:50:53 · 513 阅读 · 0 评论 -
Java层反调试
往期推荐self-debugging反调试轮循检测技术进程名称检测调试端口检测安卓程序动态调试需要满足两个条件。1.在AndroidMainfest.xml文件中,在application标签下,Android:debuggable=true。2.系统默认调式,在build.prop(boot.img),ro.debugable=1。一:实例演示java层反调试以“百度加固”为例。1.将样本拖入jdax-gui中,进行反编译,来到加固程序的onCreate里,如下图所示。2.找到at原创 2020-12-04 17:13:01 · 450 阅读 · 0 评论 -
self-debugging反调试
往期推荐轮循检测技术进程名称检测调试端口检测调试与反调试–关键文件检测Self的英文意思是自己,顾名思义,self-debugging就是通过调试自身检测出是否被调试。一 : self-debugging反调试原理1.通过观察下图所知。,当前的进程就是父进程,也就是即将被调试的进程。2.然后通过父进程来fork一个子进程,如下图所示。3.子进程实现了调试器的功能,如下图所示。4.作为调试器的子进程附加父进程,如下图所示。5.通过子进程调试父进程,进而阻止其他调试器来调试父进程,原创 2020-12-03 16:07:39 · 511 阅读 · 0 评论 -
轮循检测技术
往期推荐调试端口检测调试与反调试–关键文件检测模拟器检测文件检测如果你也对安卓逆向感兴趣。可以加入下方的群,大家一起讨论问题,或者扫描下方二维码关注公众号,关注回复 “安卓逆向” 获取免费教程安卓逆向交流学习 Q群:876526335vx:yijin_LX...原创 2020-12-02 16:38:50 · 437 阅读 · 0 评论 -
进程名称检测
往期推荐调试与反调试–关键文件检测模拟器检测文件检测签名验证一:分析进程名称检测的C代码1.来到main函数,从main函数的coursecheck()开始分析,如下图所示。2.直接查看调用的函数coursecheck(),如下图所示。3.分析该函数,首先它定义几个char型的数组,如下图所示。4.获取当前的pid,然后使用sprintf函数把pid写入/proc/%d/status字符串中,再放入filename所指地址的数组中,使用fopen函数打开filename表示的文件名,原创 2020-12-01 15:17:36 · 398 阅读 · 0 评论 -
调试端口检测
往期推荐调试与反调试–关键文件检测模拟器检测文件检测签名验证一:运行文件检测程序1.将checkTCP课件Push到目录/data/local/tmp位置,如下图所示。2.给这个可执行程序一个权限,运行程序,发现被killed,显示5D8A,如下图所示。3.执行指令cat /proc/net/tcp,查看当前端口,发现当前有两个端口,如果当前程序存在5D8A这个端口,说明IDA程序android_server正在运行,这个就是端口检测的原理,如下图所示。4.如果将android se原创 2020-11-30 16:15:12 · 904 阅读 · 0 评论 -
调试与反调试--关键文件检测
往期推荐模拟器检测文件检测签名验证资源文件混淆、一:运行文件检测程序1.使用adb命令,将filecheck课件push到手机目录下的data/local位置,如下图所示。2.运行filecheck后,提示killed,如下图所示。3.删除android server,再运行程序,程序可正常运行,如下图所示。结论:如果有android server存在,程序就无法运行,如果删除android server,程序就可以正常运行,这就是关键文件的检测。二: 进行IDA分析1.将fil原创 2020-11-27 16:28:50 · 341 阅读 · 0 评论 -
模拟器检测
往期推荐文件检测签名验证资源文件混淆apk保护策略——Java代码混淆模拟器检测的就是指通过检测确认软件、手游等不能运行在模拟器上面。比如一个游戏,它能够在模拟器上实现批量刷金币或者是其他功能,但模拟器又无法启动起来,在这种情况下,就需要使用真机,相应地成本也就增加了。检测模拟器包含的配置信息是非常多的,包括wifi、蓝牙、电量、cpu等等。接下来进行实际操作,演示如何检测模拟器。在模拟器中打开“设置”选项,来到最后一项“关于平板电脑”,如下图所示。一:析代码在获取基本信息之后,分析其原创 2020-11-26 15:56:50 · 5699 阅读 · 4 评论 -
文件检测
往期推荐签名验证资源文件混淆apk保护策略——Java代码混淆IDA调试修改内存数据CRC即循环冗余校验码(Cyclic Redundancy Check)是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。一:CRC循环冗余校验的原理在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码又叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校 验码,而G(x)叫做这个C原创 2020-11-25 15:50:04 · 563 阅读 · 0 评论 -
签名验证
往期推荐资源文件混淆apk保护策略——Java代码混淆IDA调试修改内存数据IDA调试界面介绍及快捷键当app进行反编译后修改,再回编译,若出现闪退的情况时,则有可能是由于程序本身已存在签名验证,才会出现闪退,本今天给大家讲讲如何解决因签名验证而出现的闪退现象。一:阅读签名验证源码1.打开文件,如下图所示。2.分析Java层,在调用init这个方法里面,是进行按钮以及其他控件的初始化,如下图所示。3.接下来是一个注册函数,判断用户名和密码是否相等,从而弹出不同的提示,如下图所示。4原创 2020-11-24 15:18:58 · 2072 阅读 · 0 评论 -
资源文件混淆
往期推荐apk保护策略——Java代码混淆IDA调试修改内存数据IDA调试界面介绍及快捷键IDA调试环境搭建在使用AndroidKiller修改smali代码,进行回编译时,有时会出现报错的情况,报错的其中一种可能是由于资源文件的混淆,可以通过绕过资源对抗的方法解决。一:资源混淆的例子分别打开AndroidKiller和模拟器,以捕鱼达人软件为例进行演示,如下图所示。反编译这款游戏时,如下图所示。重新打包,点击“编译”按钮进行回编译,此时会出现错误信息,如下图所示。若想解决,就要使用M原创 2020-11-23 17:37:05 · 990 阅读 · 0 评论 -
apk保护策略——Java代码混淆
往期推荐IDA调试修改内存数据IDA调试界面介绍及快捷键IDA调试环境搭建IDA静态分析前一段时间分享了IDA工具的使用以及各方面知识,有需要的小伙伴们自取,如果在学习安卓逆向技术的小伙伴们对你们的帮助还是很大的。今天给大家分享apk保护策略的知识,需要的小伙伴们可以持续关注哦。在分析一个程序的Java层逻辑,进行反编译时,偶尔会发现代码中所有的函数名、变量名、类名等都变成了一些杂乱无章的名字,它们没有任何规律可言,这就是程序的混淆。Java代码混淆就是为了保护Java源代码,对编译好的cl原创 2020-11-20 14:38:25 · 507 阅读 · 0 评论 -
改变程序执行流程
往期推荐IDA调试修改内存数据IDA调试界面介绍及快捷键IDA调试环境搭建IDA静态分析一:分析程序执行流程1.将IDA切换为视图模式,如下图所示。2.在视图模式下,看到这里存在BLX 和CMP两个函数,如下图所示。3.当BLX函数执行完毕后,会把返回值放到R0寄存器,然后执行cmp指令,就会将R0的值和0进行比较,不同的结果执行不同的分支,如下图所示。4.此处如何跳转,完全取决于跳转指令BNE(不等于则跳转),如下图所示。5.按空格切换回来,如下图所示。如果R0和0不相等,原创 2020-11-19 17:23:25 · 612 阅读 · 0 评论 -
IDA调试修改内存数据
往期推荐IDA调试界面介绍及快捷键IDA调试环境搭建IDA静态分析IDA工具介绍一:修改寄存器的值以下图所示的BLX R3这个函数为例,执行完毕后,他的返回值在右面的R0寄存器,对它进行修改。1.将鼠标移到R0寄存器,右键,选择“Modify value”选项,可以修改为任意值,如下图所示。2.除了选择“Modify value”选项外,还可以选择“Zero value”选项,直接置零,如下图所示。二:篡改内存数据在函数头打断点,点击F9,程序成功在函数头断下,紧接着F8往下走,当原创 2020-11-18 15:55:32 · 3736 阅读 · 0 评论 -
IDA调试界面介绍及快捷键
往期推荐IDA调试环境搭建IDA静态分析IDA工具介绍IDA工具安装、分享首先,打开IDA工具,进入IDA的调试界面。一: IAD调式界面介绍1.IDA-view-PC:反汇编窗口,如下图所示。2.Hex-View:十六进制编辑窗口,如下图所示。3.Output windows(下方) :输出窗口;General register(右侧):寄存器窗口,如下图所示。4.Stack view(右下角):栈视图,如下图所示。5.常量字符串窗口:View=>Open subvi原创 2020-11-16 16:06:46 · 4029 阅读 · 0 评论 -
IDA调试环境搭建
往期推荐IDA静态分析IDA工具介绍IDA工具安装、分享ARM处理器寻址方式通过上一章节的学习,我们掌握了IDA静态分析so文件的操作方法,但想要更加具体地对程序进行分析,动态调试是必不可少的,而在动态调式之前,则需要搭建IDA动态调试的环境。一:创建安卓自带模拟器1.在SDK中找到AVD Manager.exe程序,如下图所示。2.双击打开程序,如下图所示。3.点击页面右侧的“Create”按钮,创建相应的模拟器,如下图所示。4.在模拟器中设置一系列的参数值,点击OK,如下图所示原创 2020-11-13 17:39:20 · 1129 阅读 · 0 评论 -
IDA静态分析
往期推荐IDA工具介绍IDA工具安装、分享ARM处理器寻址方式ARM指令集一:分析“getText”函数1.首先任意打开一个函数,以getText函数为例,如下图所示。2.双击打开该函数,开始分析汇编指令,箭头所指位置是指令的开始处,如下图所示。.text:00001148 STMFD SP!,{R3-R5,LR}压栈操作,把R3-R5,LR分别压到栈顶。.text:0000114C MOV R5, R1把R1赋值给R5。.text:00001150 LDR R3原创 2020-11-12 11:12:54 · 2044 阅读 · 0 评论 -
IDA工具介绍
往期推荐IDA工具安装、分享ARM处理器寻址方式ARM指令集ARM汇编语言程序结构昨天给大家概括性的了解了IDA工具,今天分享IDA工具的实际应用。一:IDA打开so文件1.首先打开IDA工具,进入选项界面,直接选中Go选项,如下图所示。2.点击GO进入IDA工具的主界面,如下图所示。3.将准备好的so文件案例拖至IDA工具中,此界面的选项选择默认即可,点击OK,如下图所示。4.进入So文件反编译完成的提示界面,继续点击OK进入主界面,如下图所示。5.进入IDA反编译so完成后原创 2020-11-11 14:41:29 · 13829 阅读 · 5 评论 -
IDA工具安装、分享
往期推荐ARM处理器寻址方式ARM指令集ARM汇编语言程序结构Android与ARM处理器IDA工具被称之为是世界顶级的交互汇编。掌握IDA工具界面上的快捷功能、导航条主界面功能以及汇编窗口常用快捷键的使用。实战分析,了解ARM指令,伪代码以及分析源码汇编指令三者的关系。熟悉IDA用法,在动态调试点的时候如鱼得水。交互式反汇编器专业版(Interactive Disassembler Professional),人们常称其为IDA Pro,或简称为IDA。IDA Pro是一款交互式的,可编程原创 2020-11-10 11:40:18 · 9062 阅读 · 3 评论 -
ARM处理器寻址方式
往期推荐ARM指令集ARM汇编语言程序结构Android与ARM处理器反射调用Java层方法寻址的概述寻址是指寻找寄存器里存放的数据或者是地址里存放的数据并加以使用。寻址有以下八种方式:1.立即寻址;2.寄存器寻址;3.寄存器移位寻址;4.寄存器间接寻址;5.基质寻址;6.多寄存器寻址;7.堆栈寻址;8.相对寻址。一:立即寻址立即寻址指令中的操作码,字段后面的地址码部分,即是操作数本身,也就是说,数据包含在指令当中,取出指令也就取出了可以立即使用的操作数(这样的数称为立即数原创 2020-11-09 16:34:58 · 817 阅读 · 0 评论 -
ARM指令集
往期推荐ARM汇编语言程序结构Android与ARM处理器反射调用Java层方法反射获取Java层字段的值ARM指令集是指计算机ARM操作指令系统。在ARM中有两种方式可以实现程序的跳转:一种是跳转指令;另一种是直接向PC寄存器中写入目标地址值。ARM指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令六大类。介绍几种常见的指令以及它们的作用。一:跳转指令跳转指令有以下四种:B:无条件跳转例如: B 0x1234,跳转到绝对地原创 2020-11-06 10:36:17 · 1087 阅读 · 0 评论 -
ARM汇编语言程序结构
往期推荐Android与ARM处理器反射调用Java层方法反射获取Java层字段的值JNI动态注册如果你也对安卓逆向感兴趣。可以加入下方的群,大家一起讨论问题,或者扫描下方二维码关注公众号,关注回复 “安卓逆向” 获取免费教程安卓逆向交流学习:1139349849vx:Yjxiaox...原创 2020-11-05 10:36:59 · 2095 阅读 · 0 评论