Android Hook-Frida框架-在python脚本中调用frida模块

首当其冲,了解你的设备信息。-----箴言-----

Frida 体验笔记二:
官网:

https://frida.re/docs/home/
https://www.frida.re/docs/javascript-api/

实践内容:在python脚本中调用frida提供的函数。

1. 获取device信息:device.py:(1)python脚本:device.py:

import frida
import sys


#获取设备信息
rdev = frida.get_remote_device()
print (rdev)

usb = frida.get_usb_device()  #test ok
print (usb)

ldev =  frida.get_local_device()
print (ldev)


(2)运行:

aaaaa:test_code$ python device.py 


(3)结果:


Device(id="socket", name="Local Socket", type='remote')
Device(id="emulator-5554", name="Android Emulator 5554", type='usb')
Device(id="local", name="Local System", type='local')


2. 获取前台进程信息:
(1)python脚本:get_process.py:

import frida
import sys

#获取设备信息

rdev = frida.get_usb_device()
print (rdev)

#test ok,如果用rdev就出错
#process = rdev.enumerate_processes() 
#print(process)


#获取在前台运行的APP
#test ok, 如果用rdev就出错
front_app = rdev.get_frontmost_application()
print (front_app)


(2)运行:
 

aaaaa:test_code$ python get_process.py 


(3)结果:

Device(id="emulator-5554", name="Android Emulator 5554", type='usb')
Application(identifier="com.example.myapplication3", name="MyApp3", pid=2281)

3. 获取进程信息:
(1)python代码: 同上get_process.py。

运行结果:
 

aaaaa:test_code$python get_process.py 
Device(id="emulator-5554", name="Android Emulator 5554", type='usb')
[Process(pid=1, name="init"), Process(pid=108, name="ueventd"), Process(pid=110, name="ueventd"), Process(pid=114, name="logd"), Process(pid=222, name="vold"),......
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,首先需要在 Android 设备上安装 fridafrida-tools,然后在 Python 安装 fridafrida-tools 包。 接下来,我们需要编写一个 Python 脚本hook Android APP 的某个函数,获取函数返回值并将其发送到 Python 进行处理。以下是一个简单的示例代码: ```python import frida import time # 要 hook 的函数所在的类名和函数名 class_name = "com.example.app.MainActivity" func_name = "getSomeValue" # hook 回调函数 def on_message(message, data): if message['type'] == 'send': print("[*] Received: {}".format(message['payload'])) else: print(message) # 启动 frida-server device = frida.get_usb_device() pid = device.spawn(["com.example.app"]) session = device.attach(pid) device.resume(pid) # 加载脚本 with open("hook.js", "r") as f: script = session.create_script(f.read()) # 注入脚本 script.load() # 调用 hook 函数 hook = script.exports.hook(class_name, func_name) # 等待 hook 回调 script.on('message', on_message) time.sleep(2) # 关闭 frida-server device.kill(pid) device.flush() ``` 上述代码,我们使用 `frida.get_usb_device()` 获取连接的 Android 设备,然后启动目标应用程序并附加到其进程。接着,我们加载一个名为 `hook.js` 的 JavaScript 脚本,该脚本实现 hook 目标函数并将函数返回值发送给 Python。最后,我们通过 `script.on('message', on_message)` 等待 hook 回调,处理函数返回值。 以下是 `hook.js` 脚本的示例代码: ```javascript Java.perform(function () { var targetClass = Java.use('com.example.app.MainActivity'); // 定义 hook 函数 function getSomeValueHook() { var result = this.getSomeValue(); // 将函数返回值发送给 Python send(result.toString()); return result; } // hook 目标函数 targetClass.getSomeValue.implementation = getSomeValueHook; // 导出 hook 函数 var exports = {}; exports.hook = function (className, funcName) { var targetClass = Java.use(className); var targetFunc = targetClass[funcName]; targetFunc.implementation = getSomeValueHook; }; return exports; }); ``` 上述脚本,我们使用 `Java.use()` 方法获取目标类,并使用 `implementation` 属性 hook 目标函数。在 hook 函数,我们获取函数返回值,并使用 `send()` 方法将其发送到 Python 进行处理。最后,我们将 hook 函数导出为 `exports.hook`,以便在 Python 调用。 在 Python ,我们可以将获取到的函数返回值进行处理,例如写入文件或执行其他操作。由于本人不能获取您的具体要求,因此无法提供更具体的代码示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值