frida hook Toast

简介: 牙叔教程 简单易懂

目标


hook安卓的Toast内容, 修改为牙叔教程


环境


雷电模拟器Android版本: 7.1.2


Android Studio版本: 4.1.2


流程


  1. 创建安卓app, 安装到雷电模拟器
  2. 执行frida的hook命令, 修改Toast内容


代码讲解


1. 安卓代码, 就一个Toast命令, 内容为牙叔教程
package com.yashu.aaaaaaaaaaaaaaaaaaaaaa;
public class MainActivity extends AppCompatActivity {
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Toast.makeText(getApplicationContext(), "牙叔教程", Toast.LENGTH_SHORT).show();
  }
}


2. 启动模拟器上的服务
adb shell
cd /data/local/tmp
ls
./frida-server-15.1.1-android-x86


3. 打开当前目录的cmd窗口
start .
cmd


4. 执行hook
frida -U -f com.yashu.aaaaaaaaaaaaaaaaaaaaaa --no-pause -l hook.js


5. hook.js


Java.perform(function () {
  // hook类: MainActivity
  var MainActivity = Java.use("com.yashu.aaaaaaaaaaaaaaaaaaaaaa.MainActivity");
  // hook方法: MainActivity.onCreate
  MainActivity.onCreate.implementation = function (savedInstanceState) {
    console.log("enter onCreate");
    // 不打断程序, 该执行的还要执行
    // 执行this.onCreate, 且传参
    this.onCreate(savedInstanceState);
  };
  // 获得Toast组件
  var Toast = Java.use("android.widget.Toast");
  var makeText = Toast.makeText;
  var String = Java.use("java.lang.String");
  // 函数重载, 设置参数类型
  makeText.overload("android.content.Context", "java.lang.CharSequence", "int").implementation = function (
    context,
    content,
    time
  ) {
    console.log("修改toast内容");
    // 设置字符串重复次数
    var content = "牙叔教程 超级棒棒\n".repeat(10);
    // 实例化字符串
    var hookContent = String.$new(content);
    // 可以hook, 但是不能打断原先的程序, 原来该做什么, 还要继续做下去
    return this.makeText(context, hookContent, time);
  };
});


6. 退出frida
ctrl c
quit


参考

frida的用法--Hook Java代码篇

名人名言

思路是最重要的, 其他的百度, bing, stackoverflow, 安卓文档, autojs文档, 最后才是群里问问

--- 牙叔教程


声明

部分内容来自网络

本教程仅用于学习, 禁止用于其他用途


相关文章
|
JavaScript Shell Android开发
安装使用Frida在Android上进行hook
我们对Android应用进行hook最常用的就是Xposed,它相对来说更加完善,而且有强大的社区和丰富的插件。而Frida则于Xposed不同,它是一款轻量级的Hook框架,可用于多平台,相同的是它依然需要root环境。本文就以Android为例来详细说说如何安装并使用它。
578 0
|
3月前
|
Android开发
Android Studio: 解决Gradle sync failed 错误
本文介绍了解决Android Studio中出现的Gradle同步失败错误的步骤,包括从`gradle-wrapper.properties`文件中获取Gradle的下载链接,手动下载Gradle压缩包,并替换默认下载路径中的临时文件,然后重新触发Android Studio的"Try Again"来完成同步。
1363 0
Android Studio: 解决Gradle sync failed 错误
|
11月前
|
网络协议 Android开发 虚拟化
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
104 0
Android Studio无法运行程序调试程序出现Unable to connect to ADB.Check the Event Log for possible issues.Verify th
|
Android开发
autojs-Hook按钮点击事件
牙叔教程 简单易懂
578 0
|
算法 Java 数据安全/隐私保护
frida hook native层巧解Android逆向题
frida hook native层巧解Android逆向题
安装APK时弹窗提示“Detected problems with app native libraries”
安装APK时弹窗提示“Detected problems with app native libraries”
141 0
|
Java Android开发
Android Hook告诉你 如何启动未注册的Activity
Android Hook告诉你 如何启动未注册的Activity
1221 3
Android Hook告诉你 如何启动未注册的Activity
|
iOS开发
Xcode警告消除 ios WKWebView Could not signal service com.apple.WebKit.WebContent
Xcode警告消除 ios WKWebView Could not signal service com.apple.WebKit.WebContent
849 0
|
Ubuntu Java Android开发
Android插件化开发之Hook StartActivity方法(2)
Android插件化开发之Hook StartActivity方法(2)
224 0
Android插件化开发之Hook StartActivity方法(2)
|
Java Android开发 Spring
Android插件化开发之Hook StartActivity方法(1)
Android插件化开发之Hook StartActivity方法(1)
240 0
Android插件化开发之Hook StartActivity方法(1)