首页 > 其他分享 >app逆向之frida的相关配置

app逆向之frida的相关配置

时间:2023-04-26 16:12:13浏览次数:32  
标签:逆向 app rdev hook frida message UpdateDialog

app逆向之frida的相关配置

1.电脑端配置

1.在电脑上安装frida相关的模块

1.在电脑上安装一个python3.7的系统解释器
2.创建一个项目,基于python3.7的系统创建一个虚拟环境
3.安装模块 
          pip install frida == 16.0.1
          pip install frida-tools == 12.0.1

2.手机端配置

1.下载frida-server:网址:https://github.com/frida/frida/releases
    # adb 查看手机的架构: adb shell getprop ro.product.cpu.abi
    # 下载frida-server 的版本和电脑端frida的版本要一致
    # 注:解压后找到解压后的文件,不是文件夹 frida-server-16.0.1-апdroid-аrm 64
    # 可以对该文件重命名
2.上传到手机
    adb push xxxxx /data/local/tmp/
3.如何查看上传到手机后的文件
    >>> adb shell
    >>> su     # 获取root权限
    >>> cd /data/local/tmp/
    >>> ls
4.赋予可执行权限
    >>> chmod 755 上传文件名

3.启动+编写hook脚本+运行

1.端口转发

      >>> аdb forward tcp:27042 tср 27042
      >>> adb forward tср:27043 tср 27043

注:每次运行端口转发这样会有些繁琐,我们可以编写一个固定的脚本,用python代码来执行以上的两条命令

import subprocess
subprocess.getoutput("adb forward tcp:27042 tcp:27042")
subprocess.getoutput("adb forward tcp:27043 tcp:27043")

编写hook脚本+运行

1.固定的脚本+获取进程

# 枚举手机上的所有进程 & 前台进程
import frida

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

# 枚举所有的进程
# processes = rdev.enumerate_processes()
# for process in processes:
#     print(process)

# 获取在前台运行的APP
front_app = rdev.get_frontmost_application()
print(front_app)

2.固定的脚本,只需修改内部的hook脚本就OK啦

1.手动app启动

#hook模板(基于attach,手动app启动)

import frida
import sys
# 1.连接手机设备
rdev = frida.get_remote_device()
# 2.hook手机中的哪个App,(app的包名字)
session = rdev.attach("车智赢+")
scr = """
Java.perform(function(){
    //包,类
    var UserModel = Java.use("com.che168.autotradercloud.user.model.UserModel")
    //hook替换
    UserModel.loginByPassword.implementation = function(str,str2,str3,responseCallback){
    console.log("请求来了....");
    console.log(str2,str3);
    this.loginByPassword(str,str2,str3,responseCallback);
    } 
});       
"""
script = session.create_script(scr)


def on_message(message, data):
    print(message, data)


script.on("message", on_message)
script.load()
sys.stdin.read()


# 先启动app,后运行hook脚本

2.自动app启动

# spawn这种模式是在启动hook脚本的时候自动开启App
import frida
import sys

rdev = frida.get_remote_device()
pid = rdev.spawn(["com.hupu.shihuo"])
session = rdev.attach(pid)
scr = """
Java.perform(function(){
    //包,类  com.azhon.appupdate.dialog.UpdateDialog
    var UpdateDialog = Java.use("com.azhon.appupdate.dialog.UpdateDialog")
   
    //hook替换
    UpdateDialog.show.implementation = function(){
    console.log("++++++++show来啦++++++++++++++");
    //this.show();
    } 
   
});       
"""
script = session.create_script(scr)


def on_message(message, data):
    print(message, data)


script.on("message", on_message)
script.load()
rdev.resume(pid)
sys.stdin.read()

3.javascript+终端命令

Java.perform(function(){
    //包,类  com.azhon.appupdate.dialog.UpdateDialog
    var UpdateDialog = Java.use("com.azhon.appupdate.dialog.UpdateDialog")
   
    //hook替换
    UpdateDialog.show.implementation = function(){
    console.log("++++++++show来啦++++++++++++++");
    //this.show();
    } 
});

运行js的吗命令

attach,先启动app,然后再在终端运行

>>> frida -UF -l xxxx.js

spwan 脚本自动重启app并进行hook

>>> frida -U -f com.che168.autotradercloud -l xxx.js

标签:逆向,app,rdev,hook,frida,message,UpdateDialog
From: https://www.cnblogs.com/pdxt666/p/17356391.html

相关文章

  • Android多进程时Application初始化问题
    原文地址blog.csdn.net之前在做项目时,遇到一个大坑,就是我的APP的Application的onCreate方法,竟然执行了好几次,这就导致我在onCreate里面做了一些初始化的操作被重复执行了,导致奇怪的bug产生。后来冷静下来分析一下,才发现有一些第三方组件,比如百度推送之类的,它们是单独开了一......
  • Correct the classpath of your application so that it contains a single, compatib
    1.背景有时候引入包有冲突,比如在Maven项目中的不同模块多次重复引入等这里遇到的问题是重复映入了如下包:<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.0-RELEASE</vers......
  • uniapp 动态修改 css 样式
    css使用var注入变量,达到设置动态样式的需求声明css变量时,变量名前面要加两根连词线(--);变量使用kebab-case命名方式,即--header-color而不是--headerColor;变量名大小写敏感,--header-color和--Header-Color是两个不同的变量名;var()函数用于读取变量。接下来,看......
  • uniapp微信小程序支付
    完全依赖后台接口实现微信小程序只能用微信支付,不用考虑支付宝接口submit(){varself=this;//console.log(this.price,this.payType)varmoney=100000;varamount=this.price;......
  • vue3 uniapp Uncaught (in promise) TypeError: Cannot read properties of null (rea
    引发这个问题是在三级页面中使用uni.navigateBack({delta:2})返回到一级页面再重一级页面进入二级页面二级页面中引用的组件引发的emitsOptions报错//原因:我在二级页面中的组件使用ts的emit写法引发的报错constemit=defineEmits<{(e:'confirm',contents:string):......
  • uniapp自带的提示窗口
    一、成功提示弹窗uni.showToast({title:'成功提示',//将值设置为success或者直接不用写icon这个参数icon:'success',//显示持续时间为2秒duration:2000})二、加载提示弹窗//前端数据请求时,显示加载提示弹框uni.showLoading({title:'加......
  • uniapp页面中的按钮使用分享功能
    https://www.codenong.com/cs109827730/......
  • uniapp微信小程序直播
    https://developers.weixin.qq.com/miniprogram/dev/platform-capabilities/industry/liveplayer/live-player-plugin.htmlhttps://docs.qq.com/doc/DZHhzV0FiYXRQV01i不能用<live-player>,因为live-player的src要赋值rtmp格式流视频文件,而<navigator>对应的小程序插件只需要从接......
  • 获取指定文件AppSettings
    //文件路径privatestaticstringConfigPath=AppDomain.CurrentDomain.BaseDirectory+@"\XXX.config";privatestaticAppSettingsSection_sviewFrameSetting;publicstaticstringOnlineViewService=GetAppSettings(&qu......
  • 手机app解包
    1.将在网上下载的手机软件放入apps2.启动3.查看结果urls里是网址......