Myeeygo's blog Myeeygo's blog
首页
技术
关于
  • 分类
  • 标签
  • 归档

Myeeygo

个人技术博客
首页
技术
关于
  • 分类
  • 标签
  • 归档
  • GitHub高级搜索技巧
  • GithubPage配置
  • kali配置clash
  • Vmware移动kali文件后无法正常进入系统
  • 对git设置代理
  • AndroidStudio模拟器无法启动问题
  • win11更新23H2失败问题
  • win11固定应用到开始菜单
  • Excel相关问题
  • Virtualbox虚拟机扩容
  • Virtualbox虚拟机使用主机VPN
  • vscode选择虚拟环境python解释器
  • 云服务器进行rdp远程桌面连接
  • 同一局域网的服务器使用本地VPN代理
  • 将jar转换为dex
  • 导出AndroidStudio中的apk依赖jar包
  • 解决在conda中未使用对应python版本
  • 云服务器ssh连接排查记录
  • 使用qq联系openclaw掉线问题
  • python的subprocess命令运行问题
  • 本地电脑访问云服务器自建网站
  • 中文路径pip安装报错
  • ssh连接权限问题设置
  • git大文件上传问题
  • 博客网站云服务器配置流程
  • 远程云服务器使用本地代理
  • linux安装miniconda3
  • linux安装jdk并进行多版本管理
  • 工具CryptoLLM部署记录
  • 工具CCA-Droid部署记录
  • 工具cryptoeval使用记录
  • 工具cryptbara使用记录
  • 工具cryptoguard使用记录
  • 工具MASC使用记录
  • 工具cryscanner使用记录
  • 从服务器下载文件
  • 解决gitbash对中文的支持问题
  • 创建tmux持久化对话
  • 工具crylogger部署记录
    • 描述
    • 步骤(还需要再验证一下)
      • 1、配置环境
      • 2、运行程序
      • 到了这里好像运行有问题,无法产生日志
    • PS
  • 工具cognicrypt_sast部署记录
  • 使用apkc简单构建apk
  • 使用docker的相关记录
  • 配置owasp_java_bench记录
  • cryptoapi-bench构建注意事项
  • 云服务器网站证书更新
  • 技术
myeeygo
2026-10-19
目录

工具crylogger部署记录

# 描述

部署工具crylogger。

(前言:配置过程还挺折磨,折腾了两三天,包括在主机尝试配置,在docker中运行等等。感觉配置过程太依赖AI了,有些错误解决方法其实网络上面的经验帖更准确一些。)

(在部署中遇到了许多问题,尝试了许多方案。下面写的是成功的,顺便会在最后附上猜测可能会成功的方案)

# 步骤(还需要再验证一下)

接下来进行的操作实际较长,为了防止本地与远程服务器断联风险,可以使用tmux命令。接下来的命令都在tmux窗口内进行。

tmux new -s <name> 	# 创建新窗口,例子 tmux new -s crylogger
tmux attach -t <name> 	# 进入窗口,例子 tmux attach -t crylogger
1
2

# 1、配置环境

  • 编译aosp。

首先需下载ubuntu18.04docker,需要提前配置好docker国内镜像源。

编写docker file如下

FROM ubuntu:18.04

# 避免安装软件时弹出交互式配置界面卡住
ENV DEBIAN_FRONTEND=noninteractive

# 1. 将软件源替换为阿里云镜像
RUN sed -i 's/archive.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list && \
    sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list

# 2. 安装 AOSP 编译所需的核心依赖包(增加了 locales)
RUN apt-get update && apt-get install -y \
    git-core gnupg flex bison build-essential \
    zip curl zlib1g-dev gcc-multilib g++-multilib \
    libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev \
    libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils \
    xsltproc unzip fontconfig python2.7 python-pip \
    ccache rsync sudo locales wget openjdk-8-jdk vim lzip python3-pip python3 \
    libpulse0 libgl1-mesa-glx libgl1-mesa-dri libx11-6 libxcb1 libxcb-shm0 libxcb-xfixes0 \
    && rm -rf /var/lib/apt/lists/*

# 配置 sudo 组免密(关键)
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers

# 3. 生成 en_US.UTF-8 locale 数据(彻底解决 warning)
RUN locale-gen en_US.UTF-8

# 4. 将 python2 设为默认
RUN ln -sf /usr/bin/python2.7 /usr/bin/python

# 5. 安装 repo 工具
RUN curl -o /usr/local/bin/repo https://mirrors.tuna.tsinghua.edu.cn/git/git-repo && \
    chmod a+x /usr/local/bin/repo

# 6. 设置 UTF-8 环境
ENV LANG=en_US.UTF-8 \
    LANGUAGE=en_US:en \
    LC_ALL=en_US.UTF-8

# 7. 配置 ccache 环境变量
ENV USE_CCACHE=1 \
    CCACHE_DIR=/ccache \
    CCACHE_EXEC=/usr/bin/ccache

# 创建普通用户并切换(放在最后)
ARG UID=1000
ARG GID=1000
ARG USERNAME=builduser
RUN groupadd -g ${GID} ${USERNAME} 2>/dev/null || true && \
    useradd -m -u ${UID} -g ${GID} -G sudo -s /bin/bash ${USERNAME}
# 如果需要创建 /aosp 并改属主,可以在这里做(root 时创建并 chown)
RUN mkdir -p /aosp && chown ${USERNAME}:${USERNAME} /aosp
USER ${USERNAME}
WORKDIR /aosp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53

依据docker file进行构建

docker build \
  --build-arg UID=$(id -u) \
  --build-arg GID=$(id -g) \
  --build-arg USERNAME=$(whoami) \
  -t ubuntu_new:18.04 .
1
2
3
4
5

下载好之后,启动镜像

docker run -it \
  --name crylogger_build03 \
  --cap-add=SYS_ADMIN \
  --security-opt seccomp=unconfined \
  --device /dev/kvm \
  -v /data/gaoyq/crylogger/emu_docker/source:/aosp \
  -v /data/gaoyq/crylogger/emu_docker/ccache:/ccache \
  ubuntu_new:18.04 \
  /bin/bash
1
2
3
4
5
6
7
8
9

克隆crylogger库

git clone https://github.com/lucapiccolboni/crylogger.git
1

接下来就可以运行对应的脚本文件了,不过由于国内网络的问题,有些脚本代码需要修改。为了方便调试起见,接下来就手动输入命令了。不过最后也会放上使用脚本代码的方式。

进入克隆的仓库文件夹,创建android-emu文件夹

cd crylogger
mkdir android-emu
cd android-emu
1
2
3

先配置git信息,避免最后卡住

  git config --global user.email "myeeygo@qq.com"
  git config --global user.name "myeeygo"
1
2

执行repo初始化

# 这个部分的等待时间比较长
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-9.0.0_r36 --depth=1  --repo-url=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
# repo init 最后会选择“Enable color display in this user account (y/N)? ”,默认回车就行
repo sync
1
2
3
4

代码同步完成之后,修改覆盖相关配置

# 假设当前在crylogger/scripts目录下面,执行下面命令
rsync -a deltas/libcore/ ../android-emu/libcore/
rsync -a deltas/frameworks/ ../android-emu/frameworks/
1
2
3

接下来修改 android-emu/art/runtime/mem_map.cc 文件,防止地址随机化导致编译不成功。

# 假设当前在crylogger目录下面
vim android-emu/art/runtime/mem_map.cc
# 在vim编辑器中,输入 
:set nu 		# 设置行号显示
507G		#跳转到文件的第507行

# 在 flags |= MAP_FIXED; 这行后面添加以下代码
#if !defined(ART_TARGET)
  } else if (expected_ptr) {
#define MAP_FIXED_NOREPLACE 0x100000
    flags |= MAP_FIXED_NOREPLACE;
#endif

即原来的上下文是
  flags |= MAP_FIXED;
  } else {
    CHECK_EQ(0, flags & MAP_FIXED);
  
修改后变成了
    flags |= MAP_FIXED;
#if !defined(ART_TARGET)
  } else if (expected_ptr) {
#define MAP_FIXED_NOREPLACE 0x100000
    flags |= MAP_FIXED_NOREPLACE;
#endif
  } else {
    CHECK_EQ(0, flags & MAP_FIXED);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

给当前用户配置kvm组,防止之后启动模拟器不成功

# 输入以下命令,查看kvm的权限
ls -l /dev/kvm
# 输出可能类似以下所示
crw-rw---- 1 root 994 10, 232 Jul  1 06:29 /dev/kvm
# 手动创建组并添加用户
sudo groupadd -g 994 kvm
sudo usermod -aG kvm $(whoami)
newgrp kvm   # 刷新组

# 如果输出类似 crw-rw---- 1 root kvm 10, 232 ... ,那么不需要创建组,执行下面命令即可
sudo usermod -aG kvm $USER
newgrp kvm    # 刷新组
1
2
3
4
5
6
7
8
9
10
11
12

接下来尝试编译

# 进入android-emu文件夹
cd ./android-emu
# 生效相关环境变量
source ./build/envsetup.sh
# 设置编译目标并进行编译
lunch sdk_phone_x86_64-userdebug
make -j $(nproc) 2>&1 | tee build.log
# 编译时的所有输出都保存在 build.log 文件中。如果报错,可以使用 grep 命令查找对应输出
1
2
3
4
5
6
7
8

编译成功后,启动模拟器

# 在android-emu文件夹下面
source build/envsetup.sh
lunch sdk_phone_x86_64-userdebug
# 启动配置设置成没有屏幕、音频,可写系统,使用CPU模拟GPU,并且使用间接渲染路径,避免因图形驱动崩溃导致模拟器进程异常终止。
emulator -writable-system -no-window -no-audio -gpu swiftshader_indirect
# 执行上述命令后,只要看到 emulator: INFO: boot completed 这个输出,就证明启动成功了
1
2
3
4
5
6

上述模拟器占用了一个终端,接下来重新打开一个终端,并进入docker容器

# 首先查看正在运行的容器,记住NAMES那一列的名称,假如容器名称为crylogger_build02
docker ps
docker exec -it crylogger_build02 /bin/bash
1
2
3

接下来为了安装自行构建的apk文件,下载 open_gapps

# 在crylogger/scripts 文件夹下面
mkdir opengapps && cd opengapps
wget https://sourceforge.net/projects/opengapps/files/x86/20210126/open_gapps-x86-9.0-super-20210126.zip
unzip open_gapps-x86-9.0-super-20210126.zip
rm Core/setup*
lzip -d Core/*.lz
# 接着执行下面三行命令,一起复制即可,它们是一个命令组
for f in $(ls Core/*.tar); do
     tar -x --strip-components 2 -f $f
done
1
2
3
4
5
6
7
8
9
10

接下来构建app,下载sdkmanager

sudo mkdir -p /opt/android-sdk/cmdline-tools
sudo chown -R $(whoami):$(whoami) /opt/android-sdk
cd /opt/android-sdk/cmdline-tools
wget https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip
unzip commandlinetools-linux-6609375_latest.zip
mv tools latest   # 重命名为 latest
export ANDROID_SDK_ROOT=/opt/android-sdk 	# 可以加入到 ~/.bashrc 中
export PATH=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$PATH 	# 可以加入到 ~/.bashrc 中
# 接受所有许可证
yes | sdkmanager --licenses
1
2
3
4
5
6
7
8
9
10

进入 crylogger/app-test目录,构建apk

cd  crylogger/app-test
# 如果下面构建命令运行有问题,可以先运行下面这条命令 
# echo "sdk.dir=/opt/android-sdk" > local.properties
./gradlew build 		#构建apk
# 生成的apk文件为 crylogger/app-test/app/build/outputs/apk/debug/app-debug.apk 
cp app/build/outputs/apk/debug/app-debug.apk ../scripts/data/apks/com.example.aes_0.apk 	#复制到对应目录。命名是有要求的,格式为 <package_name>_<version>.apk
1
2
3
4
5
6

# 2、运行程序

接下来进行apk运行分析阶段

#首先运行adb,获得运行中模拟器的编号
# 假设当前在crylogger目录下面,先配置环境变量
cd ./android-emu
source ./build/envsetup.sh
lunch sdk_phone_x86_64-userdebug
adb devices
#输出如 emulator-5554 所示,记录下来

# 接下来运行脚本,假设当前在crylogger目录下面
cd scripts
python run.py --work_dir data --session emulator-<number>
# 例子 python run.py --work_dir data --session emulator-5554
# 输出的日志在 crylogger/scripts/data/crypto_logs 目录下面
1
2
3
4
5
6
7
8
9
10
11
12
13

# 到了这里好像运行有问题,无法产生日志

接下来分析日志

# 首先下载相关python库
pip3 install zxcvbn
# 假设目前在crylogger目录
cd scripts
python check.py --work_dir data/crypto_logs --rule_id <rule_number>
# 项目自带26个规则。运行的命令例子:python3 check.py --work_dir data/crypto_logs --rule_id 03 
# 如果想要检测全部规则,去掉 --rule_id 参数即可,即运行下面命令
python3 check.py --work_dir data/crypto_logs 
# 分析结果在crylogger/scripts/data/crypto_logs目录下面,以 .rules 结尾。例如com.example.aes_0.rules
1
2
3
4
5
6
7
8
9

# PS

# 参考资料
https://android-review.googlesource.com/c/platform/art/+/2226578/1/runtime/mem_map.cc#511
https://source.android.google.cn/docs/setup/start/requirements?hl=zh-cn
1
2
3

猜测可能会成功的另一种方案

其实直接在主机 ubuntu24 上面配置应该也可以
主要的问题就是修改 android-emu/art/runtime/mem_map.cc 文件。此外还有flex自行编译。创建 libncurses.so.5、libtinfo.so.5 软连接到 libncurses.so.6、libtinfo.so.6等。
1
2

如果启动模拟器之后,一直出现时间的警告### WARNING: could not find /usr/share/zoneinfo/ directory. unable to determine host timezone,可以运行下面命令消除

# 安装时区数据(需要 root 权限)
sudo apt-get update && sudo apt-get install -y tzdata
# 选择时区时,选择 6. Asia 和 70. Shanghai 即可
1
2
3
创建tmux持久化对话
工具cognicrypt_sast部署记录

← 创建tmux持久化对话 工具cognicrypt_sast部署记录→

最近更新
01
云服务器网站证书更新
10-19
02
linux安装miniconda3
10-19
03
工具CryptoLLM部署记录
10-19
更多文章>
Theme by Vdoing | Copyright © 2025-2026 Myeeygo | 鲁ICP备2026016472号-3 | 鲁公网安备37028202001294号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式