模拟器里frida的简单学习

一、Frida安装

pip install frida
pip install frida-tools

模拟器使用雷电模拟器,下载对应内核架构版本frida-server安装到模拟器
https://github.com/frida/frida/releases

我的是i686对应的是32位所以下载32位的版本(也可以开启模拟器使用adb shell进去后执行cat /proc/cpuinfo查看版本,看不到就下载一个检测硬件的检测)

下载完后解压,执行命令将文件移到手机里
adb push 解压目录 /data/local/tmp/

然后adb shell连接手机,依次执行以下命令

1
2
3
4
su #执行特权
cd /data/local/tmp/ #进入到frida-server文件目录
ls #查看你的frida-server文件叫啥以方便执行
chmod 777 frida-server #给文件读写执行权限


./frida-server #开启frida-server

查看是否成功:另起一个cmd,转发端口
adb forward tcp:27042 tcp:27042

执行frida-ps -R就会列出设备里的所有进程,代表frida已经部署成功了

二、hook测试

模拟器安装一个测试app运行

运行python脚本得到android手机当前最前端Activity所在的进程(最新运行的app的进程):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import frida
rdev = frida.get_remote_device()
front_app = rdev.get_frontmost_application()
print (front_app)
````
![](/images/60/10.png)

枚举所有进程:
```python
import frida
rdev = frida.get_remote_device()
processes = rdev.enumerate_processes()
for process in processes:
print (process)


hook android的java层函数,开始尝试劫持:
原app(点击按钮提示“source string!”)

运行脚本劫持内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# encoding: utf-8
import frida #导入frida模块
import sys #导入sys模块

jscode = """
Java.perform(function(){
var MainActivity = Java.use('com.example.testfrida.MainActivity');
MainActivity.testFrida.implementation = function(){
send('Statr! Hook!');
return 'Change String!' #劫持点,点击按钮后要改变的内容
}
});
"""

def on_message(message,data): #js中执行send函数后要回调的函数
print(message)

process = frida.get_remote_device().attach('testfrida') #得到设备并劫持进程com.example.testfrida
script = process.create_script(jscode) #创建js脚本
script.on('message',on_message) #加载回调函数,也就是js中执行send函数规定要执行的python函数
script.load() #加载脚本
sys.stdin.read()


其中jscode为js实现,具体看官方文档
https://frida.re/docs/quickstart/

以后每次启动都要执行

1
2
adb shell "cd /data/local/tmp&&ls&&./frida-server"
adb forward tcp:27042 tcp:27042

hook密钥

推荐工具inspeckage

参考

[1] https://www.jianshu.com/p/9731185d33aa

[2] https://blog.csdn.net/qq_38851536/article/details/103755407?utm_medium=distribute.pc_relevant.none-task-blog-title-6&spm=1001.2101.3001.4242

[3] https://www.anquanke.com/post/id/86567

[4] https://www.52pojie.cn/thread-1128884-1-1.html


声明:
本文章用于学习交流,严禁用于非法操作,出现后果一切自行承担,阅读此文章表示你已同意本声明。

Disclaimer:
This article is for study and communication. It is strictly forbidden to use it for illegal operations. All consequences shall be borne by yourself. Reading this article means that you have agreed to this statement.