CamoDroid 与 Frida Android动态分析工具搭建流程(linux)

CamoDroid 与 Frida Android动态分析工具搭建流程(linux)

写在前面

这个东西配置起来比较复杂,其实最主要就是配置frida,如果你之前就使用过frida框架的话问题就不是很大

介绍camodroid

CamoDroid 是一个开源和开放架构的 Android 应用程序动态分析环境(沙盒),可以抵御模拟器规避。它能够模仿考虑各种级别和功能的真实设备。迷彩机器人具有以下功能:

  1. CamoDroid 可以通过掩盖分析环境的存在来模仿实际设备来运行应用程序。它监控可用于识别 Android 沙箱的 Java 和本机 (C++) API,并提供类似于真实设备提供的返回值。
  2. 它将传感器模拟到正在运行的应用程序,并为正在运行的应用程序提供传感器读数。
  3. CamoDroid 模仿实际的用户数据(通过受益于包含各种文件类型的文件数据集)。
    它记录应用程序发出的受权限保护的 API 调用的执行。

配置流程

这个的大体流程可以分为三个部分

  1. 安装一个android模拟器
  2. 安装frida-tools在电脑上,安装frida-server在模拟器上面,同时确保模拟器上的frida-server在运行中
  3. 下载相应的数据包并放在这个device中的文件夹里面

听起来很简单对不对,但是如果不踩坑的就不叫编程了

安装模拟器

我用的xdroid,就直接跳过了,当然你也可以用其他的模拟器,作者推荐的是国外的GenyMotion

https://www.genymotion.com/

安装frida-tools

这个比较简单,我ubuntu上有好几个版本的python,我是用的python310,然后直接就pip安装frida-tools就可以了

首先我们打开一个终端,然后输入

shell 复制代码
sudo sysctl kernel.yama.ptrace_scope=0

之后再打开一个终端输入cat,然后就放着不管就可以了

之后我们新建一个python文件,输入下面这些代码,然后运行一下,如果输出正常的话就说明没有问题

python 复制代码
import frida

https://github.com/frida/frida/releases
session = frida.attach("cat")

script = session.create_script("""
rpc.exports.enumerateModules = () => {
  return Process.enumerateModules();
};
""")
script.on("message", on_message)
script.load()

print([m["name"] for m in script.exports.enumerate_modules()])

当然不出意外的话就要出意外的,如果你是这样运行那么很有可能会出现下面这个问题

frida.ProcessNotFoundError: ambiguous name; it matches: cat (pid: 15581), cat (pid: 15582), cat (pid: 28379)

这就说明你的电脑中同时存在的三个名字相同的进程,程序不知道到底是哪一个所以就报错了,然后我们的解决方法就是找到我们终端的进程的pid才可以

我们可以暂停之前的cat,然后输出一下是哪两个cat在后台运行,然后再启动cat,看看新增加的cat是哪一个,记下pid,一般来说的话,都是最后一个pid是我们需要的pid,比如我这里就是28379这个pid,然后我们直接把上面的这个代码换成下面这个

python 复制代码
# 原来的代码是这样的
session = frida.attach("cat")

#我们改成下面这样
session = frida.attach(28379)

这样就可以得到类似这种输出

['cat', ..., 'ld-2.15.so']

如果出现一个warning的话忽略就好,warning一般不重要

安装frida-server

首先需要安装adb,这个对于linux用户就是一行代码的事情

shell 复制代码
sudo apt-get install android-tools- adb

然后通过开发助手获得android系统的cpu信息,但是!!!!注意!!!如果是虚拟机,即使这里写的是可以跑arm,但是还是要下载x86_64的,我就踩了这一个坑

对了这个链接在这里

https://github.com/frida/frida/releases

这里我要提一嘴,我不明白为什么google就是不去完善他的arm架构模拟器,我尝试过很多次android studio的arm架构在电脑上跑,结果都是会有问题,按说这也不应该是很难的事情,因为其他的模拟器比如雷电或者xdroid都有相应的arm模拟器,但是android studio的就是跑不起来,无法运行带有arm架构下编译native code的软件,就很奇怪

然后下载好之后我们按这样搞

之后我们打开一个终端输入

shell 复制代码
frida-ps -U 

然后我们就可以看到这些进程了

这样就说明我们的frida什么的都配置好了

使用CamoDroid

这个官方的使用方法在这里

https://github.com/farnoodfaghihi/CamoDroid/wiki/Usage

首先打开一个终端,使用adb安装这个软件

shell 复制代码
adb install xxx.apk
如果报错的话就加上一个参数,就像下面这样
adb install -t xxx.apk

之后使用命令行运行上面的frida-server,如果之前运行过了就不要再运行了

之后我们运行这个代码,就是别忘了cd到camodroid的解压目录中再运行

官方给出的命令是,但是!!!这个命令不能用,有问题

shell 复制代码
frida -U -f com.example.application -l CamoDroid.js --no-pause

因为frida和这个软件的更新不同步,所以出了问题,正确命令应该是

shell 复制代码
frida -U -f com.example.application -l CamoDroid.js

注意:com.example.application是你的包名字,如果你不知道的话可以直接用开发助手查出来

之后我们运行完命令之后就是这样的

相关推荐
梅见十柒10 分钟前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生
Koi慢热13 分钟前
路由基础(全)
linux·网络·网络协议·安全
传而习乎23 分钟前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos
我们的五年33 分钟前
【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数
linux·c++·学习
IT果果日记1 小时前
ubuntu 安装 conda
linux·ubuntu·conda
Python私教1 小时前
ubuntu搭建k8s环境详细教程
linux·ubuntu·kubernetes
羑悻的小杀马特1 小时前
环境变量简介
linux
小陈phd2 小时前
Vscode LinuxC++环境配置
linux·c++·vscode
是阿建吖!2 小时前
【Linux】进程状态
linux·运维
Dnelic-2 小时前
【单元测试】【Android】JUnit 4 和 JUnit 5 的差异记录
android·junit·单元测试·android studio·自学笔记