安卓app逆向破解脱壳教程

2023-12-21 21:38

本文主要是介绍安卓app逆向破解脱壳教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

From:Hook 神器家族的 Frida 工具使用详解:https://blog.csdn.net/FlyPigYe/article/details/90258758

详解 Hook 框架 frida ( 信抢红包 ):https://www.freebuf.com/company-information/180480.html

APP逆向神器之Frida【Android初级篇】:https://www.jianshu.com/p/2d755beb1c54

frida 官网文档:https://frida.re/docs/home/

《FRIDA操作手册》:https://python.ctolib.com/hookmaster-frida-all-in-one.html

FridaApp_Python的Hook脚本.zip:链接: https://pan.baidu.com/s/196-f9xggQ6QNNavmwiP8PA 提取码: vzuh

 

利用Frida绕过Android App(途牛apk)的SSL Pinning:https://blog.csdn.net/weixin_44677409/article/details/106650473

Frida从入门到入门—安卓逆向菜鸟的 frida 使用说明:https://bbs.pediy.com/thread-226846.htm

哔哩哔哩视频教程:
        frida java 层 hook:https://www.bilibili.com/video/BV1UE411A7rW?p=78
        frida native 层 hook:https://www.bilibili.com/video/BV1UE411A7rW?p=79

关键字:frida hook    fridaapp.apk    frida工具使用详解

 

Android 之 Frida 框架:https://mp.weixin.qq.com/s?__biz=MzU5Mjg5NjMyNA==&mid=2247484311&idx=1&sn=f18d19fd7cbf72c66beba9455caf24cc

 

雷电3版本模拟器上 frida-server 跑不起来。雷电4模拟器可以。https://blog.csdn.net/ugooo/article/details/112045478
但是 雷电4模拟器没法设置代理进行抓包。 https://www.ldmnq.com/forum/thread-67291-1-1.html
所以抓包可以用雷电3,运行frida-server 可以用 雷电4

 

 

一、前言

 

        说到逆向APP,很多人首先想到的都是反编译,但是单看反编译出来的代码很难得知某个函数在被调用时所传入的参数和它返回的值,极大地增加了逆向时的复杂度,有没有什么办法可以方便地知道被传入的参数和返回值呢?答案是有的,这个方法就是Hook,Hook的原理简单地说就是用一个新的函数替代掉原来的函数,在这个新的函数中你想做什么都可以,为所欲为。

        在逆向过程中有一个 Hook 神器是必不可少的工具,之前已经介绍了 Xposed 和 Substrate 了,不了解的可以看这两篇文章:Android中Hook神器Xposed工具介绍 和 Android中Hook神器SubstrateCydia工具介绍 这两篇文章非常重要,一个是 Hook Java层的时候最常用的 Xposed , 一个是Hook Native层常用的SubstrateCydia,可以看之前的文章比如写微信插件等都采用了Xposed工具,因为个人觉得Xposed用起来比较爽,写代码比较方便。而对于SubstrateCydia工具可以 Hook Native 层。

        那么有了这两个神器为啥还要介绍 Frida工具呢?而且这个工具网上已经有介绍了,为什么还有介绍了,因为这个Frida工具对于逆向者操作破解来说非常方便,所谓方便是他的安装环境和配置要求都非常简单兼容性也非常好,因为最近在弄一个协议解密,无奈手机上安装 Cydia 之后不兼容导致死机所以就转向用了这个工具实现了 hook,所以觉得这个工具非常好用就单独介绍一下。

        Frida 也是一个很常用的 Hook 工具,只需要编写一段 Javascript 代码就能轻松地对指定的函数进行 Hook,而且它基本上可以算是全平台的(主流平台全覆盖),除了 Android 以外,iOS 和 PC 端的APP也可以用它来进行Hook,非常方便。

 

1、Hook是个什么鬼?

  Hook 翻译过来就是 "钩子" 的意思,钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。Hook 技术无论对安全软件还是恶意软件都是十分关键的一项技术,其本质就是 劫持函数调用 。

 

2、Frida框架的那些事

  frida 是一款基于 python 和 java 的 hook 框架,是一种动态插桩工具,可以插入代码到原生App的内存空间中,动态的监视和修改其行行为,可运行在Android、iOS、Linux和windows等多个平台。

插桩技术 是指将额外的代码注入程序中以收集运行时的信息,可分为两种:

  • 1. 源代码插桩【Source Code Instrumentation(SCI)】:额外代码注入到程序源代码中。
  • 2. 二进制插桩【Binary Instrumentation】:额外代码注入到二进制可执行文件中,其又可分为两种:
        ● 静态二进制插桩  【 Static Binary Instrumentation(SBI) 】:
                    在程序执行前插入额外的代码和数据,生成一个永久改变的可执行文件。
        ● 动态二进制插桩  【 Dynamic Binary Instrumentation(DBI) 】:
                    在程序运行时实时地插入额外代码和数据,对可执行文件没有任何永久改变。

使用 Frida 框架到底能做什么呢 ?

  • (1)访问进程的内存,提取我们感兴趣的信息或敏感信息
  • (2)在应用程序运行时覆盖一些功能,改变其程序运行逻辑
  • (3)从导入的类中调用函数
  • (4)在堆上查找对象实例并使用这些对象实例
  • (5)Hook,动态跟踪、拦截变量和函数 等等。

 

 

二、环境安装配置

 

如何让 Frida 奔跑起来 ?

用到的 frida 框架分为两部分:

  • 一部分是 "客户端", 即:用于连接远程设备,提交要注入的 JS 代码到服务端,并接受服务端发来的消息; 
  • 另一部分是 "服务器端", 即:注入JS代码到目标进程,操作内存数据,并将相关信息发送至给客户端。

官网安装说明

 

frida

        环境要求
          系统环境  – Windows、macOS、Linux
          Python     – 最新的3.x版本,
          Adb环境   – 请自行下载adb工具或安装 android studio 工具          
            环境准备好了,让我们来安装 frida CLI 吧!
            安装 frida CLI 有很多种方法,这里只介绍两种,即:pip 和 npm
        
        pip 安装 frida      
              执行 pip install frida
              执行 pip install frida-tools
              执行 frida -version
        
        npm 安装 frida,首先安装 NodeJS
              执行 npm install frida
              执行 npm install frida-tools
              执行 frida --version

执行一波 pip install frida-tools,安装完毕以后,测试是否安装正确,因为官网安装文档的下半部分是用于测试刚装好的库是否可用,但是比较麻烦,这里可以直接使用 frida-ps 命令来测试(显示本机的进程)

如果加上参数 U 表示的是 usb 连接的设备。( 模拟器也是 -U 参数)

frida-ps -aU

看起来是没问题了,然后我们怎么Hook Android手机上的 APP 呢?别急,还需要在手机上做一些操作你才能这么做。

我们需要有一台已经Root了的Android手机,因为不同型号的手机Root方法存在差异,本文中就不指导如何对手机进行Root操作了,请自行通过搜索引擎查找方法。实在没有可以Root的Android手机的话可以选择使用模拟器,推荐使用Genymotion之类系统较为原生的模拟器,并将Android版本选择在6.0以上,否则可能会出现一些奇奇怪怪的问题

手机准备好了之后,找到 Frida 文档中 Tutorials 栏里的Android页,开始进行Frida的手机端准备工作。

文档中能看到,Frida官方最近的大部分测试都是在运行着Android 9的Pixel 3上进行的,所以理论上来讲如果你在使用中遇到任何奇怪的问题,都可能是你手机的系统导致,所以这里再次建议,使用较为原生和偏高版本的系统(建议至少6.0)进行操作

 

Frida 环境

 
  1. 1. 手机运行服务端

  2. 2. 电脑端运行客户端,电脑端再进行端口转发

  3.       adb forward tcp:27042 tcp:27042

  4.       adb forward tcp:27043 tcp:27043

 

frida-server

环境要求
          手机一部,本文主要讲述 Android系统。手机必须被 Root,具体 Root 方法请自行查询        
          下载 frida-server ,地址:https://github.com/frida/frida/releases

 

安装方法( 先要看构架:adb shell getprop ro.product.cpu.abi )

什么是 Android ABI ?

ABI 就是 Application binary interface 的意思,即应用程序二进制接口。他定义了一套规则,允许编译好的二进制目标代码能在所有兼容该ABI的操作系统中无需改动就能运行。不同的Android手机使用不同的CPU,因此需要提供对应的二进制接口交互规则(即对应的ABI文件)才能进行交互。目前,有部分CPU是能支持多种交互规则,但这是在牺牲性能的前提下所做的兼容。

ABI架构

API架构说明
armeabiv-v7a第7代及以上的 ARM 处理器。目前,大部分手机的CPU都支持此ABI交互规则
arm64-v8a第8代64位ARM处理器,支持此ABI的手机还比较少
armeabi第5代、第6代的ARM处理器,早期手机用得较多
x86平板、模拟器用得比较多
x86_6464位的平板

ABI 与 CPU 的联系

在 Android 手机上安装一个应用时,只有手机CPU架构支持的ABI架构对应的.so文件会被安装。如果支持多个ABI架构,会按照优先级进行安装。

CPU架构支持的ABI架构对应的.so文件安装优先级
ARMv5armeabi
ARMv7armeabi,armeabi-v7a
ARMv8armeabi,armeabi-v7a,arm64-v8a
MIPSmips
MIPS64mips,mips64
x86x86,armeabi,armeabi-v7a
x86_64:armeabi,x86,x86_64

CPU大都是向前兼容的,但是会按优先级来选择ABI。如x86架构的CPU会优先选择x86目录下的.so包,当不存在时,才会选择armeabi-v7a目录下的.so包,如果仍然不存在,最后才会选择armeabi目录下的.so文件。
注:x86设备运行armeabi下的so库时会损失性能。

 

打开 GitHub 之后你会发现,这里有很多个不同的版本,应该下载哪一个呢?

可以看到末尾处都有个 系统 和 CPU架构 的标识,我们直接看 Android 的。

这里标了Android的一共有四个,怎么判断自己的手机/模拟器属于哪一种CPU架构的呢?

查CPU架构的方法很多,这里介绍一个比较方便快捷的——使用一个名叫 Device Info HW 的 APP。

Device Info HW 下载地址:https://www.cr173.com/soft/845060.html

                下载的文件名的格式是: frida-server-(version)-(platform)-(cpu).xz 
                例如:手机是 nexus6p, cpu 为 arm64
                需要下载的是: frida-server-11.0.13-android-x86_64.xz;
                注意, frida-server 的版本一定要跟 frida CLI 的版本一致。

          执行以下命令
                adb devices
                adb push path/to/frida-server /data/local/tmp
                adb shell
                su
                cd /data/local/tmp
                chmod a+x ./frida-server         或者   chmod 777 ./frida-server
                ./frida-server                            或者   ./frida-server &

 

frida tools

Frida 提供的工具,frida-trace,frida-ps,frida,frida-discover,这些工具都位于 python 的 Scripts 路径下,

frida 的工具共有 6 个:

(1)frida 命令是一个交互式解释器(REPL),用于实现 Hook 代码的动态注入,他的交互形式跟 IPython 很类似。         

          命令帮助:

示例:

将一个脚本注入到 Android 目标进程:frida -U -l myhook.js com.xxx.xxxx

参数解释:

  • -U 指定对 USB 设备操作
  • -l   指定加载一个 Javascript 脚本
  • 最后指定一个进程名,如果想指定进程 pid,用 -p 选项。正在运行的进程可以用 frida-ps -U 命令查看

frida 运行过程中,执行 %resume 重新注入,执行 %reload 来重新加载脚本;执行 exit 结束脚本注入

 

(2) frida-ps: 用于列出进程的一个命令行工具,当我们需要跟远程系统进行交互的时候,这个是非常有用的。

(备注:这里的 com.android.chrome 就是通过 frida-ps 命令查询到的远程客户

这篇关于安卓app逆向破解脱壳教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/521586

相关文章

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

沁恒CH32在MounRiver Studio上环境配置以及使用详细教程

目录 1.  RISC-V简介 2.  CPU架构现状 3.  MounRiver Studio软件下载 4.  MounRiver Studio软件安装 5.  MounRiver Studio软件介绍 6.  创建工程 7.  编译代码 1.  RISC-V简介         RISC就是精简指令集计算机(Reduced Instruction SetCom

前端技术(七)——less 教程

一、less简介 1. less是什么? less是一种动态样式语言,属于css预处理器的范畴,它扩展了CSS语言,增加了变量、Mixin、函数等特性,使CSS 更易维护和扩展LESS 既可以在 客户端 上运行 ,也可以借助Node.js在服务端运行。 less的中文官网:https://lesscss.cn/ 2. less编译工具 koala 官网 http://koala-app.

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法

消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法   消除安卓SDK更新时的“https://dl-ssl.google.com refused”异常的方法 [转载]原地址:http://blog.csdn.net/x605940745/article/details/17911115 消除SDK更新时的“

【Shiro】Shiro 的学习教程(三)之 SpringBoot 集成 Shiro

目录 1、环境准备2、引入 Shiro3、实现认证、退出3.1、使用死数据实现3.2、引入数据库,添加注册功能后端代码前端代码 3.3、MD5、Salt 的认证流程 4.、实现授权4.1、基于角色授权4.2、基于资源授权 5、引入缓存5.1、EhCache 实现缓存5.2、集成 Redis 实现 Shiro 缓存 1、环境准备 新建一个 SpringBoot 工程,引入依赖:

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到

Windows环境利用VS2022编译 libvpx 源码教程

libvpx libvpx 是一个开源的视频编码库,由 WebM 项目开发和维护,专门用于 VP8 和 VP9 视频编码格式的编解码处理。它支持高质量的视频压缩,广泛应用于视频会议、在线教育、视频直播服务等多种场景中。libvpx 的特点包括跨平台兼容性、硬件加速支持以及灵活的接口设计,使其可以轻松集成到各种应用程序中。 libvpx 的安装和配置过程相对简单,用户可以从官方网站下载源代码