小知识点2

1.DLL中需要导出的函数前加__declsepc(dllexport)就可以了

2.__cplusplus必须是小写

3.用HMODULE做基址时,要转化为(BYTE*)

4.Windows消息分为队列消息和非队列消息,WH_GETMESSAGE不能取到非队列消息,用SendMessage发送的消息不经过队列,用PostMessage发送的消息被放入队列

5.PE PIMAGE_IMPORT_DESCRIPTOR:OriginalFirstThunk可以用来转换为PIMAGE_IMPORT_BY_NAME,以获取文件名和hint.

但是,PIMAGE_IMPORT_DESCRIPTOR:FirstThunk不能转为PIMAGE_IMPORT_BY_NAME,他只是表示地址

重写导入表时,

int *myaddr = (int*)NewFreeLibrary; 
::WriteProcessMemory(hProcess, lpAddr, &myaddr, sizeof(DWORD), &BytesWritten); //注意是&myaddr,如果没有取地址-->崩溃!


6.系统有2个SSDT表, 一个是KeServiceDescriptorTable(ntoskrnl.exe导出),一个是KeServieDescriptorTableShadow(ntoskrnl.exe未导出)


7.做SSDT钩子时,可以call myfunction,但是做Detour时,必须mov eax,myfunction,call eax,否则崩溃。。为毛?

你可能感兴趣的:(小知识点2)