某应用的解密分析流程

一、样本静态分析
可以找到调用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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值