一、目标

稼轩长短句有云:宝马雕车香满路。从此香车美女就成了标配。这不李老板还没聊几个mm,又开始准备换车了。

今天我们的目标是 某汽车社区App v8.0.1。

二、步骤

脱个壳

李老板说这个App很拽,貌似是某个企业版的壳,连 Xcube都不好使,调试不了。

我们先不管他拽不拽,先用 BlackDex 把壳脱了先。

BlackDex提示脱壳成功,但是对应的目录下只有一个dex文件,明显不对

还好我们有备用方案,据说 FDex2 脱壳也不错,搞起来。

忧伤的是,FDex2说不支持我的手机。 原因是我的系统版本太高 Android 10。

罢了,手机咱还是有好多部的。当年找李老板申请从Android 4 - Android 10 都买了一部,测试用嘛。

先找了一台Android 8.1 。正好这台机器上也有 BlackDex。顺手试试吧。

难道脱壳还和系统有关系? 正告各位兄弟: 高低版本的Android都备着,哪个能脱用哪个

抓个包

数了数signature,还是32位,这就尴尬了,难道还是MD5。

不管了,先搜搜哦

结果不多,这个 Map.put 太赤果果了,盘它。

感觉上应该是这个sign了。

上Frida

var utilCls = Java.use("com.alibaba.sdk.android.oss.common.utils.OSSUtils");
utilCls.sign.implementation = function(a,b,c){console.log(TAG + "a = " + a);console.log(TAG + "b = " + b);console.log(TAG + "c = " + c);var rc = this.sign(a,b,c);console.log(TAG + "sign = " + rc);return rc;
}

跑起来。

TIP: 忘了插播一下,这个App没有那么拽,手机里面跑葫芦娃 hluda-server-15.xx,然后就可以跑起来。

忧伤的是,木反应。 不科学呀。

仔细看看 Signaturesignature 傻傻的分不清楚。居然犯这种低级错误。千万不能让李老板知道,不然快年底了,他肯定以这个为理由不给我加工资。

把忽略大小写勾掉。再搜一遍,这次只有两个结果了,但是这两个结果看上去都不咋地。

这时需要祭出 找朋友 大法了。从同一个请求包里面另外找一个看上去比较稀有的参数来搜。这次我们看上了 nonce

这里看上去有戏。

进去看看,我们看到了亲爱的MD5。毫不犹豫的Hook之。

var utilsExCls =  Java.use("com.aliyun.common.utils.MD5Util");
utilsExCls.getMD5.implementation = function(a){console.log(TAG + "a = " + a);var rc = this.getMD5(a);console.log(TAG + "Md5 sign = " + rc);return rc;
}

这次逮住了

Md5 sign = 35c40cb2b0fcf2a61ad316be7e912370

可以收工了。

返回数据加解密

我们从抓包结果来看,请求包和结果里面都有一组 sd= 开头的加密数据。 看上去像是详情页面的数据。

如何定位呢?我们先分析下特征,这组数据有三个特征:

1、sd= 开头

2、数据都是大写的M开头

3、== 结尾,那大概率是Base64

先从Base64入手

var Base64Class = Java.use("android.util.Base64");
Base64Class.encodeToString.overload("[B", "int").implementation = function(a,b){var rc =  this.encodeToString(a,b);        console.log(">>> Base64 " + rc);return rc;
}

跑起来,忧伤的是,木有结果。(可能是Base64在so层做或者干脆自己实现Base64算法)

那就换个方法,搜索 sd= 或者 "sd"

轻松定位到了 CheckCodeUtils 这个类

var CheckCodeUtils = Java.use("com.cloudy.lxxxlxxxbang.model.request.retrofit2.CheckCodeUtils");
var encrypt = CheckCodeUtils.encrypt.implementation = function (paramString, paramInt) {console.log(TAG + 'aaa encrypt paramString:' + paramString);console.log(TAG + 'aaa encrypt paramInt:' + paramInt);var result = this.encrypt(paramString, paramInt);console.log(TAG + 'aaa encrypt result:' + result);return result;
}var decrypt = CheckCodeUtils.decrypt.implementation = function (paramString) {console.log(TAG + 'aaa decrypt paramString:' + paramString);var result = this.decrypt(paramString);console.log(TAG + 'aaa decrypt result:' + result);return result;
}

完美,结果就不截图了。

三、总结

关键字符串搜不到的时候,可以考虑考虑找找他们的朋友。

逆向分析是实践课,没有定法。不要纠结细枝末节,也不要探究方法是否正统。能抓到老鼠就行。

预告一下,下节课咱们用 unidbg来跑这个算法。顺便尝试还原它

金屑虽贵,落眼成翳

某汽车社区App 签名和加解密分析相关推荐

  1. 某汽车社区App 签名和加解密分析 (二) : Frida Dump so

    一.目标 App安全的主战场在Native层,分析Native层的so,最趁手的兵器就是Frida和Unidbg了. 今天我们的目标是 某汽车社区App v8.0.1 so 的分析. 二.步骤 特征字 ...

  2. 某游戏社区App | So层逆向分析

    大家好,我是TheWeiJun,不知不觉已经来到了2022年底.回顾这一年,发生了太多事迹:有挫折.有喜悦.其中最开心的是结交了许多志同道合的朋友.本文将是笔者2022年最后一篇文章收官之战,全程高能 ...

  3. android tsclib.so,续 某哩某哩APP之m3u8解密分析之跳过so文件 从APP日志入手(AES/CBC模式)...

    前排提示!!!!! 论坛禁止留联系方式!! 禁止求成品,也没有成品! 写在前面的话 前段时间已经研究过这个平台网页和APP的AES加解密方式了. 最近发现这个平台的APP的加解密方式更新了,所以又继续 ...

  4. 某小说App返回数据 解密分析

    一.目标 李老板:奋飞呀,最近被隔离在小区里,没啥可干的呀. 奋飞:看小说呀,量大管饱. 我们今天的目标就是某小说App v2021_09_53 二.步骤 搜索url字符串 App请求小说内容的时候没 ...

  5. 某电商App 返回数据加密解密分析(四)

    一.目标 最近在抓包某电商App的时候发现一个加密数据,它在做通讯地址请求的时候,请求数据做了加密.返回数据中的地址信息也是密文. 今天我们的目标就是这个数据的加密解密. App版本: v10.3.0 ...

  6. 开放平台如何做接口的签名和加解密?

    目录 安全性 功能介绍 实现流程 开放平台依赖代码 AES加解密工具类 PlatformConfig RequestUtils PlatformService CommonCode ZuulFilte ...

  7. WebSphere下使用CA证书进行签名和加解密的方法

    前一段时间在项目中用到了信息的加解密和生成数字签名和验签,其中使用了CA给提供的安全证书和工具jar包--javasafeengine.jar,项目在Tomcat下跑的一切正常,但当项目部署到WebS ...

  8. 某问答社区App x-zse-96签名分析

    一.目标 今天我们的目标是某问答社区App的 x-zse-96 1:main 版本: v8.21.1 二.步骤 搜x-zse-96 常规做法是jadx打开apk,然后搜索x-zse-96. 神奇的是, ...

  9. 微信小程序用户数据的签名校验和加解密 - 后端nodejs

    在本文 微信小程序用户数据的签名校验和加解密 之前需要先看看 微信小程序-获取用户session_key,openid,unionid - 后端为nodejs 代码封装是在上文添加的. 小程序代码: ...

最新文章

  1. spring cloud 教程前言
  2. oracle 存储过程定义及调试,并终于被C# 调用 代码
  3. spring中Constructor、@Autowired、@PostConstruct的顺序
  4. 吴恩达深度学习课程deeplearning.ai课程作业:Class 1 Week 4 assignment4_2
  5. Leetcode周赛5827. 检查操作是否合法
  6. 【活动报名】2021蚂蚁链开发者大会
  7. 写在前面,白话 Yaf 探秘与深入
  8. 中国双侧人工耳蜗行业市场供需与战略研究报告
  9. 通过 Azure 媒体管理门户开始使用直播流媒体
  10. c语言计算器小程序,计算器程序完整代码
  11. 使用Colab对wget下载加速
  12. 【shell】数值加减乘除|字符串转换成数字|提取数字字母小数
  13. linux安装核显驱动程序,在Ubuntu系统上怎么安装英特尔核显驱动安装器
  14. PDF 格式的文件编辑难度非常大,相比 .docx格式,它存在的意义是什么?
  15. pyepics Device:PVs的集合
  16. 反编译 逆向工具集合
  17. 单片机c语言篮球比分_单片机篮球比赛计分器设计方案与程序详解
  18. HTML5权威指南读书笔记03(第7,8章)--icon,base,锚点,一些七七八八的元素
  19. docker国内镜像拉取和镜像加速registry-mirrors配置修改
  20. pd 生成mysql 脚本_powerdesigner 生成数据库脚本

热门文章

  1. 《程序员》07年3期文章试读:网银安全大揭秘—摇摇欲坠的达摩克利期剑
  2. 活动公告|万圣节惊喜派对~
  3. office365清除oem信息
  4. 【刷题】BZOJ 4827 [Hnoi2017]礼物
  5. 《在小吃店遇见凯恩斯》读书心得小记 - Part 2
  6. appserv怎么安装mysql_AppServ怎么安装?AppServ 8.6.0 64位图文超详细安装教程(附下载)...
  7. 怎么解决Win7看视频绿屏的问题?
  8. GoDaddy SSL证书Private key问题
  9. Linux系统第一次学习通作业总结
  10. html制作今日团购模块,最土团购 模板说明