python执行frida脚本

admin 2024年7月4日13:00:56评论1 views字数 2122阅读7分4秒阅读模式

python执行frida脚本

建议先写frida的js脚本,通过 -l 的形式先跑一遍,确定能跑通,没有问题,再改成python形式的。
python加载js的形式,不好定位代码哪里有问题。

两种模式

frida启动app有两种方式,attach和spawn

  • attach 无需重新启动app,可以直接附加上去
  • spawn 重新启动app,app从头加载so等文件

通常我们使用attach,但是遇到app做了限制的,比如app设置了多进程,就需要使用spawn。
也可以先用objection先hook住,在通过attach(pid)的方式绕过多进程限制,

attach

device = frida.get_usb_device()
session = device.attach("app的包名") # 可以传入pid (int格式)

spawn

spawn可能出错,根据我的经验,先检查加载的js有没有问题,可以frida -U -f xxx -l xx.js 看一下能否跑成功。
如果js没问题,多启动几次python脚本就会成功。
如果持续不成功,可以重启frida-server。

device = frida.get_usb_device()
pid = device.spawn("app的包名")
device.resume(pid)
time.sleep(1)
session = device.attach(pid)

如果还不行,用下面的代码

device = frida.get_usb_device()
pid = device.spawn("app的包名")
session = device.attach(pid)

python 调用frida-rpc

JavaScript当中的写法

rpc.exports = {
    encryptdata: function (body01){
        return encryptData(body01)
    },
    add:function (test1,test2){
        return test1 + test2
    }
}

python当中调用rpc

script.exports_sync.add(1, 2)
script.exports_sync.encrypt("{}")

python 调用frida js 的大致框架

process = None
session = None
script = None

if __name__ == '__main__':
device = frida.get_usb_device()
pid = device.spawn("app的名字")
device.resume(pid)
time.sleep(1)
session = device.attach(pid)

with open("./frida_rpc.js", 'r', encoding='utf-8') as file:
js_code = file.read()
script = session.create_script(js_code)
print('[*] Running ')

script.load()
time.sleep(3)

result = script.exports_sync.add(1, 2)
print(result)

frida-server启动脚本

使用 frida-server 后台运行,每次出现问题杀掉重启很麻烦,于是在语言模型的帮助下,写了一个脚本,觉得挺好用的,分享出来

start.sh

使用:
修改 PROCESS_NAME ,修改成frida-server的名字

#!/system/bin/sh

# 定义进程名称
PROCESS_NAME="hluda-server-arm64"

# 检查进程是否存在
pgrep -f $PROCESS_NAME > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "$PROCESS_NAME process is running, attempting to stop it."

# 获取进程ID
PID=$(pgrep -f $PROCESS_NAME)

# 尝试正常终止进程
kill $PID
sleep 5 # 等待5秒以确保进程被终止

# 检查进程是否仍然存在
pgrep -f $PROCESS_NAME > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "$PROCESS_NAME process is still running, attempting to kill forcefully."
# 强制终止进程
kill -9 $PID
fi
fi

# 启动hluda-server-arm64进程
echo "Starting $PROCESS_NAME process."
./$PROCESS_NAME &

echo "$PROCESS_NAME process started."

adb push start.sh /data/local/tmp 

windows cmd

chcp 65001
adb shell
su
cd /data/local/tmp
chmod +x start.sh
./start.sh

python执行frida脚本

python执行frida脚本

参考链接

Python网络爬虫逆向之frida rpc转发案例(x物)
https://mp.weixin.qq.com/s/QfbePCOxLuL3nl9Dgy4bRA

 

原文始发于微信公众号(进击的HACK):python执行frida脚本

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年7月4日13:00:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   python执行frida脚本https://cn-sec.com/archives/2801832.html

发表评论

匿名网友 填写信息