当前位置: 首页 > news >正文

某得物 - WebView App H5调试

⚠️前言⚠️

本文仅用于学术交流。
学习探讨逆向知识,欢迎私信共享学习心得。
如有侵权,联系博主删除。
请勿商用,否则后果自负。

说明一下

本文不涉及算法还原,仅记录一下

  • 如何调试 App H5
  • 定位加密位置

App版本与入口

  • app版本:5.31.1
  • app - 主页 - 心愿海洋 - 领鱼食任务列表

一. 什么是WebView? 特地去问了一个 kimi,我们来简单了解一下。

i. WebView 是用来做什么的?
WebView 是一种用于在应用程序中嵌入网页内容的组件,它允许用户在应用内部浏览网页,而无需打开独立的浏览器。
WebView 广泛应用于各种开发平台,包括 Android、iOS 和桌面应用程序开发中。

在 Android 开发中,WebView 是一个强大的组件,用于嵌入网页内容。它基于 Chromium 浏览器引擎,支持 HTML5 和 JavaScript。

在 iOS 开发中,WKWebView 是 WebView 的现代版本,属于 WebKit 框架的一部分,用于替代旧的 UIWebView。支持多线程渲染,性能更优。
支持 JavaScript 与原生代码的双向通信。可以通过 WKNavigationDelegate 和 WKScriptMessageHandler 管理网页加载和交互。

ii. WebView 的优势
用户体验:用户无需离开应用即可浏览网页内容。
功能集成:可以方便地将网页功能集成到原生应用中。
跨平台:支持多种操作系统和开发框架。

二. WebView 打开调试

WebView.setWebContentsDebuggingEnabled 是 Android 开发中用于开启或关闭 WebView 调试功能的方法。
通过调用 WebView.setWebContentsDebuggingEnabled(true) 开启调试功能。
【位置定位】可在jadx中全局检索 setWebContentsDebuggingEnabled。

为 true 时, 表示可调式。若为 False, 则需 frida hook 开启调试。

Java.perform(function(){
    var WebView = Java.use('android.webkit.WebView');
    WebView.$init.overload('android.content.Context').implementation = function(a){
        var result = this.$init(a);
        this.setWebContentsDebuggingEnabled(true);
        return result;
    }
    WebView.$init.overload('android.content.Context', 'android.util.AttributeSet').implementation = function(a,b){
        var result = this.$init(a,b);
        this.setWebContentsDebuggingEnabled(true);
        return result;
    }
    WebView.$init.overload('android.content.Context', 'android.util.AttributeSet', 'int').implementation = function(a,b,c){
        var result = this.$init(a,b,c);
        this.setWebContentsDebuggingEnabled(true);
        return result;
    }
    WebView.$init.overload('android.content.Context', 'android.util.AttributeSet', 'int', 'int').implementation = function(a,b,c,d){
        var result = this.$init(a,b,c,d);
        this.setWebContentsDebuggingEnabled(true);
        return result;
    }
    WebView.$init.overload('android.content.Context', 'android.util.AttributeSet', 'int', 'boolean').implementation = function(a,b,c,d){
        var result = this.$init(a,b,c,d);
        this.setWebContentsDebuggingEnabled(true);
        return result;
    }
    WebView.$init.overload('android.content.Context', 'android.util.AttributeSet', 'int', 'java.util.Map', 'boolean').implementation = function(a,b,c,d,e){
        var result = this.$init(a,b,c,d,e);
        this.setWebContentsDebuggingEnabled(true);
        return result;
    }
    WebView.$init.overload('android.content.Context', 'android.util.AttributeSet', 'int', 'int', 'java.util.Map', 'boolean').implementation = function(a,b,c,d,e,f){
        var result = this.$init(a,b,c,d,e,f);
        this.setWebContentsDebuggingEnabled(true);
        return result;
    }
})

三. 暗坑 - frida 反调试

  • WebView 开启调试的方法,一般在 app 启动时被调用。
  • hook 过程中 app 频繁闪退
  • 这个时候我们需要hook看一下,app 在启动过程中都调用了那些 so 文件,并且在那个so文件执行的时候导致app闪退的。

在这里插入图片描述

  • 通过 hook 日志可以看到执行到 libmsaoaidsec.so,app 闪退
  • 一般公司的安全人员会单独写so文件用来检测,我们可以按照打印路径尝试删除/重命名试一下
  • 当然若修改后行不通, 就需要用ida打开该so文件看看了, 看看具体是字符串检测还是线程检测,有针对性的进行hook操作

在这里插入图片描述

  • 修改完成后,app就不会再出现闪退的现象了

4. 调试

  • WebView 开启调试后,app进入要调试的 H5 页面,chrome 浏览器输入 chrome://inspect/#devices
    在这里插入图片描述

  • 整体就是这个样子的,我们就可以开始抓包调试js了
    在这里插入图片描述

  • 目标数据包 data 参数

在这里插入图片描述

  • ajax 断点

在这里插入图片描述

  • 调试找到如下位置:这里调试起来有点费劲,搞了好久 【或者可以全局检索 ‘data’】

在这里插入图片描述

  • 加密入口,目标js文件【 poreinforce.js】
    在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

==== 扣代码的操作不作为本节重点,略过。 ====

相关文章:

  • dataframe能否把列表里所有的NaN换成列表上一位的数字?
  • 蓝桥杯备考:动态规划路径类dp之迷雾森林
  • ubuntu 20.04下ZEDmini安装使用
  • 【 <一> 炼丹初探:JavaWeb 的起源与基础】之 JSP 中的内置对象:request、response、session 的使用示例
  • C++11新特性:auto遇上const时的推导规则
  • blender看不到导入的模型
  • YOLOv12本地部署教程——42%速度提升,让高效目标检测触手可及
  • 要查看 SQLite 数据库中的所有表,可以通过查询 SQLite 的系统表 sqlite_master
  • 从0到1搭建315答题抽奖小程序:技术踩坑与运营真相
  • 【Vue CLI脚手架开发】——6.scoped样式
  • javascript字符串截取有哪些
  • RabbitMQ知识点
  • 二叉树-验证二叉搜索树
  • 计算机网络开发(2)TCP\UDP区别、TCP通信框架、服务端客户端通信实例
  • RV1126采集VI视频数据流
  • 【QWEN】机器人控制器的控制周期越短精度越高吗
  • Kotlin D1
  • 模块15.常用API
  • Java接口(3)与图书管理系统
  • Android 多用户相关
  • flash网站怎么做/百度一下官方网
  • html国外网站源码/百度搜索引擎入口登录
  • 互动平台抽手机/东莞网站优化公司
  • 外贸官网建设/谷歌seo快速排名软件首页
  • 长白山网站学做管理平台/谷歌seo技巧
  • 做网站找模版好吗/苹果看国外新闻的app