好友
阅读权限10
听众
最后登录1970-1-1
|
最近在做一款APK的安全测试,测试过程中发现APK使用了加密壳,于是由回顾了一下坛主正己的教程尝试着突破一下自己的技能。
1、使用MT和NP查看,发现APK加了壳,并使用了V1+V2的签名;
2、jadx尝试反编译
从jadx反编译的结构上看并没有看出来做了加壳处理但是,进入类里面发现看不到源码,猜测是做了混淆,但是由于功力不够没猜出来混淆在哪儿做的。
3、尝试frIDA、Xposed
一运行就退出{:1_925:}
于是网上找了一些绕过的方法:
1、尝试了hook fgets 修改了tracerPid。
2、hook了 strstr,修改了返回值为0。
3、hook了 maps、task,修改了frida特征。
以上操作都不行,hook后依然显示 Process terminated
依然不行。
再次使用xposed尝试:这里参考了坛主正己的教程:https://www.52pojie.cn/thread-1748081-1-1.html
```java
XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
Context context = (Context) param.args[0];
ClassLoader classLoader = context.getClassLoader();
//hook逻辑在这里面写
XposedHelpers.findAndHookMethod("com.yuanian.cloudlib.utils.RootCheck", classLoader, "isDeviceRooted",new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
super.beforeHookedMethod(param);
// XposedBridge.log(param.args[0].toString());
// Log.d("aaaaaa",param.args[0].toString());
// param.args[0] = true;
// Log.d("aaaaaa",param.args[0].toString());
}
@Override
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
super.afterHookedMethod(param);
// XposedBridge.log(param.getResult().toString());
// Log.d("bbbbb",param.args[0].toString());
}
});
XposedHelpers.findAndHookMethod("com.blankj.utilcode.util.DeviceUtils", classLoader, "isDeviceRooted", 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);
}
});
}
});
```
结果发现也不行,而且还一堆的报错,分析了一下,可能还是由于有加固检测的原因。
4、总结
本次尝试逆向分析失败,主要由以下几点:
1、自身功力还是有待提高,期待坛主正己大佬的后续课程;
2、加固厂商的加固原理有待研究,知己知彼才能百战不殆;
3、由于平时时间比较紧,长时间接触,日久生疏了好多,Android知识还是得积累。
坛子中如果有比较好的思路,可以一起交流一下。 |
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|