如何使用Frid获取Java方法的返回值

2024-05-20 12:28:00 发布

您现在位置:Python中文网/ 问答频道 /正文

TLDR我希望使用Frida来调用Android应用程序中未使用的方法并获取其值。目前,我的脚本输出没有任何回报。在

Android应用程序代码:

package securisec.com.methods;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public static String strings(){
        return "This is a string method";
    }

}

如您所见,从未使用strings方法。我希望能够使用Frida调用这个方法并获得返回值。在

这是我的python脚本,它不起作用。在

^{pr2}$

Tags: 方法import脚本应用程序public程序代码androidbundle
1条回答
网友
1楼 · 发布于 2024-05-20 12:28:00

你不需要创建新的实例,你有几个打字错误,但总的来说,你似乎明白了这一点。在

如果方法存在于

Object.getOwnPropertyNames(Java.use('securisec.com.methods.MainActivity').__proto__).join('\n\t')

而编译器没有排除它,下面的代码应该做的工作

^{pr2}$

我喜欢保持干净的风格:)

function Main() {
    var retVal = Java.use("securisec.com.methods.MainActivity")["strings"]();
    console.log("retVal", retVal);
}
Java.perform(Main);

您也可以使用REPL进行测试

$ frida -U com.app -e 'console.log(Java.use("securisec.com.methods.MainActivity")["strings"]())'  no-pause

相关问题 更多 >