运行时内存跟踪工具
工具:
tcmalloc:Inline Hook
vld:IAT Hook
IAT Hook:
IAT :导入表,自己去查
修改dll的导入函数地址,修改的就是IAT
Inline Hook:
函数内注入代码,一般注入跳转代码
对比:(来自gpt)
Inline Hook和IAT Hook是两种常见的钩子技术,用于修改函数的行为。它们有一些共同点,但也有一些重要的区别。
相同点:
-
修改函数行为:Inline Hook和IAT Hook都可以用于修改函数在运行时的行为。它们可以注入自定义代码,并改变函数的执行逻辑。
-
功能扩展:两种钩子技术可以用于实现函数跟踪、API监控、代码注入等功能,提供了对程序行为的更多控制。
不同点:
-
实现方式:Inline Hook直接修改函数的二进制代码,将目标函数的指令替换为钩子函数的指令。而IAT Hook则是修改导入函数表中的函数地址,使得程序在调用导入函数时实际执行的是被劫持的函数。
-
侵入性:Inline Hook的侵入性更强,需要修改函数的二进制代码,可能会引入更多的风险和不稳定性。而IAT Hook相对来说更加稳定,不直接修改函数的二进制代码,而是修改导入函数表。
-
兼容性:Inline Hook对于操作系统和编译器的更新更敏感,可能会受到保护机制的干扰,导致无法正常工作。而IAT Hook相对来说更稳定,能够在不同的系统和编译环境下工作。
-
使用场景:Inline Hook适用于需要对函数的执行逻辑进行更细粒度的控制和修改的场景。而IAT Hook适用于在函数调用层面进行拦截和修改的场景。
总体而言,Inline Hook和IAT Hook都是常见的钩子技术,用于修改函数的行为。选择使用哪种钩子技术取决于具体的需求和场景,需要综合考虑侵入性、稳定性和兼容性等因素。同时,在使用钩子技术时,也需要遵循相关的法律和道德规范,确保不会对系统的稳定性和安全性造成威胁。