一.涉及知识点

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 += '\0'
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我就不写的很详细拉

方法和思路都有了大家可以去试试

彩贝网app破解登入参数(涉及app脱壳,反编译java层,so层动态注册,反编译so层)的更多相关文章

  1. Node.js+Express+MongoDB数据库实现网页注册登入功能

    通过 Node.js + Express + MongoDB 实现网页注册账号 和 登入账号的功能 项目准备: 1: 事先准备好项目的页面 (首页页面 index.html)(登入页面 login.h ...

  2. 爬虫破解知乎登入(不使用Selenium模块)

    一.分析 知乎完成登入的步骤 首先获得cookies(如果不获得后面验证码无法获得) 获得验证码 提交登入相关内容 前两步简单稍微细心寻找规律即可 其中最难的是第三步应该他前端进行了js加密 这里没什 ...

  3. python_Django 实现登入功能form表单的参数接收处理

    1.创建Django工程. 参考https://www.cnblogs.com/CK85/p/10159159.html中步骤. 2.在urls.py文件中添加url分发路径 "" ...

  4. 14-python登入教务网(python+bs4)

    用request先得到到session对象,用其去放送请求,会自动保存cookie. 模拟有验证码的登入步骤: 1.发送请求登入页面: 2.分析验证码的地址,以及要将登入请求发往的地址(可以先输入错的 ...

  5. Mac app 破解之路

    6年之前一直做过一些内存挂,脚本挂.都是比较低级的技术. 这几年期间,断断续续利用业余时间学了一些汇编的知识,当时只是想着破解游戏. 所有的黑技术都是业余自学的,没有老师可以问,只能百度和自己领悟,比 ...

  6. [ASP.NET MVC] ASP.NET Identity登入技术应用

    [ASP.NET MVC] ASP.NET Identity登入技术应用 情景 ASP.NET Identity是微软所贡献的开源项目,用来提供ASP.NET的验证.授权等等机制.在ASP.NET I ...

  7. [Django]登陆界面以及用户登入登出权限

    前言:简单的登陆界面展现,以及用户登陆登出,最后用户权限的问题 正文: 首先需要在settings.py设置ROOT_URLCONF,默认值为: ROOT_URLCONF  = 'www.urls'# ...

  8. c#实现Google账号登入授权(OAuth 2.0)并获取个人信息

    c#实现Google账号登入授权(OAuth 2.0)并获取个人信息   此博主要介绍通过google 账号(gmail)实现登入,授权方式OAuth2.0,下面我们开始介绍. 1.去google官网 ...

  9. c#实现microsoft账号登入授权(OAuth 2.0)并获取个人信息

    本博主要介绍microsoft 账号授权(OAuth 2.0)登入并获取用户信息的过程,因为写过google账号授权登入的过程,所以这里就简单介绍一下,google授权登入参考地址:http://ww ...

随机推荐

  1. 第24课 - #pragma 使用分析

    第24课 - #pragma 使用分析 1. #pragma简介 (1)#pragma 是一条预处理器指令 (2)#pragma 指令比较依赖于具体的编译器,在不同的编译器之间不具有可移植性,表现为两 ...

  2. Java线程阻塞方法sleep()和wait()精炼详解

    版权声明:因为个人水平有限,文章中可能会出现错误,如果你觉得有描述不当.代码错误等内容或者有更好的实现方式,欢迎在评论区告诉我,即刻回复!最后,欢迎关注博主!谢谢 https://blog.csdn. ...

  3. java关键字static和final

    static可以修饰变量,方法或者类(普通类是不能用static修饰的,只能用来修饰内部类) static静态变量又称之为类变量(和c++中的全局变量概念是一样的),在类加载后,jvm只为类变量分配一 ...

  4. 详细分析 Java 中实现多线程的方法有几种?(从本质上出发)

    详细分析 Java 中实现多线程的方法有几种?(从本质上出发) 正确的说法(从本质上出发) 实现多线程的官方正确方法: 2 种. Oracle 官网的文档说明 方法小结 方法一: 实现 Runnabl ...

  5. Python新手入门基础

    认识 Python 人生苦短,我用 Python -- Life is short, you need Python 目标 Python 的起源 为什么要用 Python? Python 的特点 Py ...

  6. git的详细使用,项目创建到同步远程仓库,版本回退,忽略文件,分支创建,分支合并,分支名称修改,冲突解决,项目迁移

    注意:此处省略git的安装 1..git的工作流程示意图: 2.本地仓库的初始化: 2.1 创建一个文件夹,如我创建的是:D:\gitdemo\shop 2.2 进入shop目录,鼠标右键,打开git ...

  7. 项目启动加载配置,以及IP黑名单,使用CommandLineRunner和ApplicationRunner来实现(一般用在网关进行拦截黑名单)

    //使用2个类的run方法都可以在项目启动时加载配置,唯一不同的是他们的参数不一样,CommandLineRunner的run方法参数是基本类型,ApplicationRunner的run方法参数是一 ...

  8. 动态代理:jdk动态代理和cglib动态代理

    /** * 动态代理类:先参考代理模式随笔,了解代理模式的概念,分为jdk动态代理和cglib,jdk动态代理是通过实现接口的方式创建代理类的,cglib是通过继承类的方式实现的代理类的 * jdk动 ...

  9. mybatis基础使用

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .20 ...

  10. GAN生成的评价指标 Evaluation of GAN

    传统方法中,如何衡量一个generator ?-- 用 generator 产生数据的 likelihood,越大越好. 但是 GAN 中的 generator 是隐式建模,所以只能从 P_G 中采样 ...