本篇开始补一下两万班的作业,报了那么多个月了一直没写作业(捂脸),近期从公司离职准备远赴上海追梦学习,故要保持好状态,话不多说,冲!
题目要求
fulao算法接口在手机上用http暴露下
(提示:使用frida-net库和frida-inject)
https://github.com/frida/frida-netfulao 加解密库的 native部分分析一下
破解fulao的vip(任意一个功能均可)
目标分析
本次分析的apk属于带颜色的不法app,我们要以打击犯罪的角度来进行分析。
先走流程
抓包
当点开任意一个视频时:
这个payload
是我们要找到的一个加密参数,碰到这种级别的app优先考虑使用r0capture,其可以直接找到相应的调用栈。
先看到文件名是DecryInterceptor,这不是解密的拦截器的意思嘛~静态分析看看。
静态分析
来到该类
该类的这个地方我比较的感兴趣,找到CipherClient.
这个类应该是我们需要的类了,看看其具体是用了什么加密
该类的具体的加密是在so当中,我们进so看看。
首先这个是静态注册的函数,静态注册有一个特点,Java_包名_类名_函数名为函数的名称。看下图我圈起来的部分按这个规律怎么拼出来so的静态注册的函数名。
Java_net_idik_lib_cipher_so_CipherCore_getString
,看看IDA是不是这样。
是的没错~
分析so代码
F5之后代码被反编译如下
不反编译的话需要看汇编,由于我的汇编也是一坨shite,so不能用shite喂给新手朋友,所以f5大家一起分析一波,有问题请指正~
本人分析so是这样来看的,把JNIEnv*给转出来,然后得到相应的env->之后的函数名称,然后通过jni.h里的函数查看这些函数的参数的意思,以此辅助理解函数的意思,方便后面的主动调用或算法还原。
例如
可以看到第二个参数是jstring类型,所以a3就确定是我们传进来的String类型,那我们把这个a3的类型改成jstring(按Y,或者右键那个a3的变量Set lvar type),然后我们再把a3改一下名字(按n,或者右键Rename lvar),方便我们分析,这里是Java传进来待转换成char*的内容,那改个名字方便理解。
最好结合frida的inline-hook来配合IDA进行静态分析。