zoukankan      html  css  js  c++  java
  • X贝网app破解登入参数(涉及app脱壳,反编译java层,so层动态注册,反编译so层)

    一.涉及知识点

    app脱壳
    java层
    so层动态注册
    

    二.抓包信息

    POST /user/login.html HTTP/1.1
    x-app-session: 1603177116420
    x-app-lng: 121.xxxx
    x-app-lat: 31.xxxxxx
    x-app-version: 4.5.6
    x-app-pushid: 1a0018970a165a9944f
    x-app-locationcityid: xxxxxx
    x-app-uuid: cd6df0a047ae0fbb
    User-Agent: Caibeike/1.0(com.caibeike.android 4.5.6; Nexus_5;Android 6.0.1; cd6df0a047ae0fbb; zh_CN)
    x-app-cityid: xxxx
    x-app-platform: android
    x-app-nonce: 1683473123
    x-app-timestamp: 1603182403928
    x-app-encrypt-text: 72157d096e1793b4f7696ea92285e93a
    host: mapi.caibeike.com
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 54
    Connection: Keep-Alive
    Accept-Encoding: gzip
    
    pw=2aed29ddfb50fc6f07e1a2bf3e6e3d87&mobile=xxxx
    

    三.分析

    x-app-lng: 121.xxx
    x-app-lat: 31.xxxx
    x-app-locationcityid: xxx
    x-app-cityid: xxxx
    #这些是地理信息
    
    x-app-encrypt-text  
    #这个明显是加密信息
    
    #请求参数中pw很明显做了加密
    

    四.开始找参数

    #首先先不管请求头直接搞请求参数加密
    #为什么呢不搞请求头呢,因为请求头未必有用
    

    脱壳

    日常习惯看看有没加壳

    简单的加固而已
    看我往期的博客
    https://www.cnblogs.com/pythonywy/p/13536130.html

    定位加密参数

    这个全经验吧,同学们自己多多专研这个很难教
    

    #python转一下
    from Crypto.Cipher import AES
    
    
    class Aes_ECB(object):
        def __init__(self):
            self.key = 'gSPs4aHZL1ocan1w'  #秘钥
            self.MODE = AES.MODE_ECB
            self.BS = AES.block_size
            self.pad = lambda s: s + (self.BS - len(s) % self.BS) * chr(self.BS - len(s) % self.BS)
            self.unpad = lambda s: s[0:-ord(s[-1])]
    
        # str不是16的倍数那就补足为16的倍数
        def add_to_16(value):
            while len(value) % 16 != 0:
                value += ''
            return str.encode(value)  # 返回bytes
    
        def AES_encrypt(self, text):
            aes = AES.new(Aes_ECB.add_to_16(self.key), self.MODE)  # 初始化加密器
            encrypted_text = aes.encrypt(Aes_ECB.add_to_16(self.pad(text))).hex()
            # 执行加密并转码返回bytes
            return encrypted_text
    

    运行发现他还需要请求头进行破解

    破解请求头

    #找java层方法都一样,日积月累关键字查找,你会发现x-app-encrypt-text在so文件中
    

    反编译so文件

    1.修改apk的后缀名为zip

    2.用ida打开so文件

    获取so层方法的偏移位置

    我之前的代码

    https://www.cnblogs.com/pythonywy/p/13787332.html

    定位位置之后找盐




    哈哈,盐就是这个
    至于入参毕竟是他人的app我就不写的很详细拉
    方法和思路都有了大家可以去试试

  • 相关阅读:
    命名空间“Aspose”中不存在类型或命名空间名称“Slides”。
    项目平台不同修改方法
    手机端自动跳转
    KindEditor得不到textarea值的解决方法
    正则表达式常用
    Log4Net不生成日志文件
    python笔记03-----文件操作
    python笔记04-----字典、元组、集合操作
    python笔记02-----字符串操作
    python笔记01-----列表操作
  • 原文地址:https://www.cnblogs.com/pythonywy/p/13847449.html
Copyright © 2011-2022 走看看