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

公众号: 奋飞安全
• 阅读 1477

一、目标

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

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

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

二、步骤

上jadx

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

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

那就先复习下 某酒店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;
}

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

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

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

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

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

三、总结

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

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

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

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

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

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

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
https://cloud.tencent.com/developer/article/write/1830331
一、目标今天的目标是这个sign和appcode二、步骤Jadx没法上了app加了某梆的企业版,Jadx表示无能为力了。FRIDADEXDumpDexDump出来,木有找到有效的信息。Wallbreaker葫芦娃的Wallbreaker可以做些带壳分析,不过这个样本,用Frida的Spawn模式可以载入,Attach模式会失败。而直接用Objecti
某车联网App 通讯协议加密分析
一、目标李老板:最近刚买了辆新车,他带的App挺有意思,要不要盘一盘?奋飞:我去,加壳了,还挺有意思,搞一搞。v6.1.0二、步骤抓包我的抓包环境是Mac10.14.6httpToolKit,这一步很顺利的抓到包了。1:main可以看到,http请求和返回值都是加密的,我们的目标就是这个 request 和 response的来历的。脱壳
某酒店App sign、appcode签名解析(二) 脱壳分析
一、目标之前我们介绍过。带壳分析也是迫不得已,谁不希望零距离接触呀。App升级了5.3.3,我们的工具也升级了。今天的新朋友是BlackDex脱壳延时Hook二、步骤BlackDex脱壳安装BlackDex在显示的进程列表中选择com.platexx.boxxoota是的,壳已经脱好了,脱壳后的文件在/sdcard/Android/d
某汽车社区App 签名和加解密分析
一、目标稼轩长短句有云:宝马雕车香满路。从此香车美女就成了标配。这不李老板还没聊几个mm,又开始准备换车了。今天我们的目标是某汽车社区Appv8.0.1。二、步骤脱个壳李老板说这个App很拽,貌似是某个企业版的壳,连Xcube都不好使,调试不了。我们先不管他拽不拽,先用BlackDex把壳脱了先。BlackDex提示脱壳成功,但是对应的目录下只
某音乐App 抓包和signature签名分析
一、目标李老板:奋飞呀,最近我想下个歌,现在听歌软件都这么顽固了,包都抓不到?奋飞:抓不到包的原因太多了,咱们得用排除法分析下。某音乐App10.8.4二、步骤排查协议李老板也跟我们混了这么多期,所以基本排除抓包环境的问题。那么另一个可能就是像某手使用的quic协议或者某鱼使用的spdy协议了。上jadx搜一下"quic",如果搜不到还可
某问答社区App x-zse-96签名分析
一、目标今天我们的目标是某问答社区App的 xzse961:main版本:v8.21.1二、步骤搜xzse96常规做法是jadx打开apk,然后搜索xzse96。神奇的是,居然没有结果,这就有点意思了,App给我们加戏了,把一些明显的字符串做了加密隐藏。观察共性观察一下,签名有两个共性1、都是 1.0 开头2、后面接着的很像Base64那就先从h
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
另一个生鲜App 抓包和mfsig签名分析(二) 针对flutter抓包
一、目标拿到App之后,抓不到包是件很令人抓狂的事情。今天我们通过排除法来分析抓包失败的原因,并提供一个通用的针对flutter抓包的方案。抓包工具和环境介绍抓包失败的几种原因和对应的解决方案针对flutter抓包今天我们分析的还是某生鲜Appv9.9.59二、步骤抓包工具和环境介绍飞哥手头有两个不同的抓包环境,一台手机是通过手工设置代理到
公众号:  奋飞安全
公众号: 奋飞安全
Lv1
奋飞,国家高级信息系统项目管理师,独立安全研究员。 http://91fans.com.cn/
文章
59
粉丝
4
获赞
44