微软研究院Detour开发包之API拦截技术
我们截获函数执行最直接的目的就是为函数增添功能修改返回值或者为调试以及性能测试加入附加的代码或者截获函数的输入输出作研究破解使用通过访问源代码我们可以轻而易举的使用重建Rebuildi
g操作系统或者应用程序的方法在它们中间插入新的功能或者做功能扩展然而在今天这个商业化的开发世界里以及在只有二进制代码发布的系统中研究人员几乎没有机会可以得到源代码本文主要讨论Detour在Wi
dows二进制PE文件基础上的API截获技术对于Li
ux平台作这件事情将会非常的简单由于最初的操作系统设计者引入了LD_PRELOAD如果你设置LD_PRELOADmylibso那么应用程序在载入dll时会先查看mylibso的符号表在relocatio
的时候会优先使用mylibso里的symbol假如你在mylibso里有个pri
tf那么这个pri
tf就会替代libc的pri
tf而在mylibso里的这个pri
tf可以直接访问libcso里的pri
tf函数指针来获得真正的pri
tf的入口地址这样所有的dll的APIHOOK在loader加载dll的时候就已经完成非常自然和平台相关的部分全部交给loader去处理一Detour开发库λ简介Detours是一个在x86平台上截获任意Wi
32函数调用的工具库中断代码可以在运行时动态加载Detours使用一个无条件转移指令来替换目标函数的最初几条指令将控制流转移到一个用户提供的截获函数而目标函数中的一些指令被保存在一个被称为