首页 > 其他分享 >jadx安装与配置,hook框架frida

jadx安装与配置,hook框架frida

时间:2023-07-24 11:46:36浏览次数:43  
标签:rdev hook jadx frida message UpdateDialog com

jadx

1.下载jadx反编译工具,安装(解压即用)

# 下载地址:https://github.com/skylot/jadx/releases 

2.打开jadx反编译工具:

3.抓包与代码定位

3.1 抓包

  # 1.安装apk
  # 2.打开chaarles,打开app,定位到登录请求

3.2.反编译定位代码的位置

  # 抓包
  # 想去反编译代码中的位置
  # 搜素关键字   
    -优先考虑地址
    - pwd不能直接搜,java中字符串是双引号引起来的
    -(“pwd”)

hook 框架

1.hook介绍

2.下载与安装

注意:

-在电脑端(写hook函数----需要安装软件)----》需要有python的解释器环境(

需要安装两个模块

pip install frdia==16.0.19

pip install frida-tools==12.1.2

  # 有可能安装会报错,需要下载whl,egg文件安装(用源码包安装)
  #  需要根据:frdia+python版本+操作系统来选择对应的egg或whl文件
  # htts://pypi.doubanio.com/simple/frdia/
  # pip install xx.whl/egg

-在手机(执行某个App的某个函数----需要运行服务)(所以手机也需要安装16.0.9)

注意注意:在手机上的服务版本要和电脑端的版本一致,否则不行

手机端安装步骤

# 1.官网下载frida-server运行在手机上
# 2.下载后解压,把文件传入到手机上
命令: adb push xxxx /data/local/tmp/
# 3.给上传的文件加上执行权限
# 4.在手机端, 启动frdia-server(卡主就是已经启动了)
./frdia-server-16.0.9
 

下载地址

hook启动

frida查看手机端所有的进程和前台进程

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脚本

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


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


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

3.python的hook方式

#spawn 方式:在目标和应用程序启动时直接注入 ,Frida的Agent 代码
#Attach方式: 在目标应用程序已经启动中动态注入

# 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()

js的hook方式

############################################################
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的hook代码
//运行命令
//attach,先启动app,然后再在终端运行
//
// >>> frida -UF -l xxxx.js
//
// spwan 脚本自动重启app并进行hook
//
// >>> frida -U -f com.che168.autotradercloud -l xxx.js
// 注意:输入q+再点击回车则退出

标签:rdev,hook,jadx,frida,message,UpdateDialog,com
From: https://www.cnblogs.com/pdxt666/p/17574238.html

相关文章

  • Coding添加WebHook
    一、新增部署公钥二、同步代码三、更新目录权限四、创建WebHook #!/bin/bashecho""#输出当前时间date--date='0daysago'"+%Y-%m-%d%H:%M:%S"echo"Start"#git项目路径gitPath="/www/wwwroot/*****"#git网址gitHttp="[email protected]......
  • python frida 怎么启动app
    使用Frida启动Python应用程序Frida是一款强大的动态分析工具,可以用于在运行时修改和监视应用程序。它是一个跨平台的工具,支持多种操作系统和应用程序。在本文中,我们将讨论如何使用Frida来启动Python应用程序,并解决一个实际的问题。问题描述假设我们有一个Python应用程序,它需要与......
  • git commit 时报错:husky - pre-commit hook exited with code 1 (error)
    在使用git进行commit时出现错误:husky-pre-commithookexitedwithcode1(error)。方式一chatgpt的回答是:报错信息“husky-pre-commithookexitedwithcode1(error)”表示在执行Git提交操作时,pre-commit钩子脚本返回了非零的退出码,表示出现了错误。这种......
  • day08 8.4 Hook重载方法补充
    【一】什么是重载名字一样,但是参数不一样【1】重载介绍在Java中,重载(Overloading)指的是在同一个类中可以定义多个方法(函数)具有相同的名称,但参数列表不同的情况。换句话说,重载允许在同一个类中使用相同的方法名执行不同的操作,提供了更多的灵活性。【2】重载的规则如下:......
  • webhook
    作用范围kube-apiserver请求处理全流程webhook可以作用于准入。准入控制回调时,MutatingAdmissionWebhook可以修改对象,ValidatingAdmissionWebhook可以拒绝请求。参考资料深入理解KubernetesAdmissionWebhook......
  • vue3 为什么使用 hooks?
    目的为了解决在组件中共享逻辑和状态的问题。 hooks提供了一种更简洁和直观的方式来共享逻辑和状态。vue3中的hooks是基于函数的组件模型,通过在函数组件内部使用特定的hook函数来实现。每个hook函数都有特定的用途,例如:useState用于创建和管理状态,useEffect用于......
  • 全新版FRIDA与安卓 应用安全与逆向实战宝典
    第1章打造安卓逆向专用PC和手机环境10节|72分钟工欲善其事,必先利其器。在本章中将会介绍笔者在`Android`逆向工作中所用到的一些环境配置,包括主机和测试机的一些基础环境。一个良好的工作系统体系能给工作人员在工作过程中带来很多便利,让大家不必因为环境问题焦头烂额。...第2......
  • frida hook overloads
    同时hook多个重载的函数functionhookOverloads(className,func,check_index=0,check_text="",trace=false){vartoHook;Java.perform(()=>{toHook=Java.use(className)[func];varoverloads=toHook.overloads;varoverloadCount=overloads.lengt......
  • frida hook Toast
    //获得Toast组件varToast=Java.use("android.widget.Toast");varmakeText=Toast.makeText;varString=Java.use("java.lang.String");//函数重载,设置参数类型makeText.overload("android.content.Context","java.lang.Cha......
  • React中编写操作树形数据的自定义Hook
    什么是Hookhook即为钩子,是一种特殊的函数,它可以让你在函数式组件中使用一些react特性,目前在react中常用的hook有以下几类useState:用于在函数组件中定义和使用状态(state)。useEffect:用于在函数组件中处理副作用,也可以模拟react生命周期useContext:用于在函......