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、androidios 全平台;
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)

目录

背景知识

CrackMe

工具

逆向实战App1

正向分析法

Smali修改法

IDA动态调试法

逆向实战App2

参考链接


  • ​​​​​​​​​​​​​​背景知识

随着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抓包

Android逆向学习路线

最近3款Android APP逆向分析总结

求助ANDROID APP逆向:如何屏蔽showConfirmDialog确认框?

Drozer的安装与使用 | Android逆向工具