吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7469|回复: 70
收起左侧

[Android 原创] 某生鲜电商sign签名算法分析

  [复制链接]
lixiaolevae 发表于 2021-7-16 11:52

磨刀霍霍

环境预备

测试手机

nexus x5   android 6.0

(android7.0以上版本抓包工具默认抓不到https请求,因为7.0以上只信任系统级别证书,而charles证书是安装到用户级目录的。

解决方式:可将charles证书升级为系统证书,即安装证书到系统证书目录下。

具体操作可参考连接:https://www.pianshen.com/article/97291182754/ )

PC

macbookpro

13-inch 4-core 16G-RAM macOS 10.15.5

所需工具

charles  -网络抓包

image-20210706151936444

下载地址:https://www.charlesproxy.com/

(前提:手机和电脑均安装好charles证书)

证书安装及支持抓包https设置指引请参考: https://blog.csdn.net/victory0943/article/details/106332095/

postman   -接口调试工具

image-20210712171621034

下载地址:https://www.postman.com/

支持导入cURL,便捷高效,导入操作如下图

image-20210712171745333

RE文件管理器  -android文件导出工具(需要root权限)

image-20210716114436844

下载地址:https://m-k73-com.sm-tc.cn/c/m.k73.com/mipw/574951.html

Apk Messenger -查壳工具

加壳(加固)后的 apk 直接反编译是看不到真实源代码的,需要脱壳后再反编译。

使用APK Messenger可以很方便地判断是否加了壳

AndroidCrackTool For Mac -反编译apk

https://github.com/Jermic/Android-Crack-Tool

mac下Android逆向神器,实用工具集

AndroidCrackTool集成了Android开发中常见的一些编译/反编译工具,方便用户对Apk进行逆向分析,提供Apk信息查看功能.目前主要功能包括(详细使用方法见使用说明):

  • 反编译APK
  • 重建APK
  • 签名APK
  • 优化APK
  • DEX2JAR(APK2JAR)
  • JDGUI
  • 提取DEX
  • 提取XML
  • Class to smail
  • Apk信息查看
  • Unicode转换

初窥门径

抓包分析

获取门店接口分析

首先手机配置好代{过}{滤}理,打开APP,用Charles抓一下包。

image-20210716111032462

一叶障目

多次请求获取门店的接口后,复制cURL进行对比分析:

这里介绍一个文本比对的在线工具,方便观察异同 https://qqe2.com/word/diff

image-20210716105559071

对比分析得出:

变化值:

longitude和latitude: 经纬度传参,多次定位后肯定取值有所不同
timestamp:时间戳毋庸置疑
signature:顾名思义加密签名

相同值:

token:多次调用发现token取值是固定的

火眼金睛

加密参数确定

postman中导入该请求,signature参数勾选去掉后进行请求,发现返回认证过期无法正常获取数据,说明signature为加密参数

image-20210716110042478

同时发现header中有个timestamp时间戳字段,根据逆向经验,请求中同时出现加密和时间戳,一般时间戳都会参与加密运算的,这样后端才会用时间戳结合加密逻辑进行加密认证。

因此我们再做个试验,只传 signature 不传 timestamp进行请求,发现依然无法正确响应,证明我们的猜想的正确的。

image-20210716110509088

破解目标确定

signature的加密逻辑

且signature是有32位的数字加小写字母组成的,猜测应该是MD5加密

螳臂当车

apk查壳

查壳工具很多,这里我使用的是 APK Messenger,打开后,直接将 apk 包拖入界面,幸运地发现该apk没有加壳

长枪直入

apk反编译

本次使用了Android Crack Tool这个工具,其实用jadx、jd-gui等都可以,平时多换着用用,就知道各个工具的优缺点了~

  1. 利用Android Crack Tool 提取classes.dex文件

image-20210716112122185

  1. 将得到classes.dex文件转为jar

image-20210716112253352

  1. 通过jd-gui打开生成的jar文件,得到了反编译的源码

image-20210716112441431

image-20210716112404509

真假猴王

加密逻辑静态分析

由于加密参数为signature,在jd-gui中全局搜索“signature”

image-20210716112753262

经过简单的浏览排除后,发现GlobalHttpHandlerImpl这个类中的相关代码最为相似,定位到关键代码处:

image-20210716113023292

其实这段逻辑很容易看懂:

最后一行代码localObject2转为String后赋值给了signature,说明localObject2是md5的加密结果,即倒数第二行y.a()方法是MD5加密方法,传入localObject2经过加密后又赋值给了localObject2;

localObject2往上追溯,它是一个字符串的拼接,先拼接了一串固定盐值"CE0BFD14562B68D6964536097A3D3E0C",

其次拼接了str和localObject1,那么这两个是什么呢?其实不用向前追溯,我们换个思路往下看,你会发现

str赋值给了timestamp,localObject1赋值给了token,一切都有了答案~

一段伪代码进行加密逻辑总结:

signature = MD5("CE0BFD14562B68D6964536097A3D3E0C" + timestamp + token)

取接口中的token和时间戳进行加密验证下,结果是一致的,手工~

image-20210716114159074

浮沙之上

心得:

  1. 逆向需要耐心也需要大胆的猜想去不断尝试,同时需要寻求巧妙的验证方式。本例的分析向上和向下的追溯均有,灵活应对
  2. 逆向工作会用到的很多好用的工具,平时注意多收集一些好用的工具或博文以事半功倍,本文所用到的工具和相关扩展知识点均贴出了链接,方便读者收藏~
  3. 本文旨在分享一些逆向技巧和思路,本文所举case相关敏感已打码略去,读者不可利用本文所述内容进行非法商业获取利益,若执意带来的法律责任由读者自行承担。

免费评分

参与人数 35威望 +2 吾爱币 +134 热心值 +33 收起 理由
han_xenon + 1 + 1 谢谢@Thanks!
youyouwan + 1 + 1 我很赞同!
zhenkaixin852 + 1 + 1 谢谢@Thanks!
csotour + 1 + 1 我很赞同!
fdtemp + 1 + 1 我很赞同!
gaosld + 1 + 1 热心回复!
lxtx666 + 1 我很赞同!
onething + 1 + 1 我很赞同!
Himalaya + 1 谢谢@Thanks!
tjuandy + 1 + 1 用心讨论,共获提升!
xmmyzht + 1 用心讨论,共获提升!
Kinglake + 1 + 1 用心讨论,共获提升!
lintao199 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
猛男z + 1 + 1 我很赞同!
lmwd + 1 + 1 我很赞同!
pdcba + 1 + 1 热心回复!
zhaoduck + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
Hafowi + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
yunisnotvirgin + 1 + 1 用心讨论,共获提升!
独行风云 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
Qq1169648682 + 1 + 1 不明觉厉
hj170520 + 1 + 1 我很赞同!
流无意啦 + 1 + 1 我很赞同!
victos + 1 + 1 谢谢@Thanks!
mufu + 1 + 1 谢谢@Thanks!
qtfreet00 + 2 + 100 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
gaoyang + 1 用心讨论,共获提升!
从农菜菜籽 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
ishining + 1 + 1 我很赞同!
武汉小Liz + 1 + 1 我很赞同!
Vardven + 1 + 1 我很赞同!
Milk395 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
良人灬 + 1 我很赞同!
宅男/kel + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
GenW + 4 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wss0823 发表于 2021-7-22 09:26
反编译不但需要一定技术,还要了解对应开发人员的一些编程习惯
 楼主| lixiaolevae 发表于 2021-7-21 13:35
wl942513519 发表于 2021-7-21 13:26
如果固定盐值"CE0BFD14562B68D6964536097A3D3E0C"不是明文, 而是写到配置文件里面,你准备怎么获取?

apk解包后是可以拿到resource下所有配置文件的
cptw 发表于 2021-7-16 13:25
伞兵一号卢本伟 发表于 2021-7-16 15:01
666666666
yjy138521 发表于 2021-7-16 15:06
太长了大幅好办法
武汉小Liz 发表于 2021-7-16 15:10
知道了几个工具,下载收藏先
ishining 发表于 2021-7-16 15:15
学习了 mark一下 回去俺也试试
naiinaoi 发表于 2021-7-16 15:30
学习了,楼主牛逼!
motuoche33 发表于 2021-7-16 15:45
nexus5 永远的神
kll545012 发表于 2021-7-16 15:46
这帖子7.12的时候不是发过?
ciker_li 发表于 2021-7-16 16:04
学习了,楼主厉害
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 11:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表