frida 基础使用(2)– java 层 hook 指定函数
本文最后更新于 939 天前,其中的信息可能已经有所发展或是发生改变。

hook 方式有俩种,我们需要结合需求来使用

运行时 hook

顾名思义,就是在 应用运行的时候 通过 frida-server 对 app 进程进行干预

命令如下:

frida -U {package_name}

我的手机很神奇,package_name 会告诉我找不到进程,反而 应用名可以。所以主要还是 先用

frida-ps -U

确认一下frida在手机中 对应进程pid的是 package_name 还是 app_name

hook 某个函数

当用上面的命令 attach 成功之后,会进入命令行,可以在命令行在 写 js 代码执行

比如我们想 hook 一个 java 层的函数

我们工程 MainActivity 里的 frida_1 和 frida_static_1 ,下面的就是 执行 hook 的 js 脚本

Java.perform(function(){
  
const Activity = Java.use('android.app.Activity');
  Activity.onResume.implementation = function () {
    send('onResume() got called! Let\'s call the original implementation');
    this.onResume();
  };



const mac = Java.use('com.jiatu.frida_test.MainActivity');
  mac.frida_static_1.implementation = function (context,text) {
    console.log('frida_static_1 hook')
    this.frida_static_1(context,"ccc");
  };

  mac.frida_1.implementation = function (text) {
    console.log('frida_1 hook')
    this.frida_1("cccbb1");
  };

});

hook 某个成员变量

  

Java.perform(function(){

	   Java.choose("com.jiatu.frida_test.MainActivity", {
            onMatch: function (instance) {
                console.log(instance.s.value);
                instance.s.value= '110'
            }, onComplete: function () {

            }
        });

});

hook 静态变量


Java.perform(function(){
const mac = Java.use('com.jiatu.frida_test.MainActivity');
mac.static_c.value = 'hookx'

});


启动时hook

frida -U -f {package_name} 


本章对应的 android 工程代码如下


public class MainActivity extends AppCompatActivity {

    String s = "key";
    static String static_c = "xxkey";
    int s1 = 100;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        findViewById(R.id.frida_1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                frida_1(static_c);
            }
        });
        findViewById(R.id.frida_static_1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                frida_static_1(MainActivity.this, "xxx2");
            }
        });


    }

    public void xx1() {
        Toast.makeText(this, "xx1", Toast.LENGTH_SHORT).show();
    }

    private void frida_1(String test) {
        Toast.makeText(this, test, Toast.LENGTH_SHORT).show();
    }

    private static void frida_static_1(Context context, String test) {
        Toast.makeText(context, test, Toast.LENGTH_SHORT).show();
    }

}

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇