呼呼 总算又发了一版
这段时间主要是在搓这个 blook,一个自己的 hook/hack/binary instrument 框架
为什么已经有这么多好的 Hook 框架了(比如 MinHook, Dobby, frida, subhook, detours.....)还要自己造轮子呢?其实还是对它们的 API 都不满意;个个都声称有 C++ 兼容,但是个个的 API 都长得像 hook(void target, void hook) 这种东西;用的时候东 cast 一下、西 cast 一下,南边还写一堆全局变量,也不支持 lambda 作为 hook 函数等...
同时,它们对逆向工程利用的周边建筑(infrastructure?)都不完善甚至没有,比如 xref, aob scan, CRT injection 等;对某些特殊需求(如需要在函数中间 hook)支持也无法令人满意;这些以前都是我手搓的,组合起来很别扭,一点都不优雅
于是出于解决这些种种问题的目的,我又造了个这个轮子。现在,B* 已经完全切换至该框架运行,足见其完备性。将来 chronocat-native/crychiccat 也会切换至该框架~
Fun Facts
在重构至 blook 后:
> 20 changed files with 385 additions and 2,177 deletions.
> 初始化时间加速了约 80%
> 非常方便地实现了 Failing gracefully
这段时间主要是在搓这个 blook,一个自己的 hook/hack/binary instrument 框架
为什么已经有这么多好的 Hook 框架了(比如 MinHook, Dobby, frida, subhook, detours.....)还要自己造轮子呢?其实还是对它们的 API 都不满意;个个都声称有 C++ 兼容,但是个个的 API 都长得像 hook(void target, void hook) 这种东西;用的时候东 cast 一下、西 cast 一下,南边还写一堆全局变量,也不支持 lambda 作为 hook 函数等...
同时,它们对逆向工程利用的周边建筑(infrastructure?)都不完善甚至没有,比如 xref, aob scan, CRT injection 等;对某些特殊需求(如需要在函数中间 hook)支持也无法令人满意;这些以前都是我手搓的,组合起来很别扭,一点都不优雅
于是出于解决这些种种问题的目的,我又造了个这个轮子。现在,B* 已经完全切换至该框架运行,足见其完备性。将来 chronocat-native/crychiccat 也会切换至该框架~
Fun Facts
在重构至 blook 后:
> 20 changed files with 385 additions and 2,177 deletions.
> 初始化时间加速了约 80%
> 非常方便地实现了 Failing gracefully