Hacking Android
Hacking Android
Hacking Android
Android: 不只是应用生态
还是
开发者生态
POSIX system calls
→
\to
→
libc
→
\to
→
coreutils
→
\to
→
应用程序世界
幕后:binutils, gcc, gdb, vscode, ...
Android 也提供了丰富的开发者工具
Android Studio, Android Emulator, DDMS (Dalvik Debug Monitor Server), ...
Android Debug Bridge (adb)
adb push/pull/install
adb shell (screencap /sdcard/screen.png)
adb forward/logcat/jdwp, ...
Hacking Android
我们可以做什么?
scrcpy
在设备上捕获视频流 (通常有硬件加速),再传递给 Host
UI Automation (Monkey)
Infinite Monkey Theorem: 给 10,000 只猴子和打字机,只有一只能打出 C 程序,其他只能打出 Perl 程序
我们的工作:Cross-device record & replay
Hacking Android
甚至可以 “任意改变” App 的行为
LSPosed
; VirtualXposed 甚至不需要 root
Hacking Android
Hacking Android
如何杀死一个 Android 进程?
RTFSC:
ActivityManagerService.java
Android 每个 App 都有独立的 uid
遍历进程表,找到属于 uid 的进程
Process.KillProcessGroup
间隔 5ms,连续杀死 40 次
,防止偶然 “杀不干净”
那么,我们是不是就可以利用数据竞争进程保活了呢?
成为孤儿进程从而不会立即收到 SIGKILL 信号
在被杀死后立即唤醒另一个进程
“Diehard apps”
(EuroSys'19)
Hacking Android
在 Android 的浪潮里
我们也想过做一些很有趣的事
甚至也做成了 (
Jigsaw paper
)
在 LLM 时代,更容易做成、跟容易做好
我们都被 “publish or perish” 束缚了
每个人都可以是生活的黑客