Xposed如何对String的构造函数进行hook
本帖最后由 苏紫方璇 于 2020-3-15 16:02 编辑如题,我想hook String类的一个构造函数,看文档说用findAndHookConstructor这个函数来hook,但是测试无效,求问该怎么写才可以hook到。
测试的目标代码
```
package com.suzi.xposedtest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import java.io.UnsupportedEncodingException;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
byte bb[]={'a','b','c','e','f'};
try {
String aa= new String(bb,"UTF-8");
Toast.makeText(this,aa,Toast.LENGTH_LONG).show();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
}
```
我需要hook这里的public String(byte bytes[], String charsetName)
我使用的hook代码
```
package com.suzi.xposedtest;
import android.util.Log;
import de.robv.android.xposed.IXposedHookLoadPackage;
import de.robv.android.xposed.XC_MethodHook;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public class HookMain implements IXposedHookLoadPackage {
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
if(!lpparam.packageName.equals("com.suzi.xposedtest")) return;
XposedHelpers.findAndHookConstructor("java.lang.String",lpparam.classLoader, byte[].class, String.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
Log.i("szfx","hook");
}
});
}
}
``` public String(byte bytes[], String charsetName)
是我眼瞎了吗,哪里有这个 十一七 发表于 2020-3-15 15:33
public String(byte bytes[], String charsetName)
是我眼瞎了吗,哪里有这个
就是这句String aa= new String(bb,"UTF-8"); 函数内部的变量xp frida都Hook不了的吧。。 看起来似乎并没有错误,可有报什么错误? 一夜梦惊人 发表于 2020-3-15 15:50
看起来似乎并没有错误,可有报什么错误?
没报错,就是hook不了 十一七 发表于 2020-3-15 15:49
函数内部的变量xp frida都Hook不了的吧。。
没想hook变量,这里应该是调用的String的构造函数public String(byte bytes[], String charsetName),我是想hook这个的。String类的方法我试了是可以的,构造函数却不行,不知道是代码写的问题还是手机装的xposed有问题(手机上是安卓9+EdXposed Sandhook0.4.6.1) 苏紫方璇 发表于 2020-3-15 15:54
没报错,就是hook不了
我看了一下xposed源码,应该是可以的,只不过正想回复时发现你是使用的sandhook,这个我就不太了解了,你可以自己动手调试一下看下是哪里没有搞定 苏紫方璇 发表于 2020-3-15 15:54
没报错,就是hook不了
个人认为,应该是class_linker上出现了一点问题,毕竟string和其他类不一样,他是有着属于自己的c++类的 一夜梦惊人 发表于 2020-3-15 21:51
个人认为,应该是class_linker上出现了一点问题,毕竟string和其他类不一样,他是有着属于自己的c++类的
突然发现我还是看大佬您的教程学的xposed,安卓方面我是完完全全的小白,说的深了我也听不懂。我这里用mumu模拟器装了原版的xposed测试了下,也hook不到。我看了下findAndHookConstructor的代码,他内部是使用了findConstructorExact和XposedBridge.hookMethod,我试了下,find貌似是能找到类的。我现在想确定一下,这种情况是xposed钩不了这种特殊的,还是我代码的问题
页:
[1]
2