目录

前言

分析

加密参数分析

webview调试

1.webviewdebughook调试

2.webviewpp调试

源码静态分析

x-request-id

x-token

sign:

web端调试,逆向

uniapp调试分析

流程分析

尝试主动调用

广告(不喜忽略)

结语


前言

昨晚我群里有个老哥在问移动端滑块怎么分析

因为大多app端的滑块都是加载在webview上的

我当时突然就想到才没几天搞定的一个app,也有webview部分的操作,因为是用uni打包的,所以实际走的还是webview。而uni相关的其实之前发过一篇  对uni-app开发的某app逆向分析

不过今天这个app有点不同,我感觉是值得记录的,所以准备再写一篇有关这个的

分析

首先,打开这个app,抓包,左边就是想要的数据,右边就是抓到的包

然后加密参数有几个


x-request-id
x-token
sign

然后返回有加密

加密参数分析

首先就是对app一顿分析

搜一个sign:

一开始我并不知道这个app是uni-app打包的,一搜,发现最后一个,这个assets/apps/xxxxx/app-services.js有点可疑,因为它也可能并没有用到这部分的代码。

为了进一步确认,用android studio自带的devices monitor工具发现果然是webview,那基本就确定是uni打包了。

插一句,我用的android studio 版本是4.1.1,然后你需要装jdk1.8,然后到sdk tools里,把相关的安装下,然后如果你的sdk目录有这个就行了,不然启动报错。

详细的百度即可

webview调试

1.webviewdebughook调试

那么,既然是webview,那就准备用webview调试一波,也就是文章开头我群里的大佬 @qxp 说的路子。

当然这个部分 @孤雁逐云 也发过相关的文章,这里我就不详细解释了,就大概的展示下

用xp插件,对该app开启webviewdebugg:

https://github.com/feix760/WebViewDebugHook

然后用chrome浏览器打开这个网址(第一次打开要开下科学软件,打开了就可以把科学关了)

chrome://inspect/#devices

静等一会儿,这个加载有点慢,等出现有设备就行了。然后点【inspect】,就会出来一个弹窗,类似web页面的调试工具,然后就是正常的分析了。以前用它分析过某宝 app端的滑块:

但是,今天很奇怪,啥都没有

昨天都还可以加载的,有点迷,没任何东西了。

有时候环境很容易把人搞迷,不过没事,不能在一棵树上吊死,换一个工具

2.webviewpp调试

之前 @孤烟逐云 老哥给我推荐过一个新的工具:

https://github.com/WankkoRee/WebViewPP

这个也是xp插件,直接在手机端上操作,用它来看看:

首先点开

然后点这个:

然后点组件左边的下载图标,管他有没有用,全都下载了再说

下载完回去,选这个hook规则管理:

找到你的目标app

点进去,把下面的全都点亮

然后再点这个,把主流的规则全都点一遍

点完就会自动出现这些hook代码:

你觉得不行还可以自己写你要的

这样就配置好了,然后这个webviewpp在后台,别关了,现在启动目标app,进入你要调试的页面,这右下角就自动出来了两个浮窗按钮

点一下,选到network:

然后刷下页面,下拉加载数据接口,结果发现,一直是空,

调试工具里根本没有抓到请求包,啥都没有,这就尴尬了。查阅uni相关资料,发现应该是js层发请求,所以,这样是抓不到,那这个就没法了,抓不到网络包,那就没法调试了。尴尬。

源码静态分析

既然无法动态调试,那只能先静态调试了

先对该app解包,然后直接来到assets文件夹里的这个目录的这个文件里:

直接搜那几个加密参数:

x-request-id

x-token

sign:

然后这里是返回解密逻辑:

走一遍逻辑,发现x-request-id,看着很像uuid4

x-token 到这里就g了,这个参数,我完全不知道他怎么调用的,传的这个f是干嘛的

我去,线索断了,这就尴尬了。

中途我试过,找到app-services.js,加入以下内容

然后重打包app,重新安装(mt管理器操作),然后借助webview调试,发现啥都没有,这就尴尬了。

我猜测大概率是这个js把console.log方法改写了,不让我输出,之前ibox就是这样的

在我一筹莫展之际,突然想起,这apk是uni打包,而且核心逻辑还在js里,那很大概率有web端网址,一顿操作之后发现,果然有web网站

web端调试,逆向

打开之后,直接看调用栈,这对于我放弃js大半年的人的来说,属实生疏了,唉

不需要花太多时间,就跟到了实际的逻辑:

最后根据我的一顿分析:总结如下:

x-token是下面的接口返回的:

加密逻辑也跟上面一致,然后我一运行

g了,反正就是怎么也不出正常的结果。

最后呼唤算法还原大佬 @小小白,一顿操作帮我还原了:

是真的牛逼啊卧槽。

但是,话说,不是说好的app吗,咋整到js上去了。想一下,假如,它这个js,有强混淆,而且很难调试的话,怎么办?或者说,我就是要在app层面进行分析呢?

终于到了本篇文章的重头戏。

根据我查阅相关的资料,其实uni开发的,有好几种模式,但是实际还是借助了webview,以及jsbridge,进行联调,然后实现app端的数据交互

那么思路有以下:

1.hook webview,找逻辑2.hook jsbridge相关类,找逻辑3.hook uni 与安卓原生对接的api,找逻辑4.hook 安卓原生json类

我的直觉,第三种可能更好用,一顿操作后发现,根本不行

uniapp调试分析

最后偶然看到它的文档里【org.json.JSONArray】类,果然还是要走json类啊,hook完,发现确实有,

然后再一步步跟逻辑找逻辑,跟到这个类:

【io.xxxxx.xxxxx.JSONUtil】,objection hook结果:

继续hook这几个方法,然后手机翻页看看,看看它这个入参,发现就是最后的页面数据了,但是这个数据结构有点奇怪

对比下手机页面的数据,和这个入参,确实对上了

再看看调用栈:有点东西啊,还用的tb的webview组件

流程分析

然后根据我的分析,实际的逻辑就是(不一定对,部分方法名已脱敏)

整理下:

1.先用io.xxxxx.AdaUniWebView初始化view
2.用io.xxxxx.evalJS预加载js代码
3.再用io.xxxxxx.xxx.execSync 生成view对象
4.再用io.xxxxxx.xxxx.exec 用上面生成的对象发起请求
5.用io.xxxx.xxxx.prompt 实际请求
6.js 原生执行js
7.用io.dcloud.common.util.JSONUtil.createJSONArray 接收js代码返回的对象,里面包含实际的数据(js部分已经解密好)

部分代码可见:

尝试主动调用

我用xp插件,尝试主动调用,提炼下逻辑:

结果失败了,貌似是不认我的传入的参数,那就没法了。

那思路就只有,用xposedappium之类的操作,然后hook拿结果了。具体流程这里就不展示了。

如果要完成最后拿数据的目标的话,当然最方便的还是直接走web端拿数据。

如果没搞错的话,只要是uni开发的app,这一套应该都是通用的,所以你懂我意思吧

广告(不喜忽略)

结语

工作避坑&内推(仅成都)、技术交流、商务合作、技术交流群

扫码或者搜ID:geekbyte

对某数藏app逆向安全分析相关推荐

  1. 数字藏品是什么:数藏app开发

    据小编了解,NFT的英文全称为Non-FungibleToken,翻译成中文为非同质化代币,其现阶段主要运用于表示数字资产,包含以图片头像或是视频编辑形式的方式来进行唯一加密货币令牌,如此一来就可以用 ...

  2. 知物由学 | 干货!一文了解安卓APP逆向分析与保护机制

    "知物由学"是网易云易盾打造的一个品牌栏目,词语出自汉·王充<论衡·实知>.人,能力有高下之分,学习才知道事物的道理,而后才有智慧,不去求问就不会知道."知物 ...

  3. 某直播APP逆向TCP协议分析

    概述 一枚小菜鸟终于完成对炫舞梦工厂APP的分析.该直播APP采用TCP协议,TCP连接建立之后,首先进行基础连接认证,认证通过之后,进行帐号认证,完成即可进行获取角色信息.进入房间等各类操作.发送数 ...

  4. 某App逆向分析,破解提交参数

    最近在学app逆向,记录一下破解过程. 环境: 模拟器,eclipse,httpcanary,jeb 一.先配置好模拟器环境,打开抓包软件分析参数 软件有模拟器检测,我们先用jeb分析一下 搜索&qu ...

  5. 【该文章已被封禁】区块链钱包APP逆向分析及实现

    [区块链钱包APP逆向分析及实现]该文章已被封禁,需要看的兄弟姐妹们,请打开下面个人的博客进行查看: 0.原文链接:点击我进行打开: https://qqizai.gitee.io/qqizai/vi ...

  6. 逆向工程--苹果移动端app逆向分析技术(一)

    0x01 基础准备 关于iphone移动端app逆向程序相关初级基础大家可以自己提前学习.本 文主要给大家分享关于脱壳加密app程序的技术.学习之前大家先搭建系 统环境,准备相应的工具,参考链接教程自 ...

  7. 某x动漫app逆向分析

    某动漫app 返回数据加密分析 目录 某动漫app 返回数据加密分析 前言 一.问题 1.1抓包返回加密数据 1.2查壳 二.分析 1.1 jadx-gui 1.2 全局搜索加密函数 1.3 疑似方法 ...

  8. 数藏行业周报(06.20-06.26)

    行业周报 6月20日-6月26日 本周,传媒出版行业表现亮眼,数字化时代下,传统纸媒图书行业以数字藏品为媒介找到了未来的破局之路,能让传统出版物不被淡忘,同时数字藏品的可溯源性.唯一性等特性能很好地利 ...

  9. app逆向篇之实战案例-某音乐app

    提示!本文章仅供学习交流,严禁用于任何商业和非法用途,如有侵权,可联系本文作者删除! 前言 最近初学app逆向,该文章仅用来记录学习分析的过程,如有不对的地方,希望各位大佬能不吝指点 下载地址:apk ...

最新文章

  1. Bootstrap3.1开发的响应式个人简历模板
  2. tp3.2.3权限控制一之详解及demo
  3. 了解员工工作的四种方法
  4. Python 之协程
  5. String类中的equals方法与Object类中的equals方法的不同点
  6. SQLite学习手册(内存数据库)
  7. linux5.9安装教程,Linux内核5.9的最重要功能及安装方法
  8. 网络上各台计算机语言,人类使用语言来交流,同样,网络上的各台计算机之间也用某种语言交换信息,这样的语言通常指()。...
  9. 第4章 MySQL数据库结构优化
  10. The world’s largest
  11. 操作系统源代码_计算机自制操作系统(八):仿生DOS操作系统源代码
  12. 用Sql Server 2000的数据库备份来还原Sql Server 2005中的数据库
  13. hashset去重原理_快手:Druid精确去重的设计与实现
  14. 小米路由mpk插件二维码_小米WiFi6路由器新品:修改密码自动同步已连接设备,这功能不错...
  15. ubuntu18.04编译Open Pose 1.7
  16. python写一个网络测速脚本_网络测速工具——Speedtest
  17. 数学分析对计算机有帮助吗,计算机辅助数学分析教学的好处
  18. 本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”
  19. 应届毕业生找软件测试工作实习的心得(一)
  20. 威斯康星麦迪逊计算机专业排名,威斯康星大学麦迪逊分校计算机专业详解

热门文章

  1. 学计算机的目标作文,计算机学习计划作文.doc
  2. 教你把好听的背景音乐设置成铃声
  3. 应收票据、存货的核算
  4. 阿柏西普药物行业头部企业市场占有率及排名调研报告
  5. 任务计划重启计算机服务器,Windows2003服务器使用计划任务重新启动计算机
  6. Flink核心技术与实战(1)- watermark
  7. 一级计算机考证时间安排
  8. lepad k1 android 4,软硬齐升级 安卓3.1版联想乐Pad K1评测(7)
  9. 【verilog】计数器
  10. CWE-128: Wrap-around Error(环绕错误)