对xx面APP进行分析

Posted r1char

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对xx面APP进行分析相关的知识,希望对你有一定的参考价值。

常规操作,设置代理准备抓包,启动APP进行登录,对抓取到的包进行分析,最好抓2次进行对比,分析哪些参数的数据有变化:

 

将APP进行反编译,我用的jeb,通过搜索关键字"nonceStr"定位到代码块:

 

 

参数和抓取到的数据包都对的上,应该就是这里了。

通过分析得知this.pwdMD5 = MD5.md5Encode(MD5.md5Encode(v1)); 将密码进行了两次MD5,将密码进行两次MD5后与抓取到的数据包中password的值进行比对确定正确,密码分析完毕接着分析sign:通过以上代码得知最后会将所有参数放进v0然后调用encryptParam方法进行签名;进入encryptParam:

 

 

 调用了encryptMap方法,接着查看该方法:

 

该方法使用迭代器将名值对之间使用=连接,名值对之间使用&连接,然后带上"key=09ebcc6549b6fad41e0b857459c5b2be"或者"key=75cba6dd6d4d75154624dbe9d770d451",调用toString()接着进行一次MD5计算v2 = MD5.md5Encode(v4.toString()); ,进入md5Encode(),arg9就是我们要得到的内容:

将string类型的字符串arg9中包含的字符转换成byte类型并且存入一个byte[]数组中。在java中的所有数据底层都是字节,字节数据可以存入到byte数组。

 

 我们需要查看v4,v4对应的为p0,所以我们在v7处下断点,点击登录,断在v7处,光标移动到p0上,查看到对应的寄存器为v9:

 

 查看到v9的值为11111111,跳到下个断点查看v7的值,得到我们需要的sign前的数据:

 

"countryCode=86&nonceStr=zCQk2LKRX5TPOjEebtzNOYNL2CcONEfA&password=d0521106f6ba7f9ac0a7370fb28d0ec6&timestamp=1593148369531&userName=11111111111&key=75cba6dd6d4d75154624dbe9d770d451"

即为签名前的数据,回到v2.toString();查看数据签名后最终的值,在v7处下断点,查看v2的值,发现此时还没有转换为string,点击跳转到下一条语句,查看v7,得到值"6662f70966515739e6e294832cca030b",即为签名的值:

 

 

 将以上需要签名的值进行MD5计算后与v7得到的sign值比对为一致

 

 

 

 

 

以上是关于对xx面APP进行分析的主要内容,如果未能解决你的问题,请参考以下文章

APP逆向分析之XX音乐客户端下载歌曲权限绕过

学生成绩比较分析

对XX系统的可用性和易用性改良

xx系统需求分析06—分类检索

如何使用 Flutter Attach 对 Flutter add-to-app 应用程序进行性能分析?

***测试 对APP安全检测与网站***检测分析