一点资讯signature分析

app版本 6.2.3.0

java层

抓包,请求参数signature是本次分析的目的

图1

jadx中查找signature

图二

继续追踪,此处可知道是对请求参数中的appid,cv,platfrom,reqid,version进行加密

图3

继续跟进,最终跟进都signInternal方法,而此方法通过native修饰,可知加密实在util.so中进行的

图4
图5

so层分析

在ida中通过搜索关键词signInternal。

由下往上分析,可知道returnStr是最终答案,而returnStr是在encryptJavaString中生成的。

这里说下getApkSignature,这个方法是获取apk的签名,这里不用管。

encryptJavaString有6个参数,v4是env不管,cstr是要加密的字符串,hashCode是apk签名,固定字符串和0;

图6


追进encryptJavaString查看,一眼可看出加密过程是在encypt中进行的。returnStra是结果,那encypt次加密后结果一定为0;

图7

继续追进去,看到这里思路应该清晰了,有一个rsa_encrypt_key_ex的方法,这里首先怀疑是rsa对称加密。rsa加密是有一个密钥的,这里要分析密钥是什么。在图6中有一个固定的字符串,这里用这个当密钥试了试,发现不对。


而后看到有个decryptKey的方法,这里

图8

使用frida hook decryptKey方法,在out2的返回结果就是就是密钥,hook的结果我就不展示了。密钥我放出来了。MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDP2SYzFccMwZxC05Uxwei6ijFcOoJOHPHBK2oRX6ZVDSZMxb7ghH1HU63abxzcW/+OC845OlxC5XZA9AZtfgEHdYNpEGyaCHE1zu4LsWiovTLpYhV1Ya9Ks/6ynUecn1P8D3OAKaCuD3DLlawLCRmWlc2EpnwYuJIrEf/OnB7A2QIDAQAB


图9

这里展示下最终的请求的结果。

对了,这个request_sign_bj请求参数有加密的,是AES加密,这个加密的key在java层,我这里就不展示了。


图10
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容