前言

我dump内存采用的方式是termux + lldb

手机需要有root权限

环境准备

首先下载最新版termux


2024/01/08 补充,由于ttyd的默认行为发生变更server: replace --readonly with --writable,因此开启远程要能输入命令操作,需要加上-W选项


下载安装后打开termux,先安装几个必要的软件(普通用户下安装)

pkg install nano
pkg install openssl
pkg install lrzsz
pkg install lldb

官方源太慢,可以通过termux-change-repo选择国内源,推荐选择ustc的源

简要说明

  • nano 用于编辑文件
  • lrzsz 用于传输文件,搭配ttyd会比较方便,再也不用adb pull了

    • 下载文件:lsz file.zip
    • 上传文件:lrz
  • openssl 是避免某些操作的时候可能出现library "libssl.so.3" not found的情况
  • lldb 当然是用来dump内存

如果还是出现了library "libssl.so.3" not found之类的问题,请执行pkg upgrade更新下整个termux环境

为了方便在PC端操作,需要配置termux的环境,PC上进入termux shell环境这里推荐两个方式

  • adb shell + 配置环境变量
  • termux + ttyd + 网页远程配置

adb方式

使用adb要么有线连接,要么无线连接

然后在电脑上执行下面的命令

adb shell
su

ttyd方式

在termux中安装ttyd,命令如下

pkg install ttyd

安装完成后执行下面的命令开启服务端

ttyd bash

如果想调整字体大小,颜色配置等,可以参考执行下面的命令

ttyd -t fontSize=22 -t 'theme={"background": "#282A36", "foreground": "#F8F8F2", "cursor": "#F8F8F2", "selection": "#44475A"}' bash

然后就可以在PC上通过http://{手机ip}:7681访问手机的shell了,可以多开

配置环境变量

通过adb方式或者ttyd方式,现在已经可以在PC端方便操作了

前面说到要配置termux环境,主要指的是termux的环境变量

打开termux后输入env命令执行即可看到termux普通用户下的环境变量

有很多,这里简化部分,最终我们需要配置的环境命令如下:

export SHELL=/data/data/com.termux/files/usr/bin/bash
export COLORTERM=truecolor
export HISTCONTROL=ignoreboth
export PREFIX=/data/data/com.termux/files/usr
export TERMUX_IS_DEBUGGABLE_BUILD=1
export TERMUX_MAIN_PACKAGE_FORMAT=debian
export PWD=/data/data/com.termux/files/home
export TERMUX_VERSION=0.118.0
export EXTERNAL_STORAGE=/sdcard
export LD_PRELOAD=/data/data/com.termux/files/usr/lib/libtermux-exec.so
export HOME=/data/data/com.termux/files/home
export LANG=en_US.UTF-8
export TERMUX_APK_RELEASE=GITHUB
export TMPDIR=/data/data/com.termux/files/usr/tmp
export TERM=xterm-256color
export SHLVL=2
export PATH=/data/data/com.termux/files/usr/bin:$PATH

先切换到su

现在复制上面的命令,粘贴到你的shell中执行

每次复制粘贴可能操作比较麻烦,可以将上述内容写入到一个文件中,比如env.sh

文件放到/data/data/com.termux/files/home目录下

记得进入shell后先切换su,使用如下命令即可一次性设置好环境变量

cd /data/data/com.termux/files/home
source env.sh

adb方式

ttyd方式

至此dump内存的环境准备工作做好了


请注意,在执行lldb命令后,请通过platform shell pwd检查lldb的工作目录

如果不是/data/data/com.termux/files/home目录,那么使用下面的命令切换工作目录

platform settings -w /data/data/com.termux/files/home

通常情况下,在设置环境变量后,shell会自动切换到/data/data/com.termux/files/home

这个时候执行lldb命令,那么lldb会使用当前目录作为工作目录

但是为了确保后续操作不出问题,每次进入lldb后务必执行platform shell pwd检查一下