某内容电商App sign签名分析 复习下之前的技巧

简介: 某内容电商App sign签名分析 复习下之前的技巧

一、目标


现在内容电商,社交电商,直播电商等等概念多的眼花缭乱,终极目的就一条,卖货给你。


正如我们分析他的sign签名一样,套路就一条, jadx + frida1.png


这个sign数了数,正好32位,难道是 md5 ?


二、步骤

上jadx


先搜索下 "sign" 记得带上引号。2.png


结果只有40多个,而且第二个开上去就有眼缘,点进去看看

String a = m7166a(b, map);
if (TextUtils.isEmpty(a)) {
  return null;
}
map.put("sign", a);
return map;


这个 m7166a 应该就是我们的目标。


上Frida


先hook m7166a 试试

var dispatchECls = Java.use('anet.channel.strategy.dispatch.e');
    dispatchECls.a.overload('anet.channel.strategy.dispatch.IAmdcSign', 'java.util.Map').implementation = function (a,b) {
    var retval = this.a(a,b);
    console.log(">>> sign inMap = " + b.entrySet().toArray());
        console.log(" >>> sign rc= " + retval);
    return retval;
}

跑一下……


没反应,难道frida坏了? 还是找错了地方?


祭出javax_crypto大法


用排除法试试,咱们把 javax.crypto.Mac、java.security.MessageDigest、


javax.crypto.spec.IvParameterSpec等等一堆java的密码学算法统统hook一遍,期望它用的是标准的java的密码学算法。3.png


运气真不错,逮住了。顺利的把堆栈打出来。赤果果的md5。


全hook打出来的信息太杂乱了,我们关掉这一堆hook,只单独hook 堆栈中找到的这个函数。

var md5UseCls = Java.use('com.sxxdx.client.base.utils.Na');
md5UseCls.a.overload('java.lang.String').implementation = function(a){
    var retval = this.a(a);
    console.log(">>> md5 inStr = " + a);
    console.log(" >>> md5 rc= " + retval);
    return retval;
}


这下的结果漂亮多了。6.png


没有思路的时候,找找log


这次咱们运气不错,定位到了关键的地方。如果下次没有这么运气好怎么办?


一个负责任的Android程序一定会打log,所以如果找不到思路的时候,可以把程序的所有log打出来。


一个负责任的Android程序在发布的时候一定会关掉Debug的log开关。


所以我们找到log类的时候,可以先用 objection 批量搞搞,看看是哪个函数会被调用。


这里我们发现 anet.channel.util.ALog 类就是我们要找的目标

objection -g com.sxxdx.client.android explore
android hooking watch  class 'anet.channel.util.ALog'


和我们预料的一样,他并没有傻乎乎的去打日志,而是判断了是否打日志的开关。

com.sxxdx.client.android on (google: 10) [usb] # (agent) [657071] Called anet.channel.util.ALog.isPrintLog(int)
(agent) [657071] Called anet.channel.util.ALog.isPrintLog(int)
(agent) [657071] Called anet.channel.util.ALog.isPrintLog(int)
(agent) [657071] Called anet.channel.util.ALog.isPrintLog(int)
(agent) [657071] Called anet.channel.util.ALog.isPrintLog(int)
(agent) [657071] Called anet.channel.util.ALog.isPrintLog(int)


只好暴力上了,把 anet.channel.util.ALog 类的所有函数都hook一遍,入参都打印处理。 再细细分析了。


三、总结


貌似运气比技术重要,会写js的的人运气都不会太坏。


系统库函数、常用密码学处理函数要熟悉,大家都是站在一个起跑线上,软件工程教我们要复用,模块。 逆向工程教我们要多处复制,不要把关键点都写在一处。7.png


失败并不可怕,可怕的是你还相信这句话。


TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。


关注微信公众号: 奋飞安全,最新技术干货实时推送


相关文章
|
3月前
|
JSON 监控 数据格式
1688 item_search_app 关键字搜索商品接口深度分析及 Python 实现
1688开放平台item_search_app接口专为移动端优化,支持关键词搜索、多维度筛选与排序,可获取商品详情及供应商信息,适用于货源采集、价格监控与竞品分析,助力采购决策。
|
3月前
|
缓存 监控 Android开发
京东 item_get_app 接口深度分析及 Python 实现
京东item_get_app接口可获取商品原始详情数据,包含更丰富的字段和细节,适用于电商分析、价格追踪等场景。需通过认证获取权限,支持字段筛选和区域化数据查询。
|
4月前
|
缓存 数据挖掘 API
淘宝 item_get_app 接口深度分析及 Python 实现
淘宝item_get_app接口是淘宝开放平台提供的移动端商品详情数据获取接口,相较PC端更贴近APP展示效果,支持获取APP专属价格、促销活动及详情页结构,适用于电商导购、比价工具、数据分析等场景。接口采用appkey+appsecret+session认证机制,需申请相应权限。本文提供Python调用示例及使用注意事项,帮助开发者高效对接移动端商品数据。
|
3月前
|
缓存 供应链 开发者
1688 item_get_app 接口深度分析及 Python 实现
1688平台item_get_app接口专为移动端设计,提供商品原始详情数据,包含批发价格、起订量、供应商信息等B2B特有字段,适用于采购决策、供应链分析等场景。接口需通过appkey+access_token认证,并支持字段筛选,返回结构化数据,助力企业实现智能采购与供应商评估。
|
2月前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
569 139
|
2月前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
354 137
|
2月前
|
数据采集 JavaScript 前端开发
开发比分App?你缺的不是程序员
开发体育比分App,关键不在代码,而在懂体育、懂数据、懂用户。明确定位、理清需求、选好数据源,再找专业的产品、数据与技术人才协同,才能少走弯路。程序员最后入场,效率最高。
232 154
|
3月前
|
移动开发 小程序 Android开发
基于 uni-app 开发的废品回收类多端应用功能与界面说明
本文将对一款基于 uni-app 开发的废品回收类多端应用,从多端支持范围、核心功能模块及部分界面展示进行客观说明,相关资源信息也将一并呈现。
167 0

热门文章

最新文章