记一次某App反编译分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014476720/article/details/83893374

每次寻找漏洞的时候,我都喜欢从抓包开始

噢噢,这里有点尴尬~~请求和返回的数据都进行了加密处理,这波操作我挺喜欢的,证明人家公司的开发人员还是有点安全意识的,不过没有关系,他有张良计,我有过墙梯,先反编译一波看看,使用的工具是 jadx

很明显,app用了360加固了,哎,在以前,有加固的应用我基本会放弃的,不过现在没关系,脱壳呗

我用的脱壳源码在这里 https://github.com/dstmath/frida-unpack

用了Firda进行脱壳,不会使用Frida的可以看这里 https://blog.csdn.net/u014476720/article/details/83537843 ,过程就不说了

脱了壳 拿到了dex文件就可以分析了

根据上面抓包的情况,分析app包无非就是解决 t ,sign , n , options 这几个值加密和解密

这里我先从请求的数据开始入手,直接先搞到登录接口的

看了一下代码,很好很漂亮,文件名很清晰,没有怎么进行混淆处理

密码的参数传入了下面的方法进行拼接

格式:固定文本+密码+固定文本  最后以这种格式进行了MD5加密

到这里分析了登录携带的参数后,苦逼了

登录需要的参数都传入了下面的a方法,他的网络请求框架是retrofit2,这种我不熟悉啊,之后不知道怎么跑了

后来看了看工具类里面还有个 EncryptDES ,好像都没有看到在哪里有用到,于是抱着试一试的心态进行了一番全局搜索

噢噢 这么一搜索不得了,网络请求的数据结构全部都在此

响应返回参数

上面需要的相关参数用Xposed框架编写个插件就可以全部输出知道了

编写插件的时候需要注意的几个传入类型: byte[].class , int.class

因为是加固过的,所有直接hook是找不到路径的,需要先hook 加载过原dex 的 ClassLoader ,再用hook到的ClassLoader进行其他hook

 final Class clazz1 = XposedHelpers.findClass("android.app.Application", lpparam.classLoader);
            XposedHelpers.findAndHookMethod(clazz1, "attach", Context.class, new XC_MethodHook() {

                @Override
                protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                    super.afterHookedMethod(param);
                    Context context = (Context) param.args[0];
                    ClassLoader classLoader = context.getClassLoader();
}

总结:分析了上面的app之后,我觉得做ndk开发还真是有必要的,重要的参数都放进C代码里面处理,即使那些算法想用java层的也不要用的那么明显,可以用jni来处理, native通过反射调取java层的方法,虽然还是能够破解,但是至少能够增加多一点破解的难度吧

猜你喜欢

转载自blog.csdn.net/u014476720/article/details/83893374