安卓Frida hook脱壳环境配置过程

这篇具有很好参考价值的文章主要介绍了安卓Frida hook脱壳环境配置过程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文记录开始于22/7/22/16:50
目的是记录安卓Android脱壳过程
使用Frida对360加固的apk进行脱壳
操作环境:win10+Android雷神模拟器

一、安装所需软件

(1)Java JDK
(2) Android SDK 平台工具软件包
下载:https://developer.android.com/studio/releases/platform-tools
配置:参考教程:
http://t.csdn.cn/qXGXi
(3)安卓模拟器
本文使用夜神Android7.1.2
(4)Python
本文使用vscode编写并运行python代码
(5)IDA PRO

二、开始操作

(1)adb连接夜神模拟器

1.打开夜神模拟器
2.打开cmd,用adb链接夜神模拟器

adb connect 127.0.0.1:62001

安卓Frida hook脱壳环境配置过程
连接后输入

adb devices

安卓Frida hook脱壳环境配置过程
代表已经连接上

(2)导出librat.so

adb pull /system/lib/libart.so D:\Desktop

安卓Frida hook脱壳环境配置过程
出现如上表示导出成功

(3)查看android架构

输入

adb shell
getprop ro.product.cpu.abi

获取设备信息,我这里因为用夜神模拟器所以是x86
安卓Frida hook脱壳环境配置过程

(4)在android安装frida-server

下载地址:https://github.com/frida/frida/releases
需要与后面下载的frida-tool版本一样,然后什么架构下载什么版本的frida-server,下载完解压出来,一个无后缀文件
这里我是模拟器,我发现有两个x86版本,一个是x86,一个是x86_64,要下载x86版本。
输入

adb push 电脑的文件路径 /data/local/tmp

安卓Frida hook脱壳环境配置过程
最后开启服务

adb start-server # 第一步 开启服务
adb devices # 第二步 查看是否链接
adb shell 
su # 进入root权限
cd /data/local/tmp #进入frida-server #所在目录
chmod 777 frida-server-15.2.2-android-x86 # 授予其文件权限。这个名字要改成你下载的文件名
./frida-server-15.2.2-android-x86 # 这个名字要改成你下载的文件名

运行成功后不会有任何提示。
新开一个cmd,输入frida-ps -U
安卓Frida hook脱壳环境配置过程
出现上面就代表frida配置完成!

(5)用ida打开librat.so,查找OpenMemory的导出方法名

不同安卓版本导出方法名可能不同
安卓Frida hook脱壳环境配置过程
查找到这个,记录下来。后面hook的目标函数的就是他。

_ZN3art7DexFile10OpenMemoryEPKhjRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEjPNS_6MemMapEPKNS_10OatDexFileEPS9_

(6)安装python的frida模块

具体参见https://frida.re/
需要用到python的pip模块,没安装自行百度“安装pip”
cmd输入(记得cmd要有管理员权限)

pip install frida-tools

安装失败
安卓Frida hook脱壳环境配置过程
未曾想到一个小小的安装python的frida模块能有那么多坑,网上一查才知道有很多人和我一样在安装的时候遇到麻烦。
然后也试过用各种国内镜像,手动下载安装,同样是卡在setup这一步骤。也尝试过卡在这一步骤的时候,开启系统代理,因为我猜测是因为安装过程同样也要联网,才导致这么慢,所以代理或许能更快?但依旧卡在setup?wtf????
安卓Frida hook脱壳环境配置过程
在检索frida历史版本中,发现frida在最新1.5系列中似乎都没有python3.7的,只有3.8和3.6,而我的python恰巧是3.7,会不会是因为不支持3.7了呢,于是试着安装之前的frida版本,之前的1.4系列就有存在3.7的安装包,但同样失败,卡在setup这一步。
一气之下,重装python,换了个python310,然后直接按照官网的指令安装frida-tools,依旧是卡在setup,会不会是我python安装的D盘权限问题呢?我在重装一次python,这次安装在C盘,依旧是卡在Running setup.py install for frida,我就开始怀疑是不是因为setup中存在什么下载需要代理,不代理就会很慢。但是开代理pip又会报代理错误。
然后我就用http://t.csdn.cn/saWEA的方法,电脑开启代理,让pip用代理。成功了兄弟们!

pip install frida-tools --proxy='socks5://127.0.0.1:10808'

安卓Frida hook脱壳环境配置过程
所以总而言之,安装frida执行到Running setup.py install for frida…这一步骤的时候,肯能setup内部还要自己去pipy下载其他模块,而国内网络环境复杂,pipy我自己测试了下速度只有0.01kb\s,这才导致一直开在Running setup.py install for frida…并且不报错误,就是单纯速度慢。但是在pip运行后在开代理,并不会通过代理软件,必须在pip开启前开启代理,而开代理直接使用pip则会导致pip报proxy错误,所以必须使用上面的神奇的“–proxy=‘socks5://127.0.0.1:10808’”指令。

(7)编写python脚本

这里直接采用https://github.com/dstmath/frida-unpack/blob/master/frida_unpack.py的脚本
但是要做一定修改
要把src里的"libdexfile.so"后面的那个参数改成我们之前获取到的OpenMemory的导出方法名。
安卓Frida hook脱壳环境配置过程
修改完后如下

#-*- coding:utf-8 -*-
# coding=utf-8
import frida
import sys

def on_message(message, data):
    base = message['payload']['base']
    size = int(message['payload']['size'])
    print(hex(base),size)
    # print session
    # dex_bytes = session.read_bytes(base, size)
    # f = open("1.dex","wb")
    # f.write(dex_bytes)
    # f.close()

# 9.0 arm 需要拦截 _ZN3art13DexFileLoader10OpenCommonEPKhjS2_jRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEjPKNS_10OatDexFileEbbPS9_NS3_10unique_ptrINS_16DexFileContainerENS3_14default_deleteISH_EEEEPNS0_12VerifyResultE
# 7.0 arm:_ZN3art7DexFile10OpenMemoryEPKhjRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEjPNS_6MemMapEPKNS_10OatDexFileEPS9_

# android 10: libdexfile.so 
# #_ZN3art13DexFileLoader10OpenCommonEPKhjS2_jRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEjPKNS_10OatDexFileEbbPS9_NS3_10unique_ptrINS_16DexFileContainerENS3_14default_deleteISH_EEEEPNS0_12VerifyResultE

package = sys.argv[1]
print("dex 导出目录为: /data/data/%s"%(package))
device = frida.get_usb_device()
pid = device.spawn(package)
session = device.attach(pid)
src = """
Interceptor.attach(Module.findExportByName("libdexfile.so", "_ZN3art7DexFile10OpenMemoryEPKhjRKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEjPNS_6MemMapEPKNS_10OatDexFileEPS9_"), {
    onEnter: function (args) {
      
        var begin = args[1]
        
        console.log("magic : " + Memory.readUtf8String(begin))
     
        var address = parseInt(begin,16) + 0x20
        var dex_size = Memory.readInt(ptr(address))
        console.log("dex_size :" + dex_size)
      
        var file = new File("/data/data/%s/" + dex_size + ".dex", "wb")
        file.write(Memory.readByteArray(begin, dex_size))
        file.flush()
        file.close()
        var send_data = {}
        send_data.base = parseInt(begin,16)
        send_data.size = dex_size
        send(send_data)
    },
    onLeave: function (retval) {
        if (retval.toInt32() > 0) {
        }
    }
});
"""%(package)

script = session.create_script(src)

script.on("message" , on_message)

script.load()
device.resume(pid)
sys.stdin.read()

(8)运行脚本

python D:\Desktop\unpack.py 包名

出现错误

Traceback (most recent call last):
  File "C:\Python310\lib\site-packages\frida\core.py", line 458, in _on_message
    callback(message, data)
  File "D:\Desktop\unpack.py", line 7, in on_message
    base = message['payload']['base']
KeyError: 'payload'

找到了同道中人的文章https://unsafe.sh/go-26062.html
本文完结文章来源地址https://www.toymoban.com/news/detail-460229.html

到了这里,关于安卓Frida hook脱壳环境配置过程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 记录Qt和opencv 新环境配置过程

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 为外出干项目做一些环境准备工作,需要重新配置电脑环境,那首先装的肯定就是Qt了,以前安装都没做记录,这次就记录一下吧,希望对大家有用。 提示

    2024年01月21日
    浏览(44)
  • RK3588环境配置过程全记录 step 1

    最近在做毕设,由于是第一次接触NPU,所以踩了不少坑,顺便将它记录下来,防止后来者继续踩(doge)hh。 许多人都和我一样,刚到手拿到一块NPU算力版的时候都不知道从何下手,是先在PC端操作呢还是直接在板子上操作? 本人虽然熟悉一些类似于STM32 ,esp等板子,但是也是

    2024年02月09日
    浏览(50)
  • 简单记录一次物理机配置zerotier planet根服务器并且配置安卓,ios,macos,华硕路由器互联的过程

            首先说明,本教程涵盖系统又。esxi6.7,centos7,安卓系统,苹果系统14.4.2越狱版,梅林系统。        一,搭建系统所用的设备有:dell740xd(做虚拟化)搭建根服务器,esxi安装教程就不说了,直接下载dell定制版,神秘代码激活。然后部署centos7虚拟机,这里需要注意

    2024年02月04日
    浏览(76)
  • Frida hook 双向证书秘钥

    spawn 模式启动: frida -U -f 包名 -l keystore.js --no-pause 加 – no-pause与不加 --no-pause的区别主要是 hook时机的早晚。 --no-pause是即时hook, 而不加 --no-pause 这个参数的话。frida会拉起进程,停在加载主界面之前,这时候 应用会出现白屏状态,就像 恢复主线程运行的话,这里要手动用

    2024年02月11日
    浏览(48)
  • 【Android】Frida Hook 文件读写操作

    在挖掘客户端漏洞的时候,通常会关注应用对什么文件进行了读写操作,当我们能控制被读的文件或观测到敏感写入的文件,通常可以造成一定危害。本文详细介绍了如何通过frida监控文件读写操作。 在Linux系统下,文件的创建、读取、追加、写入和删除等操作涉及到以下系

    2024年02月08日
    浏览(177)
  • Android Hook之Frida安装使用

    Frida 是一个动态检测框架,允许开发人员在 Windows、macOS、Linux、iOS 和 Android 上的原生应用程序中注入 JavaScript 或 Python 脚本。该框架可用于操纵应用程序的行为、从中提取信息或与其进行通信。Frida 通常被安全研究人员和渗透测试人员用来对应用程序进行动态分析,并执行钩

    2023年04月19日
    浏览(42)
  • jni| unicorn | androidemu | frida_hook

    yang神脚本大全: https://codeooo.blog.csdn.net/article/details/122988215 pip install unicorn pip install androidemu AndroidNativeEmu https://gitee.com/keji8/ExAndroidNativeEmu/ https://github.com/AeonLucid/AndroidNativeEmu h2.js 动态注册魔改: frida -U --no-pause -f package_name -l hook_art.js frida -U --no-pause -f package_name -l hook_artmetho

    2024年02月16日
    浏览(45)
  • 安卓协议逆向 咸鱼 frida rpc 调用方案

    通过frida rpc调用真机获取指定的搜索结果数据。 本文仅供大家学习及研究使用、切勿用于各种非法用途。 frida 提供了一种跨平台的 rpc (远程过程调用)机制,通过 frida rpc 可以在主机和目标设备之间进行通信,并在目标设备上执行代码,可实现功能如下: 1、动态地

    2024年02月07日
    浏览(41)
  • Unity+pico4开发过程及问题记录,创建一个自己的pico安卓应用

    参考PICO developer 官方文档,本人unity版本为 2022.116f1c1 , PICO Unity Integration SDK- 214 . sdk最新版官网下载:PICO Unity Integration SDK 博主使用的版本在这里提供一个链接: 以下过程均基于以上版本,按照如下流程操作比较合适。 ①Unity编辑器需要支持安卓平台,在 添加模块 窗口处,勾

    2024年02月03日
    浏览(48)
  • Vue项目启动过程全记录(node.js运行环境搭建)

    1、安装node.js 从Node.js官网下载安装包并安装。然后在安装后的目录(如果是下载的压缩文件,则是解压缩的目录)下新建node_global和node_cache这两个文件夹。 node_global:npm全局安装位置 node_cache:npm缓存路径 2、配置环境变量 在系统变量里添加一个变量NODE_HOME,值为node.js的安装

    2024年02月19日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包