• 安卓逆向分析韵达超市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
    }
  • 相关阅读:
    树莓派成长日记03
    一些特殊文字的过滤Private Use Area:E000F8FF
    MongoDb 相关
    SQL 相关技术点收集贴
    正则表达式提取文本的日期
    MVC 相关技术点收集贴
    使用 json2.js注意点
    C#画图 GDI+
    PHP模拟POST,验证页面的返回状态
    EF-Entity Framework 相关技术点收集贴
  • 原文地址:https://www.cnblogs.com/blog-rui/p/13048704.html
Copyright © 2020-2023  润新知