该模块包含了小量编程时常用的函数集:
取变量栈指针、A2W、W2A,Call(任意数量参数,内部会维护栈平衡),取函数真实地址(可为Naked函数,需自己维护栈平衡),以及部分堆函数;
还有两个比较特殊的:
一是SDK_OBJ里边的函数集,允许用户通过This控制类,包括读写成员,调用方法,设置对象实例
二十SDJ_InlineHook,我翻了很多论坛里边的代码,都是直接jmp,要调用原函数时再暂时复原调用的。
这个方法有一个隐患,就是在多线程中,如果一个线程暂停Hook,恰好这个函数又被另一个线程调用,则那个线程调用的是原函数!没有被Hook。
本人采用的方法是写入jmp,调用原函数的时候,把原函数前几句代码拷入内存再加上jmp,如此便可保证在多线程下的安全了。
另外本Hook采用链表机制,可以乱序卸载。