首页 > 其他分享 >逆向 | frida android hook 入门总结

逆向 | frida android hook 入门总结

时间:2022-09-07 13:57:27浏览次数:73  
标签:Log send hook device frida android

逆向 | frida android hook 入门总结

最近在备课,整理到这一块儿了,顺带就把以前的东西整理一下。
比较好的参考文章:

https://www.jianshu.com/p/0fa6138fafc9  # hook重载函数的几种写法
https://blog.csdn.net/zhy025907/article/details/89512096  # hook方法汇总***
https://www.52pojie.cn/thread-1128884-1-1.html   # frida入门总结
https://frida.re/docs/examples/android/    # 官方文档

自己画的原理图,差不多是这么一回事儿,可能不够准确,欢迎师傅们修正:
image
image

安装环境

我是懒狗,直接截图自己的ppt了
image
image
image
image
image
image

测试代码:

随便写个helloworld的apk。然后里面新建个线程不停log.d

hook用的js:

Java.perform(function(){  
    var Log = Java.use('android.util.Log'); //获得Log类
    send(Log);  
    Log.d("Mz1", 'test');   // 直接调用这个函数
    Log.d.overload('java.lang.String', 'java.lang.String').implementation = function(tag, s){
    	send(tag + s);
    	var result = this.d("Mz1", "hook!");
    	return result;
    }
});

用python注入:

import frida  #导入frida模块
import sys    #导入sys模块

# js 代码
jscode = """
Java.perform(function(){  
    var Log = Java.use('android.util.Log'); //获得Log类
    send(Log);  
    Log.d("Mz1", 'test');   // 直接调用这个函数
    Log.d.overload('java.lang.String', 'java.lang.String').implementation = function(tag, s){
    	send(tag + s);
    	var result = this.d("Mz1", "hook!");
    	return result;
    }
});
"""

def on_message(message,data): #js中执行send函数后要回调的函数
    print(message)
    


# 得到设备并劫持进程com.mz.helloworld
#(开始用get_usb_device函数用来获取设备,但是一直报错找不到设备,改用get_remote_device函数即可解决这个问题)
device = frida.get_remote_device()

# attach方式启动
# process = device.attach('com.mz.helloworld')   # 这个方法在模拟器上有点问题

# 或者spawn方式启动:
pid = device.spawn(["com.mz.helloworld"])
device.resume(pid)
process = device.attach(pid)


 
script = process.create_script(jscode) #创建js脚本
script.on('message',on_message) #加载回调函数,也就是js中执行send函数规定要执行的python函数
script.load() #加载脚本
sys.stdin.read()

标签:Log,send,hook,device,frida,android
From: https://www.cnblogs.com/Mz1-rc/p/16665132.html

相关文章

  • Mac 下反编译Android APK
    准备工作:安装ApkTool、dex2jar、JD-GUI安装ApkTool1、下载ApkTool。大家可以从 https://ibotpeaches.github.io/Apktool/install/ 上下载ApkTool2、安装ApkTool(1)将......
  • react hook入门
    useState的使用  代码constSearch=(props:any)=>{//useState()采用一个初始state作为参数,也可以像这样使用一个空字符串。//使用state进行交互,......
  • Android添加系统服务
    基于android12添加服务frameworks/base/services/java/com/android/server/SystemServer.java在这两个函数中都可以添加:startCoreServices()startOtherServices()......
  • Android获取Permission
    在AndroidManifest中加入需要获取的权限<uses-permissionandroid:name="android.permission.INTERNET"/><!--检查网络可用性--><uses-permissionandroid:name="an......
  • Android技术分享| Activity 过渡动画 — 让切换更加炫酷
    介绍在android5.0以上版本中,google为我们提供了几种activity切换的过渡动画,目的是为了让activity切换转场更加美观,而在android5.0之前的activity切换显得生硬......
  • Android系统属性-Settings.system和SystemProperties
    Android系统属性-Settings.system和SystemPropertiesJava代码--应用层方法:SystemProperties.get或者SystemProperties.set如果属性名称以“ro.”开头,那么这个属性被视......
  • React Hooks { useState, useEffect }
    ReactHooks{useState,useEffect}使用状态UseState钩子是在React16.8中引入的。它允许您跟踪状态功能组件。你可能会问自己什么状态?好吧,状态通常是指组件中的动......
  • 3【Android 12】DisplayArea层级结构
    1DisplayArea类的继承关系DisplayArea类的继承关系,之前已经分析过,这里用一张简单的类图总结:2DisplayArea层级结构的生成既然DisplayContent是作为其代表的屏幕的Disp......
  • Android.mk 文件编写
    Android.mk以下内容通常够用,如需添加其他变量,百度查看LOCAL_PATH:=$(callmy-dir)//源码所在目录,写法固定include$(CLEAR_VARS)//清除除外LOCAL_PATH变量以外的其......
  • android | adb找不到夜神模拟器 | 查看android手机cpu架构
    adb找不到夜神模拟器|查看android手机cpu架构找不到模拟器参考:https://www.jianshu.com/p/8af043534fc4先手动建立连接就行:然后查看手机的cpu架构:这条是android特有......