想将一个虚拟 cpu ,塞进一个 app 里,运行效率可能会慢到无法接受吗?
1
kkocdko 2023-08-24 05:47:18 +08:00 1
你说的“虚拟 CPU”是什么呢?你的问题描述比较模糊,标题写是“App 运行在虚拟 CPU 上”,正文又写“将一个虚拟 CPU ,塞进一个 App 里”。
如果只是要做隔离,那么 Android 上有较多方案: 1. 自带的 Workspace 2. VirtualApp 及衍生产品,这个据我所知 360 有大规模应用,不仅仅是隔离,还可以做审查 3. VMOS 类,利用不是特别完善的容器技术做到隔离 4. 使用内核 Namespaces API ,例子有 Waydroid ,但是这个需要内核没有阉割 Namespaces API 如果是研究性质的,比如想要搞 RISC-V ,那直接用 QEMU 即可。TCG ,当然很慢。 |
2
loyan666 OP @kkocdko 感谢大佬回复,
实际上是想实现汇编指令跟踪(trace), 就是每条执行汇编,以及当前指令所对应的寄存器都能记录下来,用于分析程序。 普通虚拟化如 va 、vmos 只能起到应用隔离效果,但是拿不到 cpu 控制权。 所以想直接实现一个功能,让 app 的 so 都运行在一个模拟 cpu 上(当然为此还要自行实现一系列如 linker 、线程等东西),这样就能控制 cpu 拿到运行时所有汇编指令, 但是又担心这样做 app 运行效率会不会非常低,导致没有使用价值。 |
3
kkocdko 2023-08-24 12:14:41 +08:00 via Android
看你的需求描述,现有调试器应该都可以直接用的吧?没有调试信息只是不能做精确的分析,但是运行时断点,内存补丁什么的都是可以用的
|
4
kkocdko 2023-08-24 12:18:30 +08:00 via Android
如果真的要按照你的思路来,也可以 qemu ,随便找一篇内核调试的教程就行,步骤应该差不多。但是风险在于所有语句都会被抓到,混在一起非常混乱。一般都是有 debuginfo 才这么干。
建议你还是直接用那些专门做逆向的工具,ida ,cutter 什么的。不过 Android 上的逆向我其实没怎么接触过,看看其他人怎么说 |