转载自:http://www.secbuff.com/ios/215.html?d=3

0×00 说明

斗鱼是自己非常喜欢的一家直播平台,由于经常在斗鱼看lol比赛,加上又是武汉的互联网企业,所以就逆向了下斗鱼,看能不能过签名校验。

首先我们正常登录APP,可以正常加载APP各种页面,登录的时候再尝试用QQ号登录,会正常来到授权页面。如下图:

0×01 签名校验分析

一般APP的签名验证有3种:本地验证、网络验证、本地验证+网络验证,其中本地验证也分Java层和Native层验证。那么要分析APP的是否存在签名校验一般的方法是先反编译APP,然后直接回编译再签名,运行APP查看是否存在闪腿或者弹toast提示签名错误。斗鱼的签名验证有问题的时候会无法连接网络,如果再尝试用QQ进行辅助验证的话就可以很明显看出存在签名校验,如下图:

0×02 签名分析

首先我们在启动斗鱼的时候抓包,发现一处可疑之处:

header头中有个dy-sign的字段,我们是否可以猜测是不是签名校验中的网络校验,先把获取到的app校验值传给服务端进行判断,如果正确在是正版app。,否则就是伪造的app。那么我们直接反编译app,不做任何修改,启动自己签名的app后在把dy-sign改成前面获取的看看:

我们看到返回200,但是后面进去后太少加载网络失败,看来有可能存在本地验证。

根据前面介绍的,发现使用伪造签名的app时。进去后会提示无法连接服务器,加载失败的提示,所以就先根据这个错误提示来找找看:

上面的图片就是根据提示信息,找到这个提示消息所对于的string name,然后根据string name找到这个提示信息的ID号,在全局搜索ID号,查看哪里有调用的地方,一步步分析。

通过jd-gui查看调用的java代码,并没有发现有0x7f080304的地方,我们把0x7f080304变成十进制再搜可以搜索,但是并没有什么卵用。

0×03 分析android系统获取签名方法

我们知道如果要做签名验证,app必须调用系统的一个api方法:

packageInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES );
我们在看下packagemanager类实现:
下面是实现整个签名的过程
通过前面分析我们可以手动搜索signature或者getpackageinfo\getpackagemanager等等关键字进行找到签名的地方,再在smali代码中修改相应代码就可以绕过,但是这种方法太麻烦,通过全局搜索会得到大量的关键字信息,一个个看太耗时。此时我们可以直接hook系统的java.security.Signature这个接口,直接让系统获取的签名永远返回true,这样就绕过了app的签名校验了,直接用xposed就非常简单了:
public void initZygote(StartupParam startupParam) throws Throwable {
     
           XposedHelpers.findAndHookMethod( "java.security.Signature" ,null, "verify" , byte[].class,new XC_MethodHook(){
              protected void afterHookedMethod(MethodHookParam param) throws Throwable {
                  XposedBridge.log( "disabled verifysignature......" );
                  param.setResult(Boolean.TRUE);
              }  
         });
通过这种方法就可以完美绕过app的签名校验。
0×04 总结
由于android的开源特性,可以说攻击者和保护者根本不在一个纬度上,对于移动端的安全来说,很多东西(反调试策略、加固)都可以通过研究源码来进行绕过,以达到攻击者的纬度。签名校验可以说是app最基本最重要的保护方法,如果app的签名被逆向绕过的话,恶意攻击者就可以写入任意恶意代码,发布到各种平台上让用户下载,从而实现恶意行为(短信拦截、偷开摄像头、录音、支付监控、激活设备管理器防卸载等等)。
对于签名保护,比较好的方法是本地验证+网络验证。对于本地验证要求验证在native层中进行,然后需要对相应的so进行加固处理。网络验证就需要对上传的sign参数进行处理,避免用户直接拦截数据包进行替换绕过验证

转载请注明:SecBuff » 斗鱼APP签名校验绕过

斗鱼APP签名校验绕过相关推荐

  1. Android App签名(证书)校验过程源码分析

      Android App安装是需要证书支持的,我们在Eclipse或者Android Studio中开发App时,并没有注意关于证书的事,也能正确安装App.这是因为使用了默认的debug证书.在A ...

  2. autojs用签名校验保护app

    牙叔教程 简单易懂 测试环境 Autojs版本: 9.0.4 Android版本: 8.0.0 Android Studio版本: 4.1.2 签名概念 目的: 为了确认某个信息确实是由某个发送方发送 ...

  3. 【算法上车③】华为摄像头rpm签名校验并安装调试

    文章目录 一.APP 签名校验 1.登录网页申请配额 2.点击"申请配额",并填写申请 3.查看申请情况 4.待申请通过后进行设备绑定 5.申请签名 6.刷新并下载签名 二.将算法 ...

  4. 安卓逆向_19( 一 ) --- APK保护策略【APP打开就崩溃 之 霸哥apk过签名校验】

    From:霸哥磁力搜索apk 过签名校验:https://www.cnblogs.com/LuLuLuHao/p/12863978.html 霸哥磁力搜索app回编签名:https://www.ssf ...

  5. Android5.1.1 - APK签名校验分析和修改源码绕过签名校验

    作者:寻禹@阿里聚安全 APK签名校验分析 找到PackageParser类,该类在文件"frameworks/base/core/java/android/content/pm/Packa ...

  6. app运行时签名校验

    有时候我们为了防止自己的应用被反编译后重新打包,不得不采取运行时进行签名校验的方式. 因为会经常用到,所以在这里整理了一下校验方式. public class SignCheck {private C ...

  7. Android App运行时签名校验

    有时候我们为了防止自己的应用被反编译后重新打包,不得不采取运行时进行签名校验的方式. 因为会经常用到,所以在这里整理了一下校验方式. public class SignCheck {private C ...

  8. 安卓逆向_18 --- APK保护策略【Java代码混淆、资源混淆、签名校验】

    Java 代码混淆介绍:https://www.bilibili.com/video/BV1UE411A7rW?p=60 Android 反编译利器 jadx:GitHub上直接下载:https:// ...

  9. Android逆向【4】:暴力破解APK签名校验,愉快的重新打包微信支付宝APK

    回顾 <Android逆向小技巧③:批量注入日志,打印目标程序执行流程> 在上一篇2019年的文章中,我们使用python写了一个简单的文本处理工具: https://github.com ...

最新文章

  1. 台湾国立大学郭彦甫Matlab教程笔记(16) 数值微分 numerical differentiation
  2. oracle 临时表存在哪里_openGauss魔改PG?它能兼容Oracle的数据库表吗?
  3. WebApp 里Meta标签大全
  4. php 模拟ip访问网页,curl模拟浏览器,ip,来源,进行网站采集的实现方法
  5. OpenCV的Mat和Halcon的HObject类型互相转换
  6. 火遍日本 IT 界的「鱼书」终出续作,原来进阶深度学习竟然那么简单(文末赠书)...
  7. chrom浏览器配置,把跨域保护关闭
  8. 《现代通信原理学习》(二)随机信号分析
  9. 纬地道路纵断面设计教程_中铁城际总结公路设计应掌握的知识要领解答
  10. VM虚拟机安装win7系统(亲测可用!!!)
  11. 如何设置分享到微信朋友圈时链接的图片及标题
  12. ArcEngine实现动态加载地图
  13. EgretInspector谷歌浏览器扩展
  14. MySQL连接、SSL加密与密码插件
  15. java飞机_使用java写出飞机小游戏
  16. ionic platform add android环境搭建之难产【i1】【小白-2016.11.5】
  17. 迅雷百度网盘不能下载资源 办法总比困难多
  18. 【入门向】Navicat for MySQL的入门简单使用
  19. Sophos XG Firewall SFOS 18.0 下载 百度网盘
  20. if else python格式_python 基本的if_else使用

热门文章

  1. 信息安全学习(不断更新),希望可以坚持下去。
  2. 米软科技单病种质量管理智能上报系统之版本区分
  3. 新媒体运营教程:直播流量获取秘籍,建议收藏!
  4. keepalived心跳检测脚本
  5. 云擎未来,智信天下:2023移动云大会主论坛抢“鲜”看
  6. 实战:云开发·实现奶茶店小程序(一)
  7. windows7通信端口初始化失败解决方案
  8. 2019年中国外贸四大猜想
  9. python 汉字识别训练数据生成_中文识别数据集生成脚本
  10. 应用宝手机端打开指定应用链接,支持未上线应用