能力值:
( LV2,RANK:10 )
2 楼
哎,都没人答啊~! 自己写吧。 就是 没考虑 classload
能力值:
( LV5,RANK:60 )
3 楼
信息太少了,看看能不能成功findclass->你想修改的方法所在的类,如果findclass都返回空,就是你选择的dexloader错了
能力值:
( LV2,RANK:10 )
4 楼
问题解决了吗
能力值:
( LV2,RANK:10 )
5 楼
原来做过个hook qq动态加载的dex
XposedHelpers.findAndHookMethod(
"com.tencent.mobileqq.app.message.BaseMessageProcessor",
lpparam.classLoader, "a", String.class, boolean.class,
List.class, boolean.class, boolean.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param)
throws Throwable {
super.beforeHookedMethod(param);
if (!isInit) {
hookConitune(param.thisObject.getClass()
.getClassLoader());
isInit = true;
}
}
});
}
private boolean isInit = false;
private void hookConitune(ClassLoader clsLoader) {
Object[] o = new Object[1];
XposedHelpers.findAndHookMethod(
"com.tencent.mobileqq.troop.data.TroopMessageProcessor",
clsLoader, "a", int.class, o.getClass(), new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param)
throws Throwable {
super.beforeHookedMethod(param);
}
@Override
protected void afterHookedMethod(MethodHookParam param)
throws Throwable {
super.afterHookedMethod(param);
}
});
}
TroopMessageProcessor这个类就是动态dex加载的。逻辑就是dex动态加载后,出发某个方法后然后继续hook应该就能实现你想要的逻辑
能力值:
( LV2,RANK:10 )
6 楼
你这个思路让我豁然开朗,可惜按这个思路测试了下,hookConitune里多次抛出异常,findAndHookMethod一直没找到对应的类,可以确定对应的dex已经动态加载进去了,通过DexClassLoader加载的,是不是和lpparam.classLoader不是同一个classLoader啊。
我在想是否可以hook一下DexClassLoader的loadClass函数,但是尝试了下,失败了(提示找不到loadClass这个函数)
public class xposedZygoteHook implements IXposedHookZygoteInit {
public void initZygote(IXposedHookZygoteInit.StartupParam lpparam) throws Throwable{
final Class<?> pms = XposedHelpers.findClass("dalvik.system.BaseDexClassLoader", null);
XposedHelpers.findAndHookMethod(pms, "loadClass", String.class, new XC_MethodHook()
{ @Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
XposedBridge.log(param.args[0].toString());
}
});
}
}
能力值:
( LV2,RANK:10 )
7 楼
你看continue里面的classload用的是thisobj和lparam的classloader是不一样的
能力值:
( LV2,RANK:10 )
8 楼
findAndHookMethod("mtopsdk.security.a", lpparam.classLoader, "getMtopApiWBSign",HashMap.class,String.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
if (!isInit){
hookConitune(param.thisObject.getClass().getClassLoader());
isInit = true;
XposedBridge.log("Hook Ok!");
}
}
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
}
});
boolean isInit = false;
private void hookConitune(ClassLoader clsLoader) {
findAndHookMethod(
"com.taobao.login4android.security.LoginGetAppKeyFromSecurity",
clsLoader, "getAppKey", int.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param)
throws Throwable {
super.beforeHookedMethod(param);
}
@Override
protected void afterHookedMethod(MethodHookParam param)
throws Throwable {
super.afterHookedMethod(param);
XposedBridge.log(param.getResult().toString());
}
});
}
还是不行,多次操作以后,所有hookConitune里输出的都还是异常
上传的附件:
能力值:
( LV2,RANK:10 )
9 楼
搞定了,hook了它的自定义加载函数,不过没法通用,得具体包具体分析。
感谢楼主的帖子,感谢@yepengasm热心提供帮助
能力值:
( LV2,RANK:10 )
10 楼
不错,学习了
能力值:
( LV2,RANK:10 )
11 楼
还是没搞定,依然class not found.
按照你说的,找到加载函数.在某class中发现了这样的语句:
DexClassLoader v1 = new DexClassLoader(...)
按照这个方法
https://github.com/rednaga/DexHook/blob/master/app/src/main/java/asia/malware/dexhook/DexHook.java
代码如下:
findAndHookConstructor("dalvik.system.BaseDexClassLoader", lpparam.classLoader, String.class, File.class, String.class, ClassLoader.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
//Logger.printstack();
Logger.log((String) param.args[0]);
}
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
//Logger.printstack();
//Logger.log("1111111111");
//hookConitune(param.thisObject.getClass().getClassLoader());
//Logger.log("222222222");
//hookConitune((ClassLoader) param.args[3]);
Logger.log("3333333");
hookConitune((ClassLoader) param.getResult());
}
}); 也就是说在构造函数结束之后,我能找到的三个classloader都试了
依然class not found。
应该怎么找到正确的classloader呢,望高人指点。
能力值:
( LV2,RANK:10 )
12 楼
这个回帖时间跨度是相当的大
能力值:
( LV2,RANK:10 )
13 楼
多谢,多谢,我通过您说的方法解决了。
能力值:
( LV2,RANK:10 )
14 楼
谁有好的方案可以处理的?求教
能力值:
( LV2,RANK:10 )
15 楼
怎么解决的 ?
能力值:
( LV2,RANK:10 )
16 楼
golyke
搞定了,hook了它的自定义加载函数,不过没法通用,得具体包具体分析。
感谢楼主的帖子,感谢@yepengasm热心提供帮助
请问一下tb具体思路还有吗