VNCHOOKS是一个设置全局钩子的动态链接库。
先看入口函数
BOOL WINAPI DllMain (HANDLE hInst, ULONG ul_reason_for_call, LPVOID lpReserved)
当VNCHOOKS.dll被加载的时候,首先惯例保留自己的句柄hInst,然后进入
BOOL InitInstance() 函数
BOOL InitInstance()
首先调用
ATOM GlobalAddAtom( LPCTSTR lpString
);
申请了一个原子变量,WINDOWS系统维护了一张原子表,可以这么理解,保存了一个字符串数组,每个字符串不能超过127字符。每个字符串对应一个唯一的ID(16位)。
最常用于Dynamic Data Exchange、防止2次启动(在WINVNC中是用命名的MUTEX来防止二次启动的)等。原子变量是采用计数的,每次调用GlobalAddAtom会让计数加1,GlobalDeleteAtom会让计数减1,
直到计数为0系统才会删除。原子在这里的应用将在稍后看到。
接下来是从注册表读取配置。
7个配置项