能力值:
( LV5,RANK:70 )
|
-
-
2 楼
既然APP被加固了,首先就是脱壳或者是解密,脱完壳,真正的程序还原了才好接下来分析。xposed模块只能hook java层,一般用Substrate,可以通过hook来过反调试,只有理清了逻辑才好接下来使用Hook
|
能力值:
(RANK:350 )
|
-
-
3 楼
楼上说的不错,不过,有时候有些App只是ClassLoader被壳换了,这个时候,选对ClassLoader就可以了。比如这样:
public EncryptHook(ClassLoader cl) { super();
XposedBridge.log("Now hooking........"); try { clzStubApp = (Class<?>) XposedHelpers.findClass("com.qihoo.util.StubApplication", cl); XposedHelpers.findAndHookMethod(clzStubApp, "getNewAppInstance", Context.class, new XC_MethodHook() {
@Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { Context ctx = (Context) param.args[0]; ClassLoader classLoader = ctx.getClassLoader();
Class<?> clzA = (Class<?>) XposedHelpers.findClass("com.xxx.sdk.encrypt.a", classLoader); XposedHelpers.findAndHookMethod(clzA, "a", byte[].class, new EncryptAMethod()); super.afterHookedMethod(param); } }); } catch (Exception e) { e.printStackTrace(); } }
public static class EncryptAMethod extends XC_MethodHook {
@Override protected void afterHookedMethod(MethodHookParam param) throws Throwable { byte[] v0 = (byte[]) param.args[0]; String ret = (String) param.getResult();
CommLog.e(TAG, "v0: " + Comm.bytesToHexString(v0, v0.length)); CommLog.e(TAG, "ret: " + ret); super.afterHookedMethod(param); } }
|
能力值:
( LV2,RANK:15 )
|
-
-
4 楼
非虫大大,就是我专门做了个插件去hook我弄的一个例子,这时候可以hook成功,可以达到修改例子中某个函数的返回值,但是当我把这个例子用360加固后,就不能hook成功了,然后我又试了下,把插件本身加固,而例子没加固,这时候同样也不能hook成功。这是什么原因呢?
|
能力值:
( LV8,RANK:130 )
|
-
-
5 楼
哈哈围观飞虫大哥,说的有道理,楼主建议你把不能hook的那部分代码贴出来,对比一下
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
@ 楼主,@非虫 我也正在搞这个问题,我用未加固的apk可以hook成功,用阿里加固后的apk hook失败,阿里加固后是变成了com.ali.mobisecenhance,只有这个类,其他类隐藏在了libmobisecy1.so中,但整个java程序的主体结构没有变化,我原来需要hook的类都还在,但函数内容都变成了runtimeexception 所以我这样的话,原来的xposed钩的函数和类的名称应该也不用变化吧,但加固后的程序不能勾住了。
xposeme.zip是apk代码
apk 是加固后的apk
xposer是hook的模块代码
|
能力值:
( LV2,RANK:15 )
|
-
-
7 楼
@licang @非虫 关键是怎么找到这个classloader啊,毕竟都已经被加固了
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
加固后开始的application变成stubapplication, 但具体的包名类名还都在androidmanifest.xml中, 可以反编译看到, 我现在使用的阿里的壳,所有函数都变成了runtimeexception,这些函数的具体内容会动态解析出来,我想用xposed是应该钩住的,可是测试发现失败,目前也不知道什么原因,正在查找相关方法,欢迎有兴趣的一起解决。
|
能力值:
( LV2,RANK:15 )
|
-
-
9 楼
非虫大大 现在没有那个getNewAppInstance方法了,又该如何获取这个这个classloader呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
他是动态加载的,xposed在hook的时候他还没加载呢,cydia肯定能hook上
|
|
|