0x00 前言
来学习一下内联汇编的hook
0x01 一个借鉴并改编来的HOOK小模板
1 | //====================================================================================== |
1 | //小示例 |
0x02 编写中遇到的几个问题
LNK2005 某个变量已经在***.obj中定义
这个问题的原因有多种
而我是因为头文件的重复包含,具体来讲就是,某个头文件有被多个.h或者.cpp文件包含。
因为在一个大的工程中,需要增加一个全局变量,一开始我是加在了某一个头文件中,然后报重复定义的错误,很显然,由于这个头文件被多个源文件include,虽然在编译阶段可能能通过,但是在链接的时候就会出现重复定义的错误。
解决方法
首先要做的
尽量不把其他.cpp文件需要用到的变量定义在.h文件中!
直接在其他.cpp文件中定义变量!
方案一
使用ifndef-define-endif的结构
1 | //InlineHook.h |
方案二
使用#prama once结构
1 |
|
C2065 未声明的标识符
很尴尬的一个错误,是头文件顺序错了
1 | //错误的顺序 |
naked只能应用到非成员函数的定义
这种汇编的函数在头文件中的话,需要声明且实现,不可以在头文件(.h)声明而在源文件(.c或者.cpp)中实现
而且为了避免再次出现LNK2005
的报错,最好加上static
关键字
1 | //示例, InlineHook.h |