0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

编译官方fridaserver或者strongFrida并替换系统内置版本

哆啦安全 来源: 卓码星球 2023-10-24 16:51 次阅读

主要内容:

下载官方frida源码并编译安卓版本的fridaserver,然后替换内置版本

编译反检测版本fridaserver工程strongFrida并替换系统内置版本

1.编译环境前期准备

1.1 操作系统准备

ubuntu系统:
ubuntu-20.04
java环境:
JDK1.8
Python环境:
>=3.7

git工具:
安装任一版本就行。

1.2 ndk下载准备

当前最新frida源码编译安卓版本需要ndk-r22版本,不然会提示错误。

ndk下载地址:

https://dl.google.com/android/repository/android-ndk-r22-linux-x86_64.zip

下载以后解压到一个目录后续使用。比如我个人的存放目录:

/home/qiang/androidndk/android-ndk-r22

1.3 安装依赖

分别执行如下命令:

qiang@ubuntu:~/myproject/frida/frida$sudoapt-getupdate

qiang@ubuntu:~/myproject/frida/frida$sudoapt-getinstallbuild-essentialtreeninja-buildgcc-multilibg++-multiliblib32stdc++-9-devflexbisonxz-utilsrubyruby-devpython3-requestspython3-setuptoolspython3-devpython3-piplibc6-devlibc6-dev-i386-y

qiang@ubuntu:~/myproject/frida/frida$sudopython-mpipinstallcoloramaprompt-toolkitpygments

qiang@ubuntu:~/myproject/frida/frida$python-mpipinstalllief

1.4 frida源码下载

执行如下命令下载:

gitclone--recurse-submoduleshttps://github.com/frida/frida

比如我下载存储目录:

/home/qiang/myproject/frida/frida

2.编译操作

2.1 官方版本编译

(1).设置ANDROID_NDK_ROOT变量

qiang@ubuntu:~/myproject/frida/frida$exportANDROID_NDK_ROOT=/home/qiang/androidndk/android-ndk-r22

(2).进入frida源码根目录分别执行如下命令编译android版本的frida

qiang@ubuntu:~/myproject/frida/frida/frida$pwd
/home/qiang/myproject/frida/frida/frida
qiang@ubuntu:~/myproject/frida/frida/frida$ls
buildCOPYINGfrida-gumfrida-qmlfrida-toolsMakefile.macos.mkREADME.md
config.mkfrida-clrfrida-nodefrida.slnMakefileMakefile.sdk.mkreleng
CONTRIBUTING.mdfrida-corefrida-pythonfrida-swiftMakefile.linux.mkMakefile.toolchain.mk
qiang@ubuntu:~/myproject/frida/frida/frida$
qiang@ubuntu:~/myproject/frida/frida/frida$makecore-android-arm64
qiang@ubuntu:~/myproject/frida/frida/frida$
qiang@ubuntu:~/myproject/frida/frida/frida$makecore-android-arm
qiang@ubuntu:~/myproject/frida/frida/frida$

(3).编译完成之后的目标存储目录

frida-android-arm存放目录:

qiang@ubuntu:~/myproject/frida/frida/frida/build/frida-android-arm/bin$
qiang@ubuntu:~/myproject/frida/frida/frida/build/frida-android-arm/bin$pwd
/home/qiang/myproject/frida/frida/frida/build/frida-android-arm/bin
qiang@ubuntu:~/myproject/frida/frida/frida/build/frida-android-arm/bin$ls-la
total36316
drwxr-xr-x2qiangqiang40963月3122:25.
drwxrwxr-x6qiangqiang40963月3122:25..
-rwxr-xr-x1qiangqiang178460123月3122:25frida-inject
-rwxr-xr-x1qiangqiang176698443月3122:25frida-server
-rwxr-xr-x1qiangqiang16609003月3122:25gum-graft
qiang@ubuntu:~/myproject/frida/frida/frida/build/frida-android-arm/bin$
qiang@ubuntu:~/myproject/frida/frida/frida/build/frida-android-arm/bin$

frida-android-arm64存储目录:

qiang@ubuntu:~/myproject/frida/frida/frida/build/frida-android-arm64/bin$ls-la
total83204
drwxr-xr-x2qiangqiang40963月3122:28.
drwxrwxr-x6qiangqiang40963月3122:28..
-rwxr-xr-x1qiangqiang416208723月3122:28frida-inject
-rwxr-xr-x1qiangqiang413832163月3122:28frida-server
-rwxr-xr-x1qiangqiang21820963月3122:28gum-graft
qiang@ubuntu:~/myproject/frida/frida/frida/build/frida-android-arm64/bin$pwd
/home/qiang/myproject/frida/frida/frida/build/frida-android-arm64/bin
qiang@ubuntu:~/myproject/frida/frida/frida/build/frida-android-arm64/bin$
qiang@ubuntu:~/myproject/frida/frida/frida/build/frida-android-arm64/bin$ls
frida-injectfrida-servergum-graft
qiang@ubuntu:~/myproject/frida/frida/frida/build/frida-android-arm64/bin$
qiang@ubuntu:~/myproject/frida/frida/frida/build/frida-android-arm64/bin$

2.2 strongR-frida-android版本编译

2.2.1 简介

strongR-frida-android主要是通过patch代码的方式,为frida官方源码进行一些修改,抹除一些关键特征,为Android构建反检测版本的frida-server

2.2.2 patch补丁文件

patch补丁项目地址:

https://github.com/AAAA-Project/Patchs

2.2.3 编译以及测试流程

strongR-frida-android编译和官方frida编译方式是一样的,差异在于编译frida源码之前,需要先下载frida官方的源码,然后使用git am命令将patch代码应用到frida官方源码中。以下说一下具体patch补丁的流程。

(1)、为frida源码patch 反检测补丁

详细流程参考如下命令:

qiang@ubuntu:~/myproject/frida/frida$
qiang@ubuntu:~/myproject/frida/frida$gitclonehttps://github.com/AAAA-Project/Patchs
Cloninginto'Patchs'...
remote:Enumeratingobjects:40,done.
remote:Countingobjects:100%(40/40),done.
remote:Compressingobjects:100%(22/22),done.
remote:Total40(delta19),reused32(delta11),pack-reused0
Unpackingobjects:100%(40/40),12.04KiB|280.00KiB/s,done.
qiang@ubuntu:~/myproject/frida/frida$cdfrida/frida-core/
qiang@ubuntu:~/myproject/frida/frida/frida/frida-core$gitam../../Patchs/strongR-frida/frida-core/*.patch
Applying:strongR-frida:string_frida_rpc
Applying:strongR-frida:io_re_frida_server
Applying:strongR-frida:pipe_linjector
Applying:strongR-frida:io_frida_agent_so
Applying:strongR-frida:symbol_frida_agent_main
Applying:strongR-frida:thread_gum_js_loop
Applying:strongR-frida:thread_gmain
Applying:strongR-frida:protocol_unexpected_command
qiang@ubuntu:~/myproject/frida/frida/frida/frida-core$
qiang@ubuntu:~/myproject/frida/frida/frida/frida-core$
qiang@ubuntu:~/myproject/frida/frida/frida/frida-core$

(2)、编译源码操作

和编译官方frida源码一样的流程。

(3). 替换手机内置版本测试

通过adb push进去替换。具体请参考"不用刷机情况下升级或者降级系统中的fridaserver"。

4. 可参考的集成编译脚本

编译官方fridashell脚本参考:

#buildforfridaandroid
#
sudoapt-getupdate

sudoapt-getinstallbuild-essentialtreeninja-buildgcc-multilibg++-multiliblib32stdc++-9-devflexbisonxz-utilsrubyruby-devpython3-requestspython3-setuptoolspython3-devpython3-piplibc6-devlibc6-dev-i386-y

sudopython-mpipinstallcoloramaprompt-toolkitpygments

#setANDROID_NDK_ROOT
exportANDROID_NDK_ROOT=/home/qiang/androidndk/android-ndk-r22
#deletefrida
rm-rffrida
#downloadagain
gitclone--recurse-submoduleshttps://github.com/frida/frida

cdfrida
#cleanbuildingcache
makeclean
#buildingfridaandroidarm
makecore-android-arm
#buildingfridaandroidarm64
makecore-android-arm64

编译strong frida脚本参考如下:

#buildforstrongfridaandroid
#
sudoapt-getupdate
sudoapt-getinstallbuild-essentialtreeninja-buildgcc-multilibg++-multiliblib32stdc++-9-devflexbisonxz-utilsrubyruby-devpython3-requestspython3-setuptoolspython3-devpython3-piplibc6-devlibc6-dev-i386-y


sudopython-mpipinstallcoloramaprompt-toolkitpygments


#
exportANDROID_NDK_ROOT=/home/qiang/androidndk/android-ndk-r22

rm-rfPatchs
#DownloadPaths
gitclonehttps://github.com/AAAA-Project/Patchs

rm-rffrida
#Downloadfridasoucecode
gitclone--recurse-submoduleshttps://github.com/frida/frida

cdfrida/frida-core

echo"starttopatchsourcecode
"

gitam../../Patchs/strongR-frida/frida-core/*.patch

echo"finishtopatchsourcecode
"

sleep2

cd..

makeclean

makecore-android-arm
makecore-android-arm64

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6284

    浏览量

    121876
  • 源码
    +关注

    关注

    8

    文章

    573

    浏览量

    28586
  • 编译
    +关注

    关注

    0

    文章

    615

    浏览量

    32392

原文标题:编译官方fridaserver或者strongFrida并替换系统内置版本

文章出处:【微信号:哆啦安全,微信公众号:哆啦安全】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    视音频矩阵控制/切换系统

    终端。内置了多种控制协议,可以直接控制或者由数字硬盘录像机共同控制多种类型的解码器、高速球,通过控制码转换器可直接控制ROBOT、SENSORMATIC等多画面分割录像处理器;增加以太网和FIFO通信技术,迅速提升设备处理能力
    发表于 03-04 20:00

    STM32 uClinux 编译

    诸位大神好,在下想在STM32F2或F4系列上使用uclinux操作系统。目前看到ST官方给出了在F1系列上的移植样例。在此样例上使用的编译器是sourcery G++ 2009q1-163,可是我
    发表于 08-05 16:13

    查看交叉编译工具链版本的时候提示没有文件

    2.6.31, BuildID[sha1]=0x999ac689ec846c297ca6a0f1a8dd0d0ab678aac8, stripped。不想换系统和交叉编译工具链,请问有什么办法可以解决这个问题吗?
    发表于 11-14 16:15

    【液晶显示屏试用体验】编译官方例子出现的问题及解决方法

    看到很多同仁都用51单片机把官方给的例子编译通过了,有图有真相。 不知怎么回事,前面我也试了,发现存在问题,只好缩短 ucharcodeGXM12864_KS0108_tab[1536
    发表于 04-20 01:07

    韦东山鸿蒙系统移植课程:下载源码编译

    编译官方版本我们先为官方板子hi3518ev300编译Liteos-a,确保环境没有问题。后面再打上IMX6ULL的补丁,为IMX6ULL编译鸿蒙。进入源码根目录,执行以下命令:cd
    发表于 09-30 15:38

    如何退出鸿蒙HarmonyOS 2.0 Beta测试计划,还原为官方稳定版本

    如果使用后,还想用回原系统,如何退出鸿蒙HarmonyOS 2.0 Beta测试计划,还原为官方稳定版本
    发表于 05-24 16:47

    请问大佬应该怎么换系统

    谁能教我一下应该怎么换系统
    发表于 12-30 07:40

    RK3288 Android 7.1.2内置编译User版本源码出错是什么原因呢

    RK3288 Android 7.1.2内置编译User版本源码出错是什么原因呢?怎样去解决RK3288 Android 7.1.2内置编译
    发表于 03-03 07:18

    官方EVT里的程序通过keil编译的hex无法运行是为什么?

    是这样的,CH549最小系统搭建好了,可以正常下载运行官方示例包里的 CompositeKM.hex文件 ,插入电脑可以看到新增一个键盘设备。但是下载我自己编译官方示例包里的CompositeKM.C文件生成的 Composit
    发表于 06-15 06:44

    使用命令行编译官方例程helloworld,ESP-IDF编译报错怎么处理?

    使用命令行编译官方例程helloworld,报错如下,求大神解惑。G:\Espressif\tools\xtensa-esp32s2-elf\esp-2021r2-patch5-8.4.0
    发表于 02-10 08:54

    根据官方文档下载和配置好esp-idf后,编译官方提供的webcamera例程时,发生了cmake编译错误的问题如何解决?

    根据官方文档下载和配置好esp-idf后,编译官方提供的webcamera例程时,发生了cmake编译错误的问题,一开始是认为是环境配置的问题,不过重新装了好几次都发生了一样的错误,甚至在Linux环境下也会出现
    发表于 02-21 07:31

    编译官网最新的v4.3rc example中的i2s例子,编译时报I2S0找不到的错误怎么解决?

    编译官网最新的v4.3rc example中的i2s例子,编译时报I2S0找不到的错误。
    发表于 02-21 07:59

    ESP-IDF使用命令行编译官方例程helloworld报错求解

    使用命令行编译官方例程helloworld,报错如下,求大神解惑。G:\Espressif\tools\xtensa-esp32s2-elf\esp-2021r2-patch5-8.4.0
    发表于 03-03 07:29

    CubeMX版本编译代码的教程

    用的CubeMX版本是4.20.0如下图,用的Keil5编译代码,编译结果0 Error(s),0 Warning(s)。
    的头像 发表于 10-10 10:32 3928次阅读
    CubeMX<b class='flag-5'>版本</b><b class='flag-5'>编译</b>代码的教程

    华为编译器吴峰的自述

    机器才明白我们要做什么。编译器就像是翻译官,把程序员懂的编程语言转化成机器认识的二进制,如果这个翻译官看不懂编程语言或者翻译的速度慢,在性能上的影响就可想而知了。 性能虽然可以通过手动
    的头像 发表于 10-16 12:02 2192次阅读