1 Star 0 Fork 0

GrantWoo/VirtualAppDoc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
VAHook.puml 1.51 KB
一键复制 编辑 原始数据 按行查看 历史
prife 提交于 2016-09-01 22:03 . VirutalApp: add Hook class UML
@startuml
interface IBinder
abstract class Hook {
getName()
beforeHook
onHook
afterHook
isEnable
}
interface IHookObject {
void addHook(Hook hook);
removeHook(hookName);
getHook(name);
getProxyObject();
}
class HookObject {
Map<String, Hook> mHookMaps;
mBaseObject;
mProxyObject;
}
class PatchObject {
hookObject
}
class ActivityManagerPatch {
}
interface Injectable {
inject()
isEnvBad()
}
class IInterface {
IBinder asBinder();
}
class IActivityManager {
startActivity()
broadcastIntent()
}
IHookObject <|-- HookObject
HookObject <|-- PatchObject
Injectable <|-- PatchObject
Hook <|-- StartActivity
Hook <|-- BroadcastIntent
IHookObject *-- IInterface
HookObject *-- Hook
ActivityManagerPatch *-- StartActivity
ActivityManagerPatch *-- BroadcastIntent
IBinder <|-- HookBinder
IHookObject <|-- HookBinder
IInterface <|-- IActivityManager
PatchObject <|-- ActivityManagerPatch
class PatchManager {
Map<Class, Injectable> mPatchMaps;
init()
injectAll()
addAllPatches()
addPatch()
addAllPatches()
}
PatchManager *-- ActivityManagerPatch
note top of Hook
该类是对方法的hook,每个Hook对象都对应于一个方法,
如IActivityManager.startActivity
endnote
note top of HookObject
该类对应于一个被hook的类,所有内部都代理了IInterface的某个具体子类,
该类中有一张表,存储了每个被hook的方法的Hook对象.
该类中对接口类使用
Proxy.newProxyInstance
InvocationHandler
endnote
@enduml
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/grantwoo/VirtualAppDoc.git
git@gitee.com:grantwoo/VirtualAppDoc.git
grantwoo
VirtualAppDoc
VirtualAppDoc
master

搜索帮助