一、目标

最近在抓包某电商App的时候发现一个加密数据,它在做通讯地址请求的时候,请求数据做了加密。返回数据中的地址信息也是密文。

今天我们的目标就是这个数据的加密解密。

App版本: v10.3.0

二、步骤

分析一下

1、数据的结尾是"==",说明是Base64编码,那么我们可以尝试去Hook Base64相关函数,然后打印堆栈。

2、返回数据格式是 json,那么我们可以尝试去Hook json相关的解析函数。

3、还一个方法就是尝试去搜索 CityNameCountryNameWhere 这几个关键字符串了。

先搜字符串吧

搜这个最长的 "Where"

发现了加密的函数 encrypt3DESECB ,没有搜到解密的函数。不过加密和解密大概率是在同一个类文件里面。

顺着线索,我们找到了这里。

啥也别说了,Hook之。

上Frida

var utilsCls = Java.use('com.xx.lib.productdetail.core.utils.PDUtils');
utilsCls.encrypt.overload('java.lang.String', 'boolean', 'java.lang.String').implementation = function(a,b,c){var result = this.encrypt(a,b,c);console.log(">>> encrypt a=" + a + ",b=" + b + ",c=" + c);console.log("rc=" + result);return result;
}utilsCls.decrypt.overload('java.lang.String', 'boolean', 'java.lang.String').implementation = function(a,b,c){var result = this.decrypt(a,b,c);console.log(">>> decrypt a=" + a + ",b=" + b + ",c=" + c);console.log("rc=" + result);return result;}

跑一下,这次用的是Attach模式,有可能会提示包名找不到,我试了下使用App的中文名,居然可以Attach上,很神奇。

TIP: 记得参考之前的文章 http://91fans.com.cn/post/ldqsignone/ 把frida端口号改改

我们点一下"地址管理", 遗憾的是,木有输出。 看来找到不对呀。

再来一次

这下扩大点范围,搜索 where

结果不是很多 200来项,细细看来, 这个大兄弟最为可疑。

1、类名AddressSelectView,看上去像是给地址页赋值。

2、函数setWhere,看上去像是给地址变量赋值。

点进去看看吧

optString = optBoolean ? DesCbcCrypto.decrypt(optString, generateKey, (byte[]) null) : DesCommonUtils.decryptThreeDESECB(optString, generateKey);

又找到了两个解密函数,先把他俩都Hook一下。


var StrCls = Java.use('java.lang.String');var desCbcCls = Java.use('com.xx.xxsdk.security.DesCbcCrypto');
desCbcCls.encrypt.overload('java.lang.String','java.lang.String','[B','java.lang.String').implementation = function(a,b,c,d){var result = this.encrypt(a,b,c);console.log("### encrypt  原文=" + a + ",密钥=" + b + ",d=" + d);console.log("rc=" + bytesToBase64(result));return result;
}desCbcCls.decrypt.overload('java.lang.String','java.lang.String','[B').implementation = function(a,b,c){var result = this.decrypt(a,b,c);console.log("### decrypt  密文=" + a + ",密钥=" + b);console.log("rc=" + StrCls.$new(result));return result;
}var desCommonCls =  Java.use('com.xxngxxng.common.entity.DesCommonUtils');
desCommonCls.encryptThreeDESECB.implementation = function(a,b){var result = this.encryptThreeDESECB(a,b);console.log("### encryptThreeDESECB a=" + a + ",b=" + b ) ;console.log("rc=" + result);return result;
}desCommonCls.decryptThreeDESECB.implementation = function(a,b){var result = this.decryptThreeDESECB(a,b);console.log("### decryptThreeDESECB a=" + a + ",b=" + b ) ;console.log("rc=" + result);return result;
}

好了,这次双手合十,再跑一下。

没毛病,收工。

三、总结

字符串搜索可以适当的扩大范围。

Base64算法太容易实现了,所以Hook标准的Base64算法可能不好使。这时候可以尝试在代码里面搜一下 Base64 这个字符串,运气好的话可以把App里面自己实现的Base64算法找出来。

通常App经过好几轮的版本迭代,加解密算法说不定也升级了好几轮,所以不要钻牛角尖,你第一眼看到的算法也许是老算法,不要气馁,还可以继续寻觅。

黑夜从来不会亏待晚睡的人,它会赐予你黑眼圈,和即将猝死的身体。

某电商App 返回数据加密解密分析(四)相关推荐

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

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

  2. 电商APP的流量及用户运营分析

    引言 本项目数据来源于和鲸社区 https://www.kesci.com/home/dataset/5ef7024363975d002c9235d3,记录了 2014 年 11 月 18 日至 20 ...

  3. 电商 APP 下单页(俗称车2) 业务流程概要设计

    购物车是电商APP的一个关键功能点,一般购物车包含 3-4 个页面,分别是: 1.购物车的商品列表页 2.商品下单页 3.订单付款页面 4.订单付款成功页面 由于现有购物车逻辑相对混乱,这里重新整理一 ...

  4. android电商闹钟,AndroidNativeEmu模拟执行计算出某电商App sign

    一.目标 这几天写代码写的很爽,因为经过几天没日没夜的调试,终于成功的把某电商App的sign用 AndroidNativeEmu 跑出来了,填了无数的坑,跑出正确结果的那一刻,内牛满面呀,心里充满了 ...

  5. vue 仿二手交易app_Vue项目开发-仿蘑菇街电商APP

    最近快毕业了呜呜呜,准备找工作,但是缺乏项目经验,于是就在B站找相关的课程,学完之后便根据老师稳定的教导,以及自己稳定的心态,做了一个类似于蘑菇街的电商APP.(后端数据接口由老师提供,老师叫code ...

  6. vue图片滚动抽奖_Vue项目开发-仿蘑菇街电商APP

    最近快毕业了呜呜呜,准备找工作,但是缺乏项目经验,于是就在B站找相关的课程,学完之后便根据老师稳定的教导,以及自己稳定的心态,做了一个类似于蘑菇街的电商APP.(后端数据接口由老师提供,老师叫code ...

  7. b站coderwhy老师_Vue项目开发-仿蘑菇街电商APP

    最近快毕业了呜呜呜,准备找工作,但是缺乏项目经验,于是就在B站找相关的课程,学完之后便根据老师稳定的教导,以及自己稳定的心态,做了一个类似于蘑菇街的电商APP.(后端数据接口由老师提供,老师叫code ...

  8. Kotlin实战案例:实现RecyclerView分页查询功能(仿照主流电商APP,可切换列表)

    n实战案例:带你实现RecyclerView分页查询功能(仿照主流电商APP,可切换列表和网格效果) 随着Kotlin的推广,一些国内公司的安卓项目开发,已经从Java完全切成Kotlin了.虽然Ko ...

  9. 跨境电商APP如何高效测品提升GMV?真金白银经验总结告诉你

    全球移动互联网用户数量持续增长,根据Branch的数据,APP的互动率是移动网页的3倍,用户有77%的时间是花费在自己最常用的3个APP上. 应用商店和移动支付高速发展,用户的线上购买行为逐渐偏向于移 ...

最新文章

  1. eureka 和zookeeper 区别 优势【转】
  2. 过滤器过滤特定的url_如何从过滤器中排除URL
  3. 关于使用layer弹出框展现echarts不显示的问题
  4. hadoop单击模式环境搭建
  5. Python基础学习----Requests获取url请求时间:
  6. 神马js都是浮云-----限时秒杀
  7. Java 常见面试题
  8. 计算机程序设计c++ 5-1:函数的调用格式
  9. qPCR检测基因表达的引物数据库
  10. 图片传输(APP端将图片传至服务器端存储)
  11. 失去池子的笑果文化越来越不好笑了
  12. java游戏怎么导入jme3,java - JME:将带有纹理的Cinema 4d模型导入jMonkey Projekt - 堆栈内存溢出...
  13. 曾经最好用的浏览器凉了?正在被大批网站抛弃
  14. Flink流处理过程的部分原理分析
  15. Dirty Pipe – Linux 内核本地提权漏洞
  16. 计算机等级越高越好吗,计算机三级辅导:内存越多越好吗
  17. hnustoj 2108 湖南科技大学2019年大学生计算机程序设计新生赛
  18. 夜游项目如何促进文旅经济的发展
  19. 机器学习-第2关:信息熵与信息增益
  20. 高通win10电脑软件兼容测试,微软把高通处理器装在了Win 10上,那又怎样呢?

热门文章

  1. 电脑进不了,电脑进不了系统,详细教您怎么解决电脑进不了系统
  2. 【弱监督显著目标检测论文】Weakly-Supervised Salient Object Detection via Scribble Annotations
  3. Java递归查询某个节点下所有子节点多级信息(递归部门查询,递归树形结构数据查询)
  4. 十一. MySQL InnoDB 三大特性之 BufferPool
  5. 26.编辑距离(一)
  6. 常用的邮箱有哪些?公司邮箱如何申请?
  7. Joda-Time 实战
  8. 12、计算机如何实现开根号?
  9. ubuntu下安装rtl8811cu/rtl8821cu网卡 Tplink WDN5200H网卡
  10. GEM5 模拟器简介