另一个生鲜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 讨论下。


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


相关文章
|
11天前
|
存储 Java API
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
101 0
|
5天前
|
移动开发 JavaScript 前端开发
APP的HTML5页面经过运营商网络被植入手机管家问题及分析,解决方案见新文章
APP的HTML5页面经过运营商网络被植入手机管家问题及分析,解决方案见新文章
10 0
|
11天前
|
数据采集 小程序 网络安全
云擎技术---分析工信部APP备案的“传闻”
APP备案并非新事物,自2005年起已有非经营性互联网信息服务备案制度。备案针对的是网站主办者,而非用户,不涉及个人用户网络访问。网络接入服务提供者包括ISP和IDC,不限于三大运营商。通知要求不为未备案网站提供接入,但不影响国外软件使用。个人开发者不能涉及经营性内容,备案审核时长1-20个工作日。境内服务器和国内应用商店需备案,境外则无需。手机厂商不会开启白名单制,仅实行黑名单制。APP备案与民营经济发展壮大意见不冲突,工信部有权颁布相关规定。该政策不存在逐步试探底线情况,所有解读均有法律依据。
38 3
云擎技术---分析工信部APP备案的“传闻”
|
11天前
|
网络协议 算法 Android开发
安卓逆向 -- 实战某峰窝APP(动态分析)
安卓逆向 -- 实战某峰窝APP(动态分析)
46 4
|
11天前
|
算法
某圈app算法分析
某圈app算法分析
23 0
|
域名解析 缓存 资源调度
网站与APP抓包分析2 分析方法案例
关键词:网站、APP、数据交互、资源加载、流程分析
1062 0
网站与APP抓包分析2 分析方法案例
|
域名解析 缓存 资源调度
网站与APP抓包分析2 分析方法案例
简介:基于网络协议与相关工具对网站与APP应用数据交互流程进行分析。 关键词:网站、APP、数据交互、资源加载、流程分析
1300 0
|
11天前
|
移动开发 小程序
如何让uni-app开发的H5页面顶部原生标题和小程序的顶部标题不一致?
如何让uni-app开发的H5页面顶部原生标题和小程序的顶部标题不一致?
|
11天前
|
API 数据安全/隐私保护 iOS开发
利用uni-app 开发的iOS app 发布到App Store全流程
利用uni-app 开发的iOS app 发布到App Store全流程
116 3
|
11天前
|
Android开发 开发者 UED
个人开发 App 成功上架手机应用市场的关键步骤
个人开发 App 成功上架手机应用市场的关键步骤