jmpews / Dobby

a lightweight, multi-platform, multi-architecture hook framework.
Apache License 2.0
4.04k stars 845 forks source link

有支持Arm/Thumb的计划吗 #1

Closed asLody closed 7 years ago

jmpews commented 7 years ago

因为我之前关注在 ios 上, 觉得的 ios 上的 ARM/Thumb 很少了, 会入不敷出. 然后问了一个朋友, 好像 android 上大多数还是 32 位.

所以有想过支持 android 的, 可最近 一两个周没有太多时间, 而且如果支持也可能是 so 等多些工作, 对 dex 不熟, 对 ELF 层次比较熟.

jmpews commented 7 years ago

大部分模块啥 没什么问题, 指令修复模块指令写模块, 可能要参考 frida-gum 做适配.

asLody commented 7 years ago

希望近期可以照着frida-gum先适配一下Arm/Thumb,我的项目: VirtualApp 会用到你的HookZz。 支持Android不需要熟悉dex,做好ios的,只需要少量改动就可以移植过来

asLody commented 7 years ago

我的需求是,Hook所有IO有关的syscall,然后将路径重定向。

jmpews commented 7 years ago

嗯, 很早关注过 VirtualApp, 很厉害(我之前在做 so 注入的时候, 在对于利用 .gnu.hash 进行 find_symbol 时花了很长时间搞定, 之后发现在 VirtualApp 很早就有实现 ).

是要模拟 sandbox?

好, 近期会搞下, 希望与大佬多多交流.

asLody commented 7 years ago

有联系方式吗?QQ/Wechat?

jmpews commented 7 years ago

WeChat: winter1ife

jmpews commented 7 years ago

QQ: 858982985 (只不过比较少用)

Rprop commented 7 years ago

我也有这想法, 因为SubstrateModule似乎不支持arm64, 目前也没发现好用的64位hook框架. 不过有个潜在的问题是, 引入capstone会使得bin比较大。

Rprop commented 7 years ago

另外, VirtualApp的IO重定向似乎漏了对/storage/emulated/0/Android/data/的重定向

jmpews commented 7 years ago

@rrrfff 实际上用 capstone 只解析了几条指令, 在 arm/arm64 指令长度是可以判断. 在 x86/x64 上指令长度的判断可能比较难. 这个在指令修复时要用到. 之后(arm/arm64)可能加上一个编译选项是否启用 capstone ?

Rprop commented 7 years ago

@jmpews x86/x64上有许多更为轻量的disassembler可用来计算指令长度, 比如Hacker Disassembler Engine, LDasm等等, 所以最好是能直接脱离capstone

jmpews commented 7 years ago

但是目前来说更稳定/更健壮还是 capstone, 大部分的 disassembler 几乎都没啥更新了(虽然本身可能都不需要啥更新).

jmpews commented 7 years ago

已经支持 arm/arm64/ios/android, 并移除 capstone, 关闭这个 issue 了.