App逆向百例|15|某特惠App参数分析

简介: App逆向百例|15|某特惠App参数分析

观前提示:

本文章仅供学习交流,切勿用于非法通途,如有侵犯贵司请及时联系删除

样本:aHR0cHM6Ly9wYW4uYmFpZHUuY29tL3MvMWpMMEs3TGZTb3hEOUZURW1SOFhmakE/cHdkPWxpbm4=

0x1 抓包

直接抓包 找到本次受害参数api_signedata

0x2 api_sign

直接搜索api_sign 随便选一个都行

跳转过来后根据代码逻辑找具体生成位置

一直进一直进 最终到达可以看到这里为调用了gs方法 却点不进去了 观察方法流程 可以看到有初始化方法

进到初始化方法

点进去keyInfo 可以看到这里加载了libkeyinfo.so

往下看 看到gs方法 最终调用的native方法为gsNav

打开大姐姐 进到so文件 导出区域搜索JAVA_可以看到是静态注册

进到gsNav根据内容大致可分为

进到j_Functions_gs直接看伪代码逻辑

前面部分为对map的操作 大概就是取key和value拼接成字符串的操作

继续往下看 看到后面出现了j_getByteHash

进来一看发现是SHA1算法

所以 大概流程可能就是map取key和value拼接 然后sha1

具体几次sha1加密 有无加盐 拼接的字符串长啥样 还得看hook 静态分析到这 该动态分析了

直接hookj_getByteHash方法一把梭

0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
aeb47cc0  61 65 65 34 63 34 32 35 64 62 62 32 32 38 38 62  aee4c425dbb2288b
aeb47cd0  38 30 63 37 31 33 34 37 63 63 33 37 64 30 34 62  80c71347cc37d04b
aeb47ce0  61 70 69 5f 6b 65 79 3d 32 33 65 37 66 32 38 30  api_key=23e7f280
aeb47cf0  31 39 65 38 34 30 37 62 39 38 62 38 34 63 64 30  19e8407b98b84cd0
aeb47d00  35 62 35 61 65 66 32 63 26 6c 6f 67 73 3d 70 3a  5b5aef2c&logs=p:
aeb47d10  61 63 74 69 76 69 74 79 5f 69 64 25 33 44 37 35  activity_id%3D75
aeb47d20  30 30 30 34 25 32 36 61 63 74 69 76 69 74 79 5f  0004%26activity_
aeb47d30  70 61 72 61 6d 25 33 44 25 32 35 37 42 25 32 35  param%3D%257B%25
aeb47d40  32 32 63 6f 6d 6d 6f 6e 5f 73 65 74 25 32 35 32  22common_set%252
aeb47d50  32 25 32 35 33 41 25 32 35 37 42 25 32 35 32 32  2%253A%257B%2522
aeb47d60  68 6f 6c 65 25 32 35 32 32 25 32 35 33 41 25 32  hole%2522%253A%2
aeb47d70  35 32 32 31 25 32 35 32 32 25 32 35 32 43 25 32  5221%2522%252C%2
aeb47d80  35 32 32 73 74 5f 63 74 78 25 32 35 32 32 25 32  522st_ctx%2522%2
aeb47d90  35 33 41 25 32 35 32 32 2d 39 39 25 32 35 32 32  53A%2522-99%2522
           0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
bb5f7608  61 65 65 34 63 34 32 35 64 62 62 32 32 38 38 62  aee4c425dbb2288b
bb5f7618  38 30 63 37 31 33 34 37 63 63 33 37 64 30 34 62  80c71347cc37d04b
bb5f7628  33 37 37 63 33 32 37 36 37 32 32 34 61 36 66 39  377c32767224a6f9
bb5f7638  37 65 66 30 31 65 61 63 62 32 34 32 36 30 31 39  7ef01eacb2426019
bb5f7648  64 61 37 35 61 65 33 66                          da75ae3f

通过hook可知 俩次的头部都出现aee4c425dbb2288b80c71347cc37d04b这个固定字符串 可能是一段salt

每次计算都调用三次j_getByteHash根据代码分析可知

第一次为取包信息进行sha1

后面俩次就为api_sign的计算操作

验证第一次sha1 将salt+拼接的字符串进行一次sha1

然后sha1结果拼接salt再进行一次sha1

结果正确

0x3 edata

跟前面api_sign一样 最后跟到libkeyinfo.so

这里edata走的是esNav方法

大姐姐跳转过来和前面分析的一样

直接进到j_Functions_es

往下随便一翻就看到调用了AES标准算法 模式为AES/CBC/PKCS5Padding

而后结果经过拼接进行base64编码

那接下来的目标就很明确了 找KEYIV

根据拼接内容往回找 最终v59确定为IV 继续找IV的来源

往上看即可看到 就是随机生成的

而第二次拼接的v48为AES结果

根据代码可以看到KEY的来源

懒得看了 直接hook看KEY是否固定值

算法名:AES|Hex密钥:cdd17ab29b84b32552ddcfbb4abf0225
算法名:AES|Hex密钥:cdd17ab29b84b32552ddcfbb4abf0225

根据hook直接拿到结果简简单单

验证结果

base64解码 能看到解码后的结果前16位为拼接的IV

然后AES解密

成功解密


感谢各位大佬观看

感谢大佬们的文章分享 

如有错误 还请海涵

共同进步 带带弟弟


点赞 在看 分享是你对我最大的支持

逆向lin狗

相关文章
|
7月前
|
JSON 监控 数据格式
1688 item_search_app 关键字搜索商品接口深度分析及 Python 实现
1688开放平台item_search_app接口专为移动端优化,支持关键词搜索、多维度筛选与排序,可获取商品详情及供应商信息,适用于货源采集、价格监控与竞品分析,助力采购决策。
|
7月前
|
缓存 监控 Android开发
京东 item_get_app 接口深度分析及 Python 实现
京东item_get_app接口可获取商品原始详情数据,包含更丰富的字段和细节,适用于电商分析、价格追踪等场景。需通过认证获取权限,支持字段筛选和区域化数据查询。
|
8月前
|
缓存 数据挖掘 API
淘宝 item_get_app 接口深度分析及 Python 实现
淘宝item_get_app接口是淘宝开放平台提供的移动端商品详情数据获取接口,相较PC端更贴近APP展示效果,支持获取APP专属价格、促销活动及详情页结构,适用于电商导购、比价工具、数据分析等场景。接口采用appkey+appsecret+session认证机制,需申请相应权限。本文提供Python调用示例及使用注意事项,帮助开发者高效对接移动端商品数据。
|
10月前
|
JavaScript
TypeOrmModule 从 app.module.ts 抽离到 database.module.ts 后出现错误的原因分析
本文分析了TypeORM实体元数据错误的成因,主要涉及实体注册方式、路径解析差异及模块结构变化导致的关系解析问题,并提供了具体解决方案和最佳实践建议。
230 56
|
7月前
|
缓存 供应链 开发者
1688 item_get_app 接口深度分析及 Python 实现
1688平台item_get_app接口专为移动端设计,提供商品原始详情数据,包含批发价格、起订量、供应商信息等B2B特有字段,适用于采购决策、供应链分析等场景。接口需通过appkey+access_token认证,并支持字段筛选,返回结构化数据,助力企业实现智能采购与供应商评估。
|
8月前
|
数据采集 数据可视化 API
驱动业务决策:基于Python的App用户行为分析与可视化方案
驱动业务决策:基于Python的App用户行为分析与可视化方案
|
数据采集 数据可视化 数据挖掘
基于Python的App流量大数据分析与可视化方案
基于Python的App流量大数据分析与可视化方案
|
开发框架 监控 .NET
【Azure App Service】部署在App Service上的.NET应用内存消耗不能超过2GB的情况分析
x64 dotnet runtime is not installed on the app service by default. Since we had the app service running in x64, it was proxying the request to a 32 bit dotnet process which was throwing an OutOfMemoryException with requests >100MB. It worked on the IaaS servers because we had the x64 runtime install
362 5