jobs_steven 发表于 2023-7-26 16:53

第一次逆向失败

最近在做一款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.toString());
//                        Log.d("aaaaaa",param.args.toString());
//                        param.args = true;
//                        Log.d("aaaaaa",param.args.toString());
                  }
                  @Override
                  protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                        super.afterHookedMethod(param);
//                        XposedBridge.log(param.getResult().toString());
//                        Log.d("bbbbb",param.args.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知识还是得积累。
坛子中如果有比较好的思路,可以一起交流一下。

stacia 发表于 2023-7-26 18:09

看不懂,但是给lz加油!

klxx1314520 发表于 2023-7-26 19:09

第一次,学逆向看不懂:'(weeqw

919490656 发表于 2023-7-26 19:24

加了壳的是不是得先脱壳呢?

YanJiuKanKan 发表于 2023-7-26 23:01

先学脱壳吧,不脱壳,怎么会有代码呢?

jobs_steven 发表于 2023-7-27 10:40

YanJiuKanKan 发表于 2023-7-26 23:01
先学脱壳吧,不脱壳,怎么会有代码呢?

主要是第一次搞,不太懂,脱壳的方法目前还不太熟悉。请大佬执教一二
页: [1]
查看完整版本: 第一次逆向失败