反编下某疫苗接种app

栏目: IOS · Android · 发布时间: 5年前

内容简介:今天带小孩去打疫苗,发现之前的社区医院改成app预约了,下载app用了一下,真是无力吐槽,除了注册功能是好的。其他功能一点开全在转圏加载,预约教程页面还报了个sql语句错误.报着学习的态度想看看大佬们写的代码.基础api地址:最后找到了加密token的关键代码

今天带小孩去打疫苗,发现之前的社区医院改成app预约了,下载app用了一下,真是无力吐槽,除了注册功能是好的。其他功能一点开全在转圏加载,预约教程页面还报了个 sql 语句错误.报着学习的态度想看看大佬们写的代码.

工具准备

撸起袖子

packet capture 抓了几个包看了下api。

反编下某疫苗接种app

基础api地址: http://api.new.umiaohealth.com

/account/login
/vaccine/getreservationreservedlist
/vaccine/getvaccinemain

模拟登录时有个token字段猜解死活不通过,看来只能反编译下app看下加密代码了.

用gda查了下壳,发现是360加固的.

反编下某疫苗接种app

用gda自带的进程dump连接模拟器老是进程无响应,无果。

反编下某疫苗接种app

祭出这个xposed脱壳模块 FDex2 (要先安装VirtuanXposed或者xposed).

反编下某疫苗接种app

用mt文件管理器把dump出的dex移动到夜神模拟器和pc的共享目录.

反编下某疫苗接种app

这里有多上dex,可以用gda打开看下主代码在哪个dex里.然后用dex2jar转换一下把dex转成jar

反编下某疫苗接种app

然后用jd-gui打开jar反编一下.class文件就行了。

最后找到了加密token的关键代码

HttpClientUtil.java

public void httpPost(Context paramContext, String paramString, AjaxParams paramAjaxParams, BaseParser<?> paramBaseParser, IDataCallback paramIDataCallback)
  {
    FinalHttp localFinalHttp = new FinalHttp();
    localFinalHttp.configTimeout(30000);
    paramAjaxParams.put("token", Base64Utils.getSecretToken(paramContext));
    Header[] arrayOfHeader = Base64Utils.getHttpHeader(paramContext);
    String str1 = ((ParentInfo)ParentInfo.findFirst(ParentInfo.class)).getPid();
    String str2 = str1;
    if (TextUtils.isEmpty(str1)) {
      str2 = "0";
    }
    paramAjaxParams.put("pid", str2);
    paramAjaxParams.put("VersionChecked", CommonUtil.getAppCurrentVersion(paramContext));
    paramAjaxParams.put("devicetype", "android");
    localFinalHttp.post(paramString, arrayOfHeader, paramAjaxParams, "application/x-www-form-urlencoded", new HttpClientUtil.3(this, paramIDataCallback, paramString, paramAjaxParams, paramBaseParser, paramContext));
  }

Base64Utils.java

public static String getSecretToken(Context paramContext)
{
  paramContext = (ParentInfo)ParentInfo.findFirst(ParentInfo.class);
  String str = paramContext.getToken();
  Object localObject = paramContext.getPid();
  paramContext = (Context)localObject;
  if (TextUtils.isEmpty((CharSequence)localObject)) {
    paramContext = "0";
  }
  tktimes = System.currentTimeMillis() + "";
  int i = Integer.parseInt(tktimes.substring(12));
  localObject = sortSeed[i];
  sortIndex = String.valueOf(localObject[0]) + String.valueOf(localObject[1]) + String.valueOf(localObject[2]);
  localObject = getSortData(localObject[0], str, paramContext, tktimes) + "," + getSortData(localObject[1], str, paramContext, tktimes) + "," + getSortData(localObject[2], str, paramContext, tktimes) + "," + sortIndex;
  paramContext = null;
  try
  {
    localObject = encrypt((String)localObject, "xxx加密");
    paramContext = (Context)localObject;
  }
  catch (Exception localException)
  {
    for (;;)
    {
      localException.printStackTrace();
    }
  }
  return paramContext;
}

好了,我去写个预约疫苗的脚本去了


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

精通CSS

精通CSS

Andy Budd / 陈剑瓯 / 人民邮电出版社 / 2006 / 39.00

本书将最有用的CSS技术汇总在一起,在介绍基本的CSS概念和最佳实践之后,讨论了核心的CSS技术,例如图像、链接、列表操纵、表单设计、数据表格设计以及纯CSS布局。每一章内容由浅入深,直到建立比较复杂的示例。之后本书用两章讨论招数、过滤器、bug和bug修复,最后由Simon Collison和Cameron Moll两位杰出的CSS设计人员,将书中讨论的许多技术组合起来,给出了两个实例研究。本书......一起来看看 《精通CSS》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具