另一个生鲜App 抓包和mfsig签名分析(一)

简介: 另一个生鲜App 抓包和mfsig签名分析(一)

一、目标


市面上生鲜App一大堆,买菜也确实是高频次的刚需,这些生鲜App还都有一些有意思的共性:

  • 大都加壳了
  • 大都不好抓包


今天我们分析的是 某生鲜App v9.9.59 的 mfsig 签名。


二、步骤

上jadx

13.png


看看这么少的包名和类名,基本可以断定是加壳了。

那就先复习下 某酒店App sign、appcode签名解析(二) 脱壳分析


BlackDex脱壳


脱完壳的结果拖到PC上,赶紧jadx一下,搜一搜 "mfsig"


我去,一个结果都没有。


二种可能,一是 App有别的道道,mfsig签名相关运算和过程都在so里面;另一种可能就是脱壳不干净,关键数据木有出来。


不管是哪种可能,都得再想想别的办法了。


hook_libart


我们观察一下, mfsig签名的值都是 mfsnm 开头。这就有突破点了。

复习下 某种草电商App签名算法解析(一) 把字符串匹配安排上。

if (addrNewStringUTF != null) {
    Interceptor.attach(addrNewStringUTF, {
        onEnter: function (args) {
            if (args[1] != null) {
                var string = Memory.readCString(args[1]);
                if(string != null) {
                    if(string.toString().indexOf("mfsnm") >= 0   )
                                            {
                        console.log("[NewStringUTF] bytes:" + string);
                        var threadef = Java.use('java.lang.Thread');
                        var threadinstance = threadef.$new();
                        var stack = threadinstance.currentThread().getStackTrace();
                        console.log("Rc Full call stack:" + Where(stack));
                        console.log(Thread.backtrace(this.context, Backtracer.FUZZY)
                                .map(DebugSymbol.fromAddress).join("\n"))
                    }
                }
            }
        },
        onLeave: function (retval) {}
    });
}


跑起来

frida -U -f cn.mxxxfxxxh.application -l ms.js  --no-pause


运气太好了,轻松逮住。

[Pixel 2 XL::cn.mxxxfxxxh.application]-> [NewStringUTF] bytes:mfsnmtyBmRQEmRmAVpF48icnVLkAGJ1KJJ0bGZOGIKWEFIgLLKO7KJK9JKCHJJ5IKk50KZW7I+SII59FG+GHLZcBI654Jl9MKmcDJKWCJkO8IZ95KKP5mBY1ma
Rc Full call stack:dalvik.system.VMStack.getThreadStackTrace(Native Method)
java.lang.Thread.getStackTrace(Thread.java:1720)
cn.mxxxfxxxh.wsg.SecurityLib.nativeSign(Native Method)
cn.mxxxfxxxh.wsg.SecurityLib.a(SecurityLib.java:24)
cn.mxxxfxxxh.wsg.a.a(SecurityManager.java:42)


赤果果的就是这个 nativeSign,之前脱壳出来的代码有用武之地了,盘它。


上Frida

var signatureCls = Java.use('cn.mxxxfxxxh.wsg.SecurityLib');
signatureCls.nativeSign.overload('android.content.Context', 'long', '[B').implementation = function(a,b,c){
  var retval = this.nativeSign(a,b,c);
  var StrCls = Java.use('java.lang.String');
    var inStr = StrCls.$new(c);
  console.log(">>> signature inStr  = " + inStr);
    console.log(" >>>  signature rc= " + retval);
    return retval;
}


再跑一下,入参和结果都出来了。14.png


TIP:  这里解释一下byte[] 参数的打印,我们通过堆栈回溯,发现

String a = C15603SecurityLib.m17628a(f13866a, C3748b.m17632a(str).getBytes("UTF-8"));


这个byte[] 其实就是String转的,所以我们要打印它,只需要调用String的构造方法就行了。


三、总结


脱壳才是第一生产力,所以要多掌握一些脱壳工具和rom。


套路就是那么的相似,多熟练几个套路,遇到新的App就先都给他安排上。15.png


当我们为生活疲于奔命的时候,生活已经离我们远去。


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


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


相关文章
|
28天前
|
开发框架 监控 .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
|
3月前
|
安全
【Azure App Service】App service无法使用的情况分析
App Service集成子网后,如果子网网段中的剩余IP地址非常少的情况下,会在App Service实例升级时( 先加入新实例,然后在移除老实例 )。新加入的实例不能被分配到正确的内网IP地址,无法成功的访问内网资源。 解决方法就是为App Service增加子网地址, 最少需要/26 子网网段地址。
|
4月前
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
【Azure Function App】本地运行的Function发布到Azure上无法运行的错误分析
|
4月前
|
开发框架 缓存 .NET
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
【App Service】在Azure App Service中分析.NET应用程序的性能的好帮手(Review Stack Traces)
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
632 7
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
723 1
|
17天前
|
人工智能 小程序 搜索推荐
uni app下开发AI运动小程序解决方案
本文介绍了在小程序中实现AI运动识别的解决方案。该方案依托于UNI平台,通过高效便捷的插件形式,实现包括相机抽帧控制、人体识别、姿态识别等在内的多项功能,无需依赖后台服务器,大幅提高识别效率和用户体验。方案内置多种运动模式,支持自定义扩展,适用于AI健身、云上赛事、AI体测等多场景,适合新开发和存量改造项目。
|
23天前
|
设计模式 Swift iOS开发
探索iOS开发:从基础到高级,打造你的第一款App
【10月更文挑战第40天】在这个数字时代,掌握移动应用开发已成为许多技术爱好者的梦想。本文将带你走进iOS开发的世界,从最基础的概念出发,逐步深入到高级功能实现,最终指导你完成自己的第一款App。无论你是编程新手还是有志于扩展技能的开发者,这篇文章都将为你提供一条清晰的学习路径。让我们一起开始这段旅程吧!
|
1月前
|
小程序 数据挖掘 UED
开发1个上门家政小程序APP系统,都有哪些功能?
在快节奏的现代生活中,家政服务已成为许多家庭的必需品。针对传统家政服务存在的问题,如服务质量不稳定、价格不透明等,我们历时两年开发了一套全新的上门家政系统。该系统通过完善信用体系、提供奖励机制、优化复购体验、多渠道推广和多样化盈利模式,解决了私单、复购、推广和盈利四大痛点,全面提升了服务质量和用户体验,旨在成为家政行业的领导者。
|
2月前
|
JavaScript 前端开发 小程序
uniapp一个人开发APP关键步骤和考虑因素
uniapp一个人开发APP关键步骤和考虑因素
138 1
uniapp一个人开发APP关键步骤和考虑因素