一、样本静态分析
可以找到调用so方法的入口点:
看那个加密算法:
看到这里有一个加解密方法,返回加解密之后的字节数据,我们用IDA打开libwechat.so文件:
这里没有Java_xxx这样的函数,说明可能用了动态注册,所以就去搜JNI_OnLoad函数,这里注意以后如果打开so之后发现没有Java_xxx这样的函数开头一般都是在JNI_OnLoad中采用了动态注册方式,所以只需要找到JNI_OnLoad函数,然后找到RegisterNatives函数即可:
因为要找到具体的解密函数,这时候我们需要去对RegisterNatives函数查看他的实参值:
这里选中RegisterNatives函数名,然后右键选择Force call type即可:
这时候就看到了RegisterNatives的三个参数值,其实这里看到是四个,这个主要是调用方式的区别,因为我们还会看到有这种调用方式:(*JNIEnv)->RegisterNatives(JNIEnv env…),所以第一个参数其实是JNIEnv变量,这里就看第三个参数的地址就是需要注册方法的结构体信息,点击进入查看:
这里看解密函数,找到decryptData即可,点击进入查看:
按下F5查看C语言代码:
继续点击进入查看:
[[[true]]]这里就是实际的解密算法的地方了,大致看一下就是有一个AES_CBC_128算法加解密的,所以这里我们只要找到如何获取aes解密的key和iv值就可以了。这里有很多种方式可以动态调试,可以hook。
某应用的解密分析流程
最新推荐文章于 2022-11-21 19:43:12 发布