mx player MX播放器 去除签名校验

查看 40|回复 5
作者:芽衣   
升级了安卓15,之前用的旧版打不开了,于是去外网找了个新版,结果发现有有各种各样的弹窗,也不知道是不是远程控制的,所以打算自己弄个去广告的版本。这个播放器我一直在用,不仅界面友好,而且支持的格式也多,从有安卓手机开始就一直在用这款播放器。
软件分广告版和pro版,区别仅仅是有无广告,功能上区别不大。
教程使用的包名是com.mxtech.videoplayer.ad,64位,版本1.88.3。pro版本不知道去哪里下载。
帖子比较水,没有什么技术含量,了解就行了。
去广告就不说了,都是很简单的内容。


1.png (277.24 KB, 下载次数: 0)
下载附件
2025-1-28 21:14 上传


首先重签名,打开闪退,发现是libmx-bh.so罢工了。不多说丢进ida分析,看看是什么毛病。
按照标准流程先搜索字符串signature,然而并没有发现有用的地方。


2.png (19.67 KB, 下载次数: 0)
下载附件
2025-1-28 21:20 上传

然后再查看输出表,有一些java开头的函数,我们反编译dex看看,都是些什么东东。


3.png (16.49 KB, 下载次数: 0)
下载附件
2025-1-28 21:21 上传

Java_com_ddx_axx_axx_axx_BH_t → public static native t()V
Java_com_ddx_axx_axx_axx_BH_n → private static native n(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;[BLjava/lang/String;)V
Java_com_ddx_axx_axx_axx_BH_w → public static native w([Ljava/lang/String;)V
Java_com_ddx_axx_axx_axx_BH_n1 → public static native n1(Ljava/lang/Object;)Z
Java_com_ddx_axx_axx_axx_AS_e → public static native e([BIZ)[B
以上是对应的java方法名,从结构上可以看出,如果要藏签名校验的话肯定会在n方法名内,故双击Java_com_ddx_axx_axx_axx_BH_n进入。
__int64 __fastcall Java_com_ddx_axx_axx_axx_BH_n(JNIEnv *a1, __int64 a2, __int64 a3)
{
  __int64 result; // x0
  __int64 v6; // x0
  _BYTE v7[8]; // [xsp+8h] [xbp-8h] BYREF
  __int64 v8; // [xsp+28h] [xbp+18h] BYREF
  result = ((*a1)->GetJavaVM)(a1, &v8);
  if ( !result )
  {
    sub_32ABC();
    sub_3D448(v7);
    sub_42460(a1, a3);
    sub_2FF5C(v8);
    v6 = operator new(0xB8uLL);
    *(v6 + 176) = 0LL;
    *v6 = 0u;
    *(v6 + 16) = 0u;
    *(v6 + 32) = 0u;
    *(v6 + 48) = 0u;
    *(v6 + 64) = 0u;
    *(v6 + 80) = 0u;
    *(v6 + 96) = 0u;
    *(v6 + 112) = 0u;
    *(v6 + 128) = 0u;
    *(v6 + 144) = 0u;
    *(v6 + 160) = 0u;
    sub_3D474();
    return sub_2F274(a1);
  }
  return result;
}
前面的函数没什么可看的,注意到后面sub_3D474,我点进去以后发现了更多的代码,特别是这个sub_3D65C,非常引人注目。


4.png (38.91 KB, 下载次数: 0)
下载附件
2025-1-28 21:36 上传

因为进入以后又跳转了一次,而且代码明显是经过混淆的,好像在极力隐藏些什么。我盲猜这里和签名校验有关,所以是不是禁止加载这个函数就可以解决问题呢?
首先为了验证我的猜想,先禁止加载该函数,看看能否正常启动。


5.png (127.1 KB, 下载次数: 0)
下载附件
2025-1-28 21:47 上传



6.png (101.77 KB, 下载次数: 0)
下载附件
2025-1-28 21:50 上传

  sub_43964(&v27, a2, a7);
  if ( (*(a1 + 40) & 1) != 0 )
    operator delete(*(a1 + 56));
  v24 = v28;
  *(a1 + 40) = v27;
  *(a1 + 56) = v24;
  v25 = operator new(0x20uLL);
  result = sub_2FD98(v25, 0LL, a1);
  *a1 = v25;
  return result;
如上图汇编代码,修改红框的即可,不能全部填nop,这样会导致指针异常。
第一个ADRP X1, #sub_3D65C@PAGE,直接nop掉,第二个ADD X1, X1, #sub_3D65C@PAGEOFF,改成MOV X1, XZR。
回填后启动看看……果然被我蒙对了

下载次数, 下载附件

sulliven980   

哪里有下载?
wecanfly9292   

以后安卓都开始不能用老版本了,或者没有32位的了?唉
芽衣
OP
  


wecanfly9292 发表于 2025-1-28 22:06
以后安卓都开始不能用老版本了,或者没有32位的了?唉

从皮鞋8开始已经不给用32位了,以后64位应该是主流。
sunyboy   

感谢分享,下载保存了
hanbazhen   

现在版本不好用,把视频移动到别的文件夹,会显示全目录,所以我一直在用老版本,
因为老版本移动视频会筛选出有视频的文件夹让你选(就是你打开播放器它显示的目录),老版本方便
您需要登录后才可以回帖 登录 | 立即注册

返回顶部