本次测试主要分析该APP首页加载时,post数据中sign值的生成流程。
抓包得到的数据如下:
将apk拖入APK改之理,找到关键函数如下,可以清楚的看到sign是由processID、page等参数和值由SecurityUtil函数生成。
继续分析发现b函数调用jni层generateSign函数,转而分析generateSign函数。
在一系列运算后decode函数中生成了chinamilitary字符串,该字符串生成时调用了checkapp函数,检验apk是否经过更改,因为本次测试未对apk进行重打包,所以此字符串可以看做固定字符串。
然后获取java层传入的字符串
将二者拼接在一起后,执行MD5加密,然后再与chinamilitary字符串进行拼接
最后将拼接后的字符串再进行一次MD5得到sign的值
可以看到与抓包所得到的sign值相同。
最后总结一下,首先函数生成chinamilitary字符串,然后将该字符串与java层传过来的参数进行拼接,将拼接后得到的字符串进行MD5加密,然后在chinamilitary字符串的后面加上MD5加密后的结果再进行一次MD5加密,得到的结果即为sign的值。