寻找 Java 应用程序漏洞的好时机!在过去的几个月里,我一直在尝试构建一个名为Captain Hook的工具,它使用动态方法来查找大型闭源 Java 应用程序的一些有趣(安全方面)特性。...要求 由于 Synacktiv 专家在寻找大型 Java 项目中的漏洞时将使用 Captain Hook,它应该: 易于在目标应用程序上设置。 易于使用,直观。...记录或不记录的内容应该是可定制的,并且默认为一组通常危险的本机 Java 方法。...使用 Frida,我的设置是在应用程序 VM 上安装 frida-server,从 Captain Hook 的 docker 连接并注入 Frida 脚本,如下所示: 使用本机 Java 代理,应将编译后的代理复制到应用程序...事实上,我没有看到保留它的意义,因为 Frida 也能够重新实现我选择的方法。我几乎不知道这个功能会给我带来这么多麻烦......
而Frida则于Xposed不同,它是一款轻量级的Hook框架,可用于多平台,相同的是它依然需要root环境。本文就以Android为例来详细说说如何安装并使用它。...PC端 首选要在电脑上安装Frida,官方的安装步骤是 pip install frida-tools # CLI tools pip install frida # Python bindings...npm install frida # Node.js bindings 很简单,但是在安装时回遇到很多问题,下面一一说一下 mac 在mac上安装失败,报错如下: "python setup.py...注意如果无法使用frida命令,则一定是frida-tools没有安装成功 windows 有了mac上的经验,我们在windows上安装前就可以先为pip设置阿里镜像。...$init(str, str1) } }); 示例中是hook了activity的onResume等方法,这样当hook的应用执行这些方法时就会触发,示例中是打印一条记录。
HOOK脱壳法 Hook脱壳法一般都是基于frida和xposed这两个框架进行做hook操作的。...脱壳方法: HOOK脱壳法 通过利用frida框架进行hook关键函数DexFile,OpenFile、dexFindClass等关键函数实现脱壳。...frida-Dexdump便是这种脱壳方法的代表作。...自定义系统和定制的android设备方法: 1、采用定制的android的rom,可以有效对抗市场中所有的加密壳、类抽取类型的壳;相比开源的脱壳工具,大体都是基于hook框架,例如frida、Xposed...;目前大多加固厂商已经对hook框架,以及脱壳框架的特征进行了安全检测,这会导致app启动失败,从而实现脱壳失败,而通过自定义的rom,没有依赖hook框架,也就没有相关框架特征代码标志,所以脱壳成功率会比较高
Objection是一款移动设备运行时漏洞利用工具,该工具由Frida驱动,可以帮助研究人员访问移动端应用程序,并在无需越狱或root操作的情况下对移动端应用程序的安全进行评估检查。...安装命令 pip3 install objection frida是一款便携的、自由的、支持全平台的hook框架,可以通过编写JavaScript、Python代码来和frida_server端进行交互...d2j-dex2jar.bat classes.dex 2、我们可以看到函数getSignatureString(byte[]),它由本机库实现。...的密钥通过方法 Scrambler::getstring() 获取。...反编译此方法会显示密钥是动态生成的: 4、Fook函数 import frida import sys session = frida.get_usb_device(1000000).attach
由此得见,我们从a方法就是我们的hook点,a方法的参数jsonObject str即是我们要获取的内容 编写脚本 import frida import sys # hook逻辑脚本 jscode...方法(即包装之前的a方法,类似于装饰器工能) return this.a( obj,str); }; }); """ # 通过usb连接方法 # process = frida.get_usb_device...-l hook.js python脚本使用自定义端口的方式: host = '127.0.0.1:1234' manager = frida.get_device_manager() device=...获取方法 // 有些重载的方法需要通过.overload()传入参数类型指定方法 // 通过方法的.call(args)来调用函数,通过方法的.implementations = function...PC本机,usb device对应连接的Android设备,remote device也是经过端口转发的Android设备 附加指定进程 $ frida-trace -i open -U <package_name
,是个轻量级so级别的hook框架,Hook的原理简单地说就是用一个新的函数替代掉原来的函数。...二、安装 frida由两部分组成:一部分是运行在系统上(Windows)的交互工具frida CLI,另一部分是运行在目标机器(Android)上的代码注入工具frida-server。...1、客户端安装 windows上安装frida使用python自带的pip即可,命令: pip install frida 问题1:python版本 windows的frida目前只支持python2.7...问题3:egg文件 执行到上一步操作时由于网络原因可能会出现error报错,多试几次,直到出现下面的报错: 这步下载frida-12.10.4-py3.7-win-amd64.egg失败,需要根据提示手动下载...最后吐槽一下GitHub下载文件的速度,如果下载太慢最好还是想办法挂个梯子。后续更新Frida的使用方法和实战案例,很全面很强大。
H5 Web App 的性能测试平台 : 使用 Frida 实现 AOP 拦截 hook Android 原生应用的方法 在做 App 上的 WebView 容器中的 H5 Web App 的性能测试平台的时候...,用到了这个 Frida ?...如果也有朋友用到,有问题的,可以给我留言~ Inject JavaScript to explore native apps on Windows, macOS, Linux, iOS, Android...看官网文档: https://www.frida.re/ Github: https://github.com/frida/frida
安装 ADB adb(Android Debug Bridge)即安卓调试桥,安装后可以在电脑上与手机进行交互,Android Studio 等工具里面会自带 adb,有时候我们并不想下载这么大的工具,...图片 所以我们这里就有多种过掉检测的方法: 方法一:Hook 三个检测方法,让它们都返回 false,不再执行后续的 a 方法,就不会退出 APP 了: Java.perform( function...mainActivity.a") } } ) 方法三:Hook onClick() 方法,点击 OK 后不让其退出 APP,注意这里是内部类的 Hook 写法: Java.perform...Hook,本例中,过 root 检测的时候,如果采用第一、二种方法,即 Hook 三个检测方法或者 a 方法,那就需要在 APP 启动的时候就 Hook,如果采用第三、四种方法,即 Hook onClick...APP 包名,查看 APP 名称和包名的方法有很多,这里介绍两个 frida 命令,frida-ps -Uai:列出安装的程序,frida-ps -Ua:列出正在运行中的程序,如下图所示,本例中 Uncrackable1
,通过hook的方式将此次校验的结果返回true或者干脆不让其做校验即可以绕过。...当安卓APP初始化SSLContext时,我们使用frida劫持SSLContext.init方法,使用我们自己创建的TrustManager , 把它作为实参传入SSLContext.init方法的第二个参数...Android低版本报错如下 夜神模拟器创建高版本Android 7并启动 利用adb连接模拟器,夜神模拟器adb连接默认是连接本机的62001端口,可是这里因为是新建的可能端口会有所变化,不过也还是在...设置burp证书 先在burp里设置本机代理 访问代理地址并下载burp证书 将下载的burp证书导入到模拟器中/data/local/tmp目录下,并重命名为cert-der.crt(此名称在接下来的...-U命令列出设备上运行的服务,找到途牛应用程序的包名 下载注入脚本,保存为fridascript.js /* Android SSL Re-pinning frida script v0.2
一、安装frida 在电脑上安装adb 安装adb是为了在电脑上通过adb与手机进行交互。...电脑上配置完后,现在需要下载frida-server保存到手机中,并启动frida-server,这样电脑上的frida客户端才能与手机中的frida服务端进行交互 frida-server下载,可在...以后台模式运行frida-server,这样电脑上的frida CLI就能够与frida-server进行交互,我们可以在电脑上使用frida来与android设备中的app交互(当然前提是手机要通过...、frida-kill等命令工具 frida tools命令工具的使用 除了frida命令行使用外,frida还可以通过python及JavaScript脚本来hook android设备中的应用程序...String后,就是我们想得到的正确的校验字符串,代码如下 下面是执行完aes解密方法脚本后,得到的结果,如下所示 综上所述,我们已经通过frida脚本完成了绕过app的检测及hook app校验字符串的方法从而得到真正的字符串
,xposed主要是对方法的hook,在以往的重打包技术中,需要对smali代码的进行修改,修改起来比较麻烦。...,主要是三个方法的调用,handleLoadPackage,主要是获取到android包的相关信息,这里由于只是对logintest进行hook,做下简单的判断。...$ adb push frida-server /data/local/tmp/ 运行 设备上运行frida-server: $ adb shell root@android:/ # chmod...700 frida-server $ adb shell root@android:/ # /data/local/tmp/frida-server -t 0 (注意在root下运行) 电脑上运行...: 用Xposed自身提供的XposedHelpers的findClass方法加载每一个类,然后再将得到的类传递给hook函数作参数!
IP 地址(即本机局域网 IP 地址) 在手机里面网络设置也要设置 手动代理模式 ,输入的 IP和端口 都要与 Burpsuite 一样 然后在手机浏览器访问 https://burp 这个地址,...插件安装完之后,记得启动插件,然后 重启手机 后插件才能生效 然后使用 Objection 进行绕过 Objection 是一款基于 frida 的 hook 框架,由于 frida 需要我们自己编写脚本...,使用比较麻烦,objection 内置了在安卓和 IOS 逆向中常用的一些 hook 脚本,我们通过简单的命令行就可以进行 hook 动态篡改,非常方便 因为 Objection 是基于 Frida...注入到目标 APP 应用程序上 objection -g 包名 explore 如果不知道 APP 包名,可以用以下命令进行查看,但是依然前提要启动了 Frida服务端程序 frida-ps -Ua...可以通过 frida 来 hook 住 APP 构造网络请求和接收数据地方的代码,然后打印出来请求和返回数据,这样 APP 向服务器进行的网络请求和接收的数据便一览无余了。
缺点就是,hook的太全,欺负欺负小厂的还行,大厂的反调试一上,分分钟教你做人。...https://github.com/lasting-yang/frida_hook_libart 你可以灵活的增加你需要hook的函数 var addrCallStaticObjectMethodV...JNI-Frida-Hook 也是个不错的选择,这个哥哥把函数名都给你定义好了,哪里想看,Hook哪里。...都崩溃的你怀疑人生的时候,老老实实用 hook_art.js ,能hook就行。...对应,所以加 1 // Thumb 模式切换导致 hook失败 // Frida-trace显示函数地址的方式是“sub_Hook
幸好我们还有 OkHttpLogger-Frida TIP: v9.10.10.22596 二、步骤 原理分析 在 某小视频App v8.x 签名计算方法(一) 先从抓包说起 这篇文章里面我们分析了 v8.0...使用 OkHttpLogger-Frida 抓包的方法。...作者描述了一下原理: 由于所有使用的Okhttp框架的App发出的请求都是通过RealCall.java发出的,那么我们可以hook此类拿到request和response。...最后一个问题 加上这个抓包之后,突然app变得很不稳定,要么一会就卡住不动了,要么就是出现网络访问失败。 这个问题肯定是由于我们这个js导致的。但是具体是怎么导致的?如何排查问题呢?...然后就尝试了各种办法,换个读的函数、深拷贝这个buffer,都没有成功。 最后发现作者预留了一手,实际上作者已经对这个 Response body做了次深拷贝,并且生成了一个newResponse。
在我的设备上,我通过Magisk-Frida-Server安装了Frida,我的Burp证书通过MagiskTrustUserCerts模块添加到系统CA存储中。...然而,在这个方法中有很多事情正在发生,Frida只能更改函数的返回值。如果我们更改这个值,它仍会因为上面的ssl_send_alert()函数调用而失败(相信我,我试过)。...让我们找一个更好的hook的方法。...应用程序上运行此脚本的结果如下: (env) ~/D/Temp » frida -U -f be.nviso.flutter_app -l frida.js --no-pause [LGE Nexus...幸运的是,上面列出的Frida脚本已经绕过了这种root-ca-pinning实现,因为底层逻辑仍然依赖于BoringSSL库的相同方法。
这会导致我们在对 App 做逆向分析的时候,使用 Charles 无法抓 https 包(如图):图片针对 SSL Pinning,常见的绕过方法有两种:重打包 APK,修改 AndroidManifest...使用 injection + hook 的办法绕过 client 端的证书校验,常见的 native 注入框架 xposed, frida 和 objection 都有相关的工具:优缺点和重打包恰好相反...只 decode AndroidManifest因为重新编译资源的时候会失败,那我们可否不 deocde 资源文件而只 decode AndroidManifest?...Injection + Hook如果 App 在 Android 11 的 x86 模拟器上能正常运行,因此有很好的 root 环境,很方便做 Injection 和 Hook。.../data/local/tmp 上,root 权限下把 frida server 运行起来。
本篇介绍 frida 是一个hook工具,可以监控和修改app的行为,相比xposed优势是配置简单和支持主动调用 环境配置 frida的执行脚本是javascript,因此需要先安装nodejs和npm...,安装frida只需要一条安装命令 pip install frida-tools 安装完后,frida就可以用了,安装的可用命令如下: image.png 目前用的最多的是frida,frida-ps..., frida-trace, 按照名字基本就可以看出功能了,第一个就是hook命令,第二个是查看进程的,第三个是跟踪函数调用。...接下来需要在Android设备上安装frida server,需要找和PC版本一样的server,然后push到 手机里。...image.png 需要知道的是frida相比xposed的优势是frida 支持函数主动调用,这时候就需要用到一些js函数,对于类方法,那么直接调用就行 var clazz = Java.use('xxx
说明 因为想学习怎么hook安卓程序,网上搜了一些资料,有xposed和frida两种。 xposed不便于调试,frida方便调试。所以先从学习frida入手。...我选择下载对应的frida-server-16.0.9-android-x86.xz,因为我刚才安装的电脑端frida版本是16.0.9,安卓模拟器CPU架构是x86。...) $ frida-ps -Ua # 查看安装了的app List installed applications $ frida-ps -Uai HOOK测试 模式 frida hook有两种模式,如下...如果此时进程已经处于调试状态(比如做了反调试),则会attach失败。...2. spawn模式 启动一个新的进程并挂起,在启动的同时注入frida代码,适用于在进程启动前的一些hook,比如hook RegisterNative函数,注入完成后再调用resume恢复进程。
3.1 关于frida-unpack firda-unpack 原理是利用frida hook libart.so中的OpenMemory方法,拿到内存中dex的地址,计算出dex文件的大小,从内存中将...和 setXxx()方法,然后就可以随意 hook了。...4.1 积分 直接上相应的 js 代码,逻辑就是 hook 住 UserInfo 类中 getJifen()方法,然后随便设置返回积分。...直接上 js 代码,要提一下的就是,Secure 类是 android.provider.Settings 的一个内部类,我们要 hook 的 getString()方法在 Secure 类中,hook...可以看到都使用了openConnection(Proxy.NO_PROXY),Charles 当然抓不到包,每个方法传入的参数即是网络请求,返回的参数是接收的数据,然后我们通过 frida 来 hook
的安装 今天我们用到的frida框架分为两部分: 一部分是运行在系统上的交互工具frida CLI; 另一部分是运行在目标机器上的代码注入工具 frida-server。...将下载后的压缩包解压得到frida-server, 然后将该文件推送到Android设备上。...4、Java Api 在Hook开始之前,有必要对Java注入相关的api做一个简单介绍, frida的注入脚本是Java, 因此我们后面都是通过js脚本来操作设备上的Java代码的。...图7 当我们获取到Java类之后,我们直通过接..implementations = function() {}的方式来hook wrapper类的method方法,不管是实例方法还是静态方法都可以。...a方法, 在里面我们可以拿到timingIdentifier的值: 图30 注意:当一个类里面有重载的方法的时候, 我们需要用.overload(paramtype...)来表示我们hook的是哪个重载方法
领取专属 10元无门槛券
手把手带您无忧上云