APP对抗-反证书校验

反证书检验:SSL证书绑定(单向校验和双向校验)

单项校验:客户端校验服务端的证书。

双向校验:客户端不仅要校验服务端的证书,同时APP内也存在证书供服务端检验。

一、反单向校验

0.0 Xposed简介

Xposed是一款可以在不修改APK的情况下影响程序运行的框架,基于它可以制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。在这个框架下,我们可以编写并加载自己编写的插件APP,实现对目标apk的注入拦截等。

原理:控制zygote进程,通过替换/system/bin/app_precess程序控制zygote进程,使得它在系统启动的时候会加载Xposed framework的一个jar文件即XposedBridge.jar,从而完成对zygote进程及其创建的Dalvik/ART虚拟机的劫持,并且能够允许开发者独立的替代任何class。

1.1 准备工作

模拟器准备:逍遥模拟器,安卓7系统(64位)

准备APK工具:JustMePlush.apk、JustTrustMe.apk、XposedInstaller.apk、终端模拟器.apk

现将工具安装完成:

现在打开XposedInstaller,显示Xposed框架尚未安装

打开模拟器分享文件夹,将xposed文件夹复制进行

在模拟器里的找到该文件夹,并将他复制到system文件夹下

接下来使用终端模拟器.apk执行系统命令su提升至root权限

接下来进入system文件夹中的xposed文件夹,并运行其中的memu-script.sh脚本文件

重启模拟器后,再次进入Xposed Installer,已经显示安装成功了

1.2 开始反单向证书校验

打开Xposed Installer的模块功能

将以下两个模块勾选上,然后重启模拟器

在vuls.apk软件中执行SSL Pinning,成功访问,此时反单向证书校验已经完成。

二、反双向校验

0.0 Firda简介

Firda 是一款易用的跨平Hook工具, Java层到Native层的Hook无所不能,是一种动态的插桩工具,可以插入代码到原生App的内存空间中,动态的去监视和修改行为,原生平台包括Win、Mac、Linux、Android、iOS全平台。

1.1 准备工作

系统准备:夜神模拟器 + 安卓7(x86)

工具准备:Frida、frida-serverFridaScripts(SSLUnpinning.js)、frida-server、BurpSuite

1.2 开始反双向证书校验

本次使用的方案为:Firda + HOOK-JS + BurpSuite

这里的HOOK-JS指的是FridaScripts中的SSLUnpinning.js脚本

1.2.1 本地安装Frida

pip install frida
pip install frida-tools

安装成功会显示Frida的版本,我这里是frida-16.1.4

1.2.2 模拟器安装Frida-server

下载地址:GitHub - frida/frida: Clone this repo to build Frida

首先需要确定模拟器系统是x86还是x64的,使用以下命令可以查看系统位数。

getprop ro.product.cpu.abi

在Release中选择与本地frida版本相同的frida-server,我这里是x86的所以选择下面红色方框的。前面两个是用于真机的,后面两个才是用于模拟器的。

下载下来之后,利用 adb 将 frida-server 传上模拟器

添加执行权限,并执行frida-server-x86

新开一个命令行窗口,执行frida-ps -U,如果有显示进程则frida-server运行成功

1.2.3 转发并启动Frida

adb forward tcp:27042 tcp:27042

在输入以上命令后,通过frida-ps -R查看是否发现进程,如果有进程则转发成功。

1.2.4 正式实施

先在模拟器上运行frida-server

开启代理抓包

获取目标APP的包名

输入命令开始绕过证书双向校验

frida -U -f com.p1.mobxxx.xxxxxxx -l SSLUnpinning.js

已经成功抓取APP的数据包,并且不会影响任何的数据交互。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于uni-app中的表单校验,你可以使用一些常见的方法和插件来实现。 1. 使用HTML5表单属性:可以使用HTML5的表单属性来进行基本的前端校验,如`required`、`maxlength`、`minlength`等。这些属性可以在input标签中直接添加。 2. 自定义校验方法:可以使用JavaScript或Vue组件中的方法来进行自定义的校验逻辑。你可以在提交表单时触发校验方法,然后根据需求进行相应的校验逻辑,比如检查输入的格式是否正确、是否符合要求等。 3. 使用第三方校验插件:uni-app支持引入第三方校验插件来简化表单校验的过程。一些常见的插件包括VeeValidate、AsyncValidator等,它们提供了丰富的校验规则和功能,可以更高效地完成表单校验。 以下是一个使用VeeValidate进行表单校验的示例: 首先,安装VeeValidate插件: ``` npm install vee-validate ``` 然后,在你的uni-app项目入口文件中引入和配置VeeValidate: ```javascript import Vue from 'vue'; import VeeValidate from 'vee-validate'; import zh_CN from 'vee-validate/dist/locale/zh_CN'; Vue.use(VeeValidate, { locale: 'zh_CN', }); VeeValidate.Validator.localize('zh_CN', zh_CN); ``` 接下来,在你的表单组件中使用VeeValidate进行校验: ```vue <template> <form @submit="submitForm"> <input v-model="name" name="name" v-validate="'required'" :class="{ 'is-invalid': errors.has('name') }"> <span v-show="errors.has('name')" class="error">{{ errors.first('name') }}</span> <input v-model="email" name="email" v-validate="'required|email'" :class="{ 'is-invalid': errors.has('email') }"> <span v-show="errors.has('email')" class="error">{{ errors.first('email') }}</span> <button type="submit">Submit</button> </form> </template> <script> export default { methods: { submitForm() { this.$validator.validateAll().then(result => { if (result) { // 校验通过,进行表单提交操作 } }); }, }, }; </script> ``` 这是一个简单的示例,你可以根据具体的需求和业务逻辑来扩展和调整表单校验的规则和方法。希望对你有帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值