首页 > 其他分享 >Day03 3.2 HOOK

Day03 3.2 HOOK

时间:2023-06-17 18:37:03浏览次数:38  
标签:Day03 应用程序 HOOK 3.2 tcp str frida message SecurityUtil

Day03 3.2 HOOK

【一】hook框架frida

  • Hook 框架是一种技术,用于在运行时拦截和修改应用程序的行为。

  • 通过 Hook,你可以劫持应用程序的方法调用、修改参数、篡改返回值等,以达到对应用程序的修改、增强或调试的目的

  • 常见的有:

  • Xposed Framework

    • Xposed 是一个功能强大的开源 Hook 框架,可以在不修改应用程序源代码的情况下,对应用程序进行各种修改。
    • 它允许你编写模块来拦截和修改应用程序的方法调用,修改应用程序的行为和逻辑。
  • Frida

    • Frida 是一个跨平台的动态 Hook 框架,支持安卓和其他操作系统。
    • 它提供了一个强大的 JavaScript API,可以在运行时对应用程序进行 Hook,包括方法拦截、参数修改、调用注入等。
    • Frida 可以用于安全研究、逆向工程和应用程序调试等方面。

【二】下载安装

注意:需要电脑端[电脑端要安装python解释器环境]和手机端同时安装,版本必须对应

【1】电脑端安装

  • 指定版本安装
pip install frida==16.0.1
pip install frida-tools==12.0.1
  • 安装最新版
pip install frida        # 16.0.9
pip install frida-tools  # 12.1.2
  • 正常都可以顺利安装,若安装出现错误,下载源码包安装

必须根据 :frida版本 + Python版本 + 操作系统 来选择下载响应的egg或whl文件。

https://pypi.doubanio.com/simple/frida/
pip install frida-16.0.1-cp37-abi3-macosx_10_9_x86_64.whl

【2】手机端安装 frida-server

  • 1 先查看手机架构
adb shell getprop ro.product.cpu.abi

arm64-v8a
  • 2 下载 frida-server
https://github.com/frida/frida/releases
  • 3 解压,上传到手机 /data/local/tmp/ 目录下

  • -解压得到文件,把文件上传到手机

 adb push ./今日软件/frida-server/frida-server-16.0.19-android-arm64  /data/local/tmp/
  • 4 赋予可执行权限
adb shell  # 进入手机命令行
su        # 切换为超级用
户
cd /data/local/tmp/
chmod 755 frida-server-16.0.19-android-arm64  # 加入执行权限
ls -al   # 查看权限

【三】启动并hook应用

【1】手机端启动 frida 服务端

  • 切换到手机的/data/local/tmp目录下
adb shell
su
cd /data/local/tmp
./frida-server-16.0.19-android-arm64

报错解决

方案一:重启手机
方案二:运行 adb shell setenforce 0

【2】电脑端配置

(1)配置端口转发

  • 方式一:命令行中敲
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
  • 方式二:使用python执行
import subprocess

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

(2)编写python代码,打印手机中的进程

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

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

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

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

(3)错误解决

# 没有配置端口转发
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043

【四】hook 某智赢的加密算法encodeMD5

import frida
import sys
# 连接手机设备
rdev = frida.get_remote_device()

# 包名:com.che168.autotradercloud
# 车智赢+
session = rdev.attach("车智赢+")
scr = """
Java.perform(function () {
    //找到类 反编译的首行+类名:com.autohome.ahkit.utils下的
    var SecurityUtil = Java.use("com.autohome.ahkit.utils.SecurityUtil");

    //替换类中的方法
    SecurityUtil.encodeMD5.implementation = function(str){
        console.log("参数:",str);
        var res = this.encodeMD5(str); //调用原来的函数
        console.log("返回值:",res);
        return str;
    }
});
"""

script = session.create_script(scr)

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

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

【五】Python Hook方式

  • Spawn 方式适应场景:
    • Spawn 方式是在目标应用程序启动时直接注入 Frida 的 Agent 代码
需要在应用程序启动的早期阶段进行 Hook。

需要访问和修改应用程序的内部状态
	例如应用程序的全局变量、静态变量等。

需要 Hook 应用程序的初始化过程
	以实现对应用程序的自定义初始化逻辑。

需要在应用程序的上下文中执行代码
	并与其他模块或库进行交互。
  • Attach 方式适应场景:
    • Attach 方式是在目标应用程序已经运行的过程中动态地连接并注入 Frida 的 Agent 代码
需要对已经运行的应用程序进行 Hook
	即动态地连接到正在运行的进程。

需要在应用程序运行时拦截和修改特定的方法调用。

需要实时监视和修改应用程序的行为
	例如参数修改、返回值篡改等。

需要对应用程序进行调试和分析
	以查找潜在的问题和漏洞。

【1】attach方式(手动操作)

import frida
import sys
# 连接手机设备
rdev = frida.get_remote_device()

# 包名:com.che168.autotradercloud
# 车智赢+
session = rdev.attach("车智赢+")
scr = """
Java.perform(function () {
    //找到类 反编译的首行+类名:com.autohome.ahkit.utils下的
    var SecurityUtil = Java.use("com.autohome.ahkit.utils.SecurityUtil");

    //替换类中的方法
    SecurityUtil.encodeMD5.implementation = function(str){
        console.log("参数:",str);
        var res = this.encodeMD5(str); //调用原来的函数
        console.log("返回值:",res);
        return str;
    }
});
"""

script = session.create_script(scr)

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

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

【2】spawn方式(自动重启app,适用于在应用程序启动的早期阶段进行)

import frida
import sys

rdev = frida.get_remote_device()
pid = rdev.spawn(["com.che168.autotradercloud"])
session = rdev.attach(pid)

scr = """
Java.perform(function () {
    // 包.类
    var SecurityUtil = Java.use("com.autohome.ahkit.utils.SecurityUtil");
    SecurityUtil.encodeMD5.implementation = function(str){
        console.log("明文:",str);
        var res = this.encodeMD5(str);
        console.log("md5加密结果=",res);
        return "305eb636-eb15-4e24-a29d-9fd60fbc91bf";
    }
});
"""
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】js Hook方式javaScript+终端

# 代码 hook.js
Java.perform(function () {
    // 包.类
    var SecurityUtil = Java.use("com.autohome.ahkit.utils.SecurityUtil");
    SecurityUtil.encodeMD5.implementation = function(str){
        console.log("明文:",str);
        var res = this.encodeMD5(str);
        console.log("md5加密结果=",res);
        return "305eb636-eb15-4e24-a29d-9fd60fbc91bf";
    }
});

【4】attach,先启动app,然后再在终端执行

frida -UF -l hook.js  

【5】spwan,脚本自动重启APP并进行Hook

frida -U -f com.che168.autotradercloud -l hook.js

# 注意:输入q + 再点击回车则退出

标签:Day03,应用程序,HOOK,3.2,tcp,str,frida,message,SecurityUtil
From: https://www.cnblogs.com/dream-ze/p/17488018.html

相关文章

  • Day03
    1.需要注意的点从JavaSE7即JDK7开始,switch支持字符串String类型了,同时case的标签必须为字符串常量或者字面量。在编译时,字符串实际上是利用hashCode来实现比较的从JavaSE5即JDK5开始,新增用于数组和集合的增强型for循环方法中可变参数的本质就是数组递归时,只适合小基数。......
  • 搭建发卡平台需要什么配置的服务器?103.219.30.x
    能看到这篇文章的,多数都是想要搭建自己的发卡平台,搭建发卡平台需要有源码、备案域名和服务器,今天我就给你们分享一下搭建发卡平台用什么服务器配置比较好?发卡网对服务器的稳定性和安全性的要求相对一般,如果是按照云服务器的配置来选择,建议宜高不宜低,配置越高,稳定性和安全性就越好。......
  • 服务器内存跑满是什么原因造成的 43.248.101.x
    相信大家在使用服务器的时候会有出现内存使用率比较高的情况,那接下来小编跟大家说下到底是哪些原因导致内存不足:一、应用程序池应用程序池有一个默认回收的时间,到了这个时间就会自动释放内存,这个时间一般是1740分钟,而这种程度的时间可能会导致应用程序池无法及时释放内存,从而出现内......
  • vue3:vue+nginx+php进行服务端部署的配置(nginx/1.18.0 / [email protected])
    一,开发环境中的配置:1,前端:vue的vue.config.jsconst{defineConfig}=require('@vue/cli-service')module.exports=defineConfig({transpileDependencies:true,publicPath:process.env.NODE_ENV==="production"?"./":"/&qu......
  • QGIS3.22.0+VS2019 window10编译
    首先感谢博客 济南友泉软件有限公司提供的顺序教程。博客地址:https://blog.csdn.net/qq_26221775/article/details/122792445这篇博客主要是表示编译时遇到的坑。1.一定使用vs2019进行编译。我刚开始想使用vs2017编译。因此遇到了两个坑。(1)vs2017编译qgis_cor......
  • CKS 考试题整理 (15)-镜像扫描ImagePolicyWebhook
    Contextcluster上设置了容器镜像扫描器,但尚未完全集成到cluster的配置中。完成后,容器镜像扫描器应扫描并拒绝易受攻击的镜像的使用。Task注意:你必须在cluster的master节点上完成整个考题,所有服务和文件都已被准备好并放置在该节点上。 给定一个目录/etc/kubernetes......
  • IP段是什么意思?杭州高防服务器103.219.30.X
    IP段就是网段,一般指一个计算机网络中使用同一物理层设备(传输介质,中继器,集线器等)能够直接通讯的那一部分。例如,从103.219.30.1到103.219.30.255这之间就是一个网段。在同一网段,要求网络标识相同。网络标识就是用IP的二进制与子网掩码的二进制数据作'与'运算(可用WINDOWS计算器算二进......
  • 服务器该如何处理大数据 45.113.203.x
    当大量设备连接服务器,大量数据上传到服务器,服务器要如何提高处理能力,来处理这些数据,数据源为设备数据。服务器如何处理数据可以由以下几个点考虑:1、排队列处理机制数据涌入服务器,但还是能够区分先后顺序,按照数据传输时序将数据摘要排入队列,然后服务器按队列依次进行处理。2、数据分......
  • CSGO服务器租用首选杭州BGP高防103.219.30.x
    Hello,everyone今天我不打算讲游戏攻略了,我了解到很多想要自己搭建服务器的小伙伴在服务器这里遇到颈瓶了,所以我来给大家分享一下搭建CSGO社区服所需的服务器配置,希望可以帮助到你们首先选择合适的服务器配置,第一个需要考虑的就是游戏玩家地区分布情况,我很多玩CSGO的朋友都来自五湖......
  • RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2 新增解压缩工具类ZipHelper
    在项目对文件进行解压缩是非常常用的功能,对文件进行压缩存储或传输可以节省流量与空间。压缩文件的格式与方法都比较多,比较常用的国际标准是zip格式。压缩与解压缩的方法也很多,在.NET2.0开始,在System.IO.Compression中微软已经给我们提供了解压缩的方法GZipStream。对于GZipSt......