是否存在应用启动时触发的hook?应用打开时如何无计时执行指定函数?
应用启动时执行指定函数的实现方案与相关库
根据你使用的开发平台不同,可用的Hook库和实现方案存在差异,以下是主流平台的通用实现方式,均不依赖任何计时类函数:
桌面端(Windows/macOS/Linux)
- 第三方Hook库
- Windows平台可使用
Detours库,直接Hook目标程序的入口点函数(通常是WinMain/main),在入口函数执行前先运行自定义逻辑,触发时机完全绑定程序启动流程,不会在其他场景被调用 - 跨平台场景可使用
Frida,附加到目标进程后直接Hook程序的加载入口,仅在进程初始化启动阶段触发自定义函数
- Windows平台可使用
- 原生实现方案
- 如果你是目标程序的开发者,直接在程序入口函数的最开头调用需要执行的逻辑即可,不需要额外依赖
- 如果你需要修改第三方程序,可通过PE/ELF/Mach-O二进制注入技术,在程序的入口点插入自定义函数的调用指令,仅启动时执行一次
移动端(Android/iOS)
- 第三方Hook库
- Android平台可使用
Xposed/LSPosed框架,Hook应用的Application类的onCreate生命周期方法,该方法仅在应用进程首次启动时被调用一次,完全符合触发要求 - iOS平台可使用
Cydia Substrate或者fishhook,HookUIApplicationMain函数或者AppDelegate的didFinishLaunchingWithOptions方法,仅在应用启动阶段触发
- Android平台可使用
- 原生实现方案
- 自行开发的应用可直接在对应平台的应用入口生命周期回调中添加自定义逻辑,不需要额外Hook
注意事项
所有Hook类方案如果针对第三方程序使用,需要对应平台的root/越狱权限,或者自行对目标安装包进行重打包注入逻辑。
如果是自行开发的应用,优先使用原生入口回调方案,稳定性和兼容性远高于Hook方案。
内容的提问来源于stack exchange,提问作者Rocio
相关产品推荐
相关产品推荐

