安卓逆向分析韵达超市app接口及其实现

安卓逆向分析韵达超市app接口及其实现

1.抓包响应的操作(登录-入库-出库等等接口)

2.apk文件解压得出dex文件,然后反编译出jar包,。

3.分析接口

3.1登录接口

抓包得出登录接口主要有六个参数,分别是sign_method,req_time,data,action,appver,version,sign

其中sign_method是固定值yd_md5,req_time是13位时间戳,data里面的数据就是用户名和密码(密码是进行了MD5加密),action应该是固定值,登录这个接口的值应该就是market.appMarket.login,appver和version也是固定值,那么剩下的就只有sign不知道是怎么生成的.

接下来就是分析jar包代码了.

 

 全局搜索login关键词,找到了登录接口的相关逻辑,但这里显然不是登录前的组包过程,这个是登录成功,返回信息后赋值的过程,那么就是继续找

 

 找到了这个函数,很明显这个就是登录请求的组包过程,可以看出来,先new一个Request对象,然后setPhone,setPassword,setData,setAction,setVersion.

其中在setPassword的时候做了一个判断,真的时候用的是rsa加密,公钥就在源码里,false的时候是用的md5加密,很显然,密码是MD5加密的.

但是还是没有看到sign的加密方法,那就得继续找了

 

 

找到了这个函数,但是在这个工具里看不到这个函数的内容,那就只能用比较强大的工具了,jeb登场

 

 找到了这个函数,通过分析发现,是将请求参数进行按key的升序排序,然后拼接字符串,然后进行了g.a(g.c(v6.toString()))操作,进去里面的函数,发现是MD5加密.那么sign的生成方式就找到了.登录接口完成.

发现登录接口的返回响应里面有个publicKey,有可能是RSA密钥.

{
    "req_time":1589253822588,
    "body":{ "publicKey":"MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAI6ZmE1edc709ZhZQ8dGMGLhYqHyzdU1KUCTP4mamczvqJChHSnGSy8tNBltapz8salszVaWQSp9qHkAlpp2aH0CAwEAAQ==",
        "message":"请求成功",
        "result":true,
        "token":"CKJBCg67eY_Z8djYgAD0ccA_",
        "data":{
            ....
        },
        "openid":"xxxxxxxxxxxx",
        "code":0
    },
    "success":true
}

 

posted @ 2020-06-05 11:28  JaryTom  阅读(1104)  评论(0编辑  收藏  举报