nexus x5 android 6.0
(android7.0以上版本抓包工具默认抓不到https请求,因为7.0以上只信任系统级别证书,而charles证书是安装到用户级目录的。
解决方式:可将charles证书升级为系统证书,即安装证书到系统证书目录下。
具体操作可参考连接:fbeK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2H3K9h3q4F1M7$3S2W2L8W2)9J5k6h3y4G2L8g2)9J5c8X3q4J5N6r3W2U0L8r3g2Q4x3V1j5&6y4K6t1&6x3e0p5^5x3U0M7#2y4q4)9J5c8R3`.`. )
macbookpro
13-inch 4-core 16G-RAM macOS 10.15.5

下载地址:701K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2U0K9r3q4J5L8r3g2K6M7s2u0G2P5s2W2Q4x3X3g2U0L8$3#2Q4x3V1j5`.
(前提:手机和电脑均安装好charles证书)
证书安装及支持抓包https设置指引请参考: deeK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6T1L8r3!0Y4i4K6u0W2j5%4y4V1L8W2)9J5k6h3&6W2N6q4)9J5c8Y4k6A6j5%4c8G2M7Y4V1H3z5e0b7K6i4K6u0r3j5i4u0@1K9h3y4D9k6g2)9J5c8X3c8W2N6r3q4A6L8s2y4Q4x3V1j5I4x3o6j5K6x3K6t1H3z5e0g2Q4x3V1j5`.

下载地址:2cfK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2H3L8%4y4@1L8h3q4F1i4K6u0W2j5$3!0E0i4K6u0r3
支持导入cURL,便捷高效,导入操作如下图


下载地址:643K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6E0i4K6u0V1K9K6M7K6i4K6u0V1j5$3!0E0i4K6u0W2M7$3#2Q4x3X3c8@1j5#2)9J5k6h3y4F1i4K6u0r3j5#2)9J5c8X3#2Q4x3X3g2C8y4K6y4Q4x3X3g2U0L8$3#2Q4x3V1k6E0K9i4m8%4i4K6u0r3y4e0M7@1z5e0f1I4i4K6u0W2K9s2c8E0L8l9`.`.
加壳(加固)后的 apk 直接反编译是看不到真实源代码的,需要脱壳后再反编译。
使用APK Messenger可以很方便地判断是否加了壳
0a5K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6v1k6i4u0E0K9h3y4Q4x3V1k6m8L8X3c8J5L8$3W2V1i4K6u0V1b7%4u0S2j5$3E0Q4x3X3c8f1L8$3!0D9
mac下Android逆向神器,实用工具集
AndroidCrackTool集成了Android开发中常见的一些编译/反编译工具,方便用户对Apk进行逆向分析,提供Apk信息查看功能.目前主要功能包括(详细使用方法见使用说明):
首先手机配置好代理,打开APP,用Charles抓一下包。

多次请求获取门店的接口后,复制cURL进行对比分析:
这里介绍一个文本比对的在线工具,方便观察异同 2abK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6I4M7h3f1J5i4K6u0W2j5$3!0E0i4K6u0r3N6$3!0J5k6q4)9J5c8X3c8A6k6X3j5`.

对比分析得出:
变化值:
相同值:
postman中导入该请求,signature参数勾选去掉后进行请求,发现返回认证过期无法正常获取数据,说明signature为加密参数

同时发现header中有个timestamp时间戳字段,根据逆向经验,请求中同时出现加密和时间戳,一般时间戳都会参与加密运算的,这样后端才会用时间戳结合加密逻辑进行加密认证。
因此我们再做个试验,只传 signature 不传 timestamp进行请求,发现依然无法正确响应,证明我们的猜想的正确的。

signature的加密逻辑
且signature是有32位的数字加小写字母组成的,猜测应该是MD5加密
查壳工具很多,这里我使用的是 APK Messenger,打开后,直接将 apk 包拖入界面,幸运地发现该apk没有加壳
本次使用了Android Crack Tool这个工具,其实用jadx、jd-gui等都可以,平时多换着用用,就知道各个工具的优缺点了~




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

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

其实这段逻辑很容易看懂:
最后一行代码localObject2转为String后赋值给了signature,说明localObject2是md5的加密结果,即倒数第二行y.a()方法是MD5加密方法,传入localObject2经过加密后又赋值给了localObject2;
localObject2往上追溯,它是一个字符串的拼接,先拼接了一串固定盐值"CE0BFD14562B68D6964536097A3D3E0C",
其次拼接了str和localObject1,那么这两个是什么呢?其实不用向前追溯,我们换个思路往下看,你会发现
str赋值给了timestamp,localObject1赋值给了token,一切都有了答案~
一段伪代码进行加密逻辑总结:
取接口中的token和时间戳进行加密验证下,结果是一致的,手工~

心得:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课