OSDN Git Service

Add support for process protection (prevents from loading untrustworthy DLLs with...
[ffftp/ffftp.git] / protectprocess.h
1 // protectprocess.h
2 // Copyright (C) 2011 Suguru Kawamoto
3 // \83v\83\8d\83Z\83X\82Ì\95Û\8cì
4
5 #ifndef __PROTECTPROCESS_H__
6 #define __PROTECTPROCESS_H__
7
8 #define ENABLE_PROCESS_PROTECTION
9
10 // \8e\9f\82Ì\92\86\82©\82ç1\8cÂ\82Ì\82Ý\97L\8cø\82É\82·\82é
11 // \83t\83b\83N\90æ\82Ì\8aÖ\90\94\82Ì\83R\81[\83h\82ð\8f\91\82«\8a·\82¦\82é
12 // \91S\82Ä\82Ì\8cÄ\82Ñ\8fo\82µ\82ð\83t\83b\83N\89Â\94\\82¾\82ª\8c´\97\9d\93I\82É\93ñ\8fd\8cÄ\82Ñ\8fo\82µ\82É\91Î\89\9e\82Å\82«\82È\82¢
13 #define USE_CODE_HOOK
14 // \83t\83b\83N\90æ\82Ì\8aÖ\90\94\82Ì\83C\83\93\83|\81[\83g\83A\83h\83\8c\83X\83e\81[\83u\83\8b\82ð\8f\91\82«\8a·\82¦\82é
15 // \93ñ\8fd\8cÄ\82Ñ\8fo\82µ\82ª\89Â\94\\82¾\82ª\8cÄ\82Ñ\8fo\82µ\95û\96@\82É\82æ\82Á\82Ä\82Í\83t\83b\83N\82ð\89ñ\94ð\82³\82ê\82é
16 //#define USE_IAT_HOOK
17
18 typedef HMODULE (WINAPI* _LoadLibraryA)(LPCSTR);
19 typedef HMODULE (WINAPI* _LoadLibraryW)(LPCWSTR);
20 typedef HMODULE (WINAPI* _LoadLibraryExA)(LPCSTR, HANDLE, DWORD);
21 typedef HMODULE (WINAPI* _LoadLibraryExW)(LPCWSTR, HANDLE, DWORD);
22
23 #ifndef DO_NOT_REPLACE
24
25 #ifdef USE_IAT_HOOK
26
27 // \95Ï\90\94\82Ì\90é\8c¾
28 #define EXTERN_HOOK_FUNCTION_VAR(name) extern _##name p_##name;
29
30 #undef LoadLibraryA
31 #define LoadLibraryA p_LoadLibraryA
32 EXTERN_HOOK_FUNCTION_VAR(LoadLibraryA)
33 #undef LoadLibraryW
34 #define LoadLibraryW p_LoadLibraryW
35 EXTERN_HOOK_FUNCTION_VAR(LoadLibraryW)
36 #undef LoadLibraryExA
37 #define LoadLibraryExA p_LoadLibraryExA
38 EXTERN_HOOK_FUNCTION_VAR(LoadLibraryExA)
39 #undef LoadLibraryExW
40 #define LoadLibraryExW p_LoadLibraryExW
41 EXTERN_HOOK_FUNCTION_VAR(LoadLibraryExW)
42
43 #endif
44
45 #endif
46
47 HMODULE System_LoadLibrary(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags);
48 BOOL RegisterModuleMD5Hash(void* pHash);
49 BOOL UnregisterModuleMD5Hash(void* pHash);
50 BOOL FindModuleMD5Hash(void* pHash);
51 BOOL IsModuleTrustedA(LPCSTR Filename);
52 BOOL IsModuleTrustedW(LPCWSTR Filename);
53 BOOL InitializeLoadLibraryHook();
54 BOOL EnableLoadLibraryHook(BOOL bEnable);
55 BOOL RestartProtectedProcess(LPCTSTR Keyword);
56
57 #endif
58