Android Spider App逆向 Frida - 夜神模拟器安装配置 基本使用
Posted EXI-小洲
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Spider App逆向 Frida - 夜神模拟器安装配置 基本使用相关的知识,希望对你有一定的参考价值。
文章目录
前言
Frida 是一款基于 Python + javascript 的 Hook 与调试框架,实现app逆向的强大工具;
模拟器下载安装教程:https://blog.csdn.net/EXIxiaozhou/article/details/127767808
提示:以下是本篇文章正文内容,下面案例可供参考
一、Frida简单介绍?
1.Frida是什么
Frida是一款易用的跨平 Hook 工具, Java 层到 Native 层的 Hook 无所不能,是一种 动态 的插桩工具;
静态二进制插桩:在程序执行前插入额外的代码和数据,生成一个永久改变的可执行文件;
动态二进制插桩:在程序运行时实时地插入额外代码和数据,对可执行文件没有任何永久改变;
可以插入代码到原生 App 的内存空间中,动态的去监视和修改行为;
原生平台包括 Win、Mac、Linux、android、ios 全平台;
1、使用frida可以获取进程的信息(模块列表,线程列表,库导出函数);
2、可以拦截指定函数和调用指定函数,可以注入代码;
3、Frida的主要工作方式是将脚本注入到目标新的进程中,而且在执行过程中可以实时看到其中的变化;
2.Frida原理(建议了解一下,否则后续的安装会有些懵懂)
frida分为两部分,服务端运行在目标机上,通过注入进程的方式来实现劫持应用函数,另一部分运行在系统机器上
1、模拟器端/手机端安装一个frida-server程序
2、启动模拟器端/手机端的frida-server服务,然后把手机端的端口转发到PC端,
3、PC端编写python脚本进行通信,python脚本中需要hook的代码采用javascript语言。
二、Frida下载
1.pip安装frida模块
镜像地址
清华:https://pypi.tuna.tsinghua.edu.cn/simple
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
华中理工大学:http://pypi.hustunique.com/
山东理工大学:http://pypi.sdutlinux.org/
豆瓣:http://pypi.douban.com/simple/
安装最新版本:pip install frida-tools -i https://pypi.tuna.tsinghua.edu.cn/simple
我的frida版本:12.8.0;
指定版本安装:pip install frida-tools==12.8.0 -i https://pypi.tuna.tsinghua.edu.cn/simple
2.查看本地的frida版本,需要与模拟器端/手机端的版本对应,否则会出错
本地的frida版本:frida --version
3.frida下载
下载地址:https://github.com/frida/frida/releases
我用的是夜神模拟器,查看系统信息
下载完成解压
三、Frida安装
MT管理器apk下载链接-提取码:pwjj:https://pan.baidu.com/s/1dH-TeB6gChPDYoYpH1aXQg?pwd=pwjj
1.通过MT管理器将证书配置到模拟器中
1.在windows下载apk文件,打开模拟器直接将apk文件拖入模拟器窗口完成安装,自动完成安装
2.打开模拟器,选择好本地与模拟器的共享目录,将解压好的frida放入windows本地的共享目录
3.打开MT管理器app
4.将本地的frida-server-12.8.0-android-x86,复制到模拟器中的data/local/tmp目录
2.模拟器端启动frida-server
来到windows本地的模拟器安装目录下:xxx/Nox/bin,在搜索框输入cmd进入该目录的命令窗口
1、进入shell:adb shell
2、获取权限:su
3、进入目录:cd /data/local/tmp
4、设置frida-server可执行权限:chmod 755 frida-server-12.8.0-android-x86
5、启动服务:./frida-server-12.8.0-android-x86
3.连接并转发端口
再打开一个命令窗口,在windows本地的模拟器安装目录下:xxx/Nox/bin,在搜索框输入cmd进入该目录的命令窗口
1、连接:adb connect 127.0.0.1:62001
2、转发端口,进行监听
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
3、查看模拟器正在运行的程序:frida-ps -Ua
监听成功
总结
本文仅仅简单介绍了如何在模拟器端安装frida,以及启动frida服务并监听,后面会更新使用frida监听app代码注入进行hook的示例,关于模拟器的操作可以查看我的相关博文;
记一次Android App逆向入门实战(逆向思路&工具使用&CrackMe)
目录
-
背景知识
随着Android设备的急剧增长和逆向工具链的成熟,Android App的安全性问题日益突出,其中二次打包问题较为严重。
恶意攻击者利用反编译工具对App进行源码反编译、植入广告SDK、插入钓鱼页面,重打包和重签名后,恶意篡改后的App通过非法渠道流入市场。终端用户如果使用这些App,会有隐私数据泄漏、资金财产被盗取的风险。
本文将介绍自己的一次Android逆向入门实战经历,分别是在native层和so层进行攻击。以后有机会向大家介绍Android防护相关。
-
CrackMe
CrackMe是一些公开给别人尝试破解的小程序。在这里我们以两个CrackMe.apk为例进行说明。
-
工具
AndroidKiller_v1.3.1
IDA PRO 6.8
IntelliJ IDEA
-
逆向实战App1
我们在native层对App 1进行攻击,共有三种方法:正向分析法、Smali修改法、IDA动态调试法。
-
正向分析法
1. Android Killer中打开:将APK反编译为Smali代码,可以看到主要逻辑在MainActivity.smali中,再将其转换为伪Java代码。
2. 伪Java中寻找关键代码,其跳转关键句在if..else语句,其中调用了getMD5str()函数,要搞定这个CrackMe需了解该函数。
3. 将getMD5str()函数复制到IDEA中,去掉冗余代码,尝试对伪代码进行调试。传进一个字符串"kevin",输出"EBCD**3075"。至于getMD5str()函数的具体功能是什么,不是很重要,有兴趣的同学可以反编译后分析下。
-
Smali修改法
使用Android Killer将Java代码转换为Smali代码,修改Smali代码,重打包重签名,随便输入什么均可Crack掉。
修改前:
"if-eq vA, vB, :cond_" ##如果vA等于vB则跳转到:cond_
修改后:
"if-ne vA, vB, :cond_" ##如果vA不等于vB则跳转到:cond_
-
IDA动态调试法
使用IDA动态调试Smali代码,当输入用户名时,在Smali中设置断点,可以直接读出相应的密码。
-
逆向实战App2
我们在so层对App 2进行攻击。攻击步骤如下:
1. Android Killer里打开zb002.apk,关键代码在if...else语句中。我们可以使用逆向实战App1中的Smali修改法,但我想在此介绍另一种攻击方式。
2. 此时native函数GetNative只有声明,具体实现在libegg.so文件中。JNI接口作为Java层和Native层交互的桥梁,使得Java层和Native层之间可以互相调用。
3. 使用IDA动态调试或直接ALT+T进行搜索GetNative。根据跳转和传送指令可知其密码。
-
参考链接
记得TODO,后续发两个CrackMe的链接。
以上是关于Android Spider App逆向 Frida - 夜神模拟器安装配置 基本使用的主要内容,如果未能解决你的问题,请参考以下文章
记一次Android App逆向入门实战(逆向思路&工具使用&CrackMe)
Android Spider Fiddler - 夜神模拟器证书安装App抓包