美文网首页Android逆向笔记
某款app协议的简单分析

某款app协议的简单分析

作者: h080294 | 来源:发表于2018-07-24 20:31 被阅读897次

    最近学习python的过程中,无意接触到了AI平台,然后跟着学习了一下协议请求。为了巩固基础,尝试着分析一款app的协议请求。

    首先抓包查看请求,通过分析接口请求,确定sign值即为加密参数。

    接着,反编译app,尝试搜索一下请求接口。这里我们能很明显的看到该app使用了retrofit2框架,请求都使用注解封装了起来。

    我们还是通过/search/list这个接口查找,来到参数赋值的方法。

    经过分析,我们可以知道获取sign值的函数就是ap类的String a方法。

    逻辑也非常简单,一目了然。加密方法为:
    sort排序所有不为空的参数 + uuid + platformandroid + v + loginToken + 3542e676b4c80983f6131cdfe577ac9b(盐)

    例如图一中的charles请求:(为了安全,关键名称用xxx隐藏)
    curl -H 'xxxuuid: 008796750803109' -H 'xxx。platform: android' -H 'xxxchannel: xiaomi' -H 'xxxv: 3.3' -H 'xxx。loginToken: e7683834|9146839|1f41cd472b09d614' -H 'xxx。deviceTrait: ' -H 'User-Agent: xxxapp/3.3(android;4.4.4)' -H 'Host: xxx' -H 'Cookie: xxxToken=xxx' --compressed 'xxx/search/list?size=[]&title=&typeId=0&catId=1&unionId=11&sortType=0&sortMode=1&page=0&limit=20&sign=c6ff18d0f3e97024f5b3718b431b5db2'

    则最终需要加密的字符串为:(token用xxx隐藏)

    catId1limit20loginTokenexxxpage0platformandroidsize[]sortMode1sortType0titletypeId0unionId11uuid008796750803109v3.33542e676b4c80983f6131cdfe577ac9b

    md5一下:

    可以看到最终md5加密的值即为sign值。c6ff18d0f3e97024f5b3718b431b5db2

    这里不得不提的是,该app有一个严重的关键信息泄露,就是sign加密方法中的最后一行Log输出。使用了Android系统自带的log类,导致sign相关的信息泄露。

    我们来看另一款app的协议请求中加密部分,其中x.b方法为md5加密。是不是很眼熟。。。

    协议请求的特点决定了加密方式不会特别的复杂,所以对关键信息的隐藏就显得格外重要。java层的代码很容易被反编译,而将关键信息放在native中后,反编译就不是那么容易了,因为需要破解者懂得汇编代码。

    更多有意思的内容,关注微信订阅号

    相关文章

      网友评论

        本文标题:某款app协议的简单分析

        本文链接:https://www.haomeiwen.com/subject/dbmymftx.html