FFFTPのソースコードです。
Revisión | afd0daade7b7371f57f3b5f8a66b6b8bc640cd0e (tree) |
---|---|
Tiempo | 2011-10-28 19:02:22 |
Autor | s_kawamoto <s_kawamoto@user...> |
Commiter | s_kawamoto |
Change behavior of checking closed sockets for some Windows 2000 environments.
Fix Solution files.
Change encoding of source codes into UTF-8.
@@ -4,7 +4,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FFFTP", "FFFTP.vcproj", "{5 | ||
4 | 4 | EndProject |
5 | 5 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FFFTP_English", "FFFTP_English.vcproj", "{EE7CC1BD-92A9-46D5-8270-386BD7BEEA55}" |
6 | 6 | EndProject |
7 | -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PuTTY", "putty\PuTTY.vc90.vcproj", "{AF1981EB-379B-43B8-BE66-298194297B5C}" | |
7 | +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PuTTY", "putty\PuTTY.vcproj", "{AF1981EB-379B-43B8-BE66-298194297B5C}" | |
8 | 8 | EndProject |
9 | 9 | Global |
10 | 10 | GlobalSection(SolutionConfigurationPlatforms) = preSolution |
@@ -1,20 +1,20 @@ | ||
1 | -// protectprocess.c | |
1 | +?ソ// protectprocess.c | |
2 | 2 | // Copyright (C) 2011 Suguru Kawamoto |
3 | -// プロセスの保護 | |
3 | +// 繝励Ο繧サ繧ケ縺ョ菫晁ュキ | |
4 | 4 | |
5 | -// 次の中から1個のみ有効にする | |
6 | -// フック先の関数のコードを書き換える | |
7 | -// 全ての呼び出しをフック可能だが原理的に二重呼び出しに対応できない | |
5 | +// 谺。縺ョ荳ュ縺九i1蛟九?縺ソ譛牙柑縺ォ縺吶k | |
6 | +// 繝輔ャ繧ッ蜈医?髢「謨ー縺ョ繧ウ繝シ繝峨r譖ク縺肴鋤縺医k | |
7 | +// 蜈ィ縺ヲ縺ョ蜻シ縺ウ蜃コ縺励r繝輔ャ繧ッ蜿ッ閭ス縺?縺悟次逅?噪縺ォ莠碁?蜻シ縺ウ蜃コ縺励↓蟇セ蠢懊〒縺阪↑縺 | |
8 | 8 | #define USE_CODE_HOOK |
9 | -// フック先の関数のインポートアドレステーブルを書き換える | |
10 | -// 二重呼び出しが可能だが呼び出し方法によってはフックを回避される | |
9 | +// 繝輔ャ繧ッ蜈医?髢「謨ー縺ョ繧、繝ウ繝昴?繝医い繝峨Ξ繧ケ繝??繝悶Ν繧呈嶌縺肴鋤縺医k | |
10 | +// 莠碁?蜻シ縺ウ蜃コ縺励′蜿ッ閭ス縺?縺悟他縺ウ蜃コ縺玲婿豕輔↓繧医▲縺ヲ縺ッ繝輔ャ繧ッ繧貞屓驕ソ縺輔l繧 | |
11 | 11 | //#define USE_IAT_HOOK |
12 | 12 | |
13 | -// フック対象の関数名 %s | |
14 | -// フック対象の型 _%s | |
15 | -// フック対象のポインタ p_%s | |
16 | -// フック用の関数名 h_%s | |
17 | -// フック対象のコードのバックアップ c_%s | |
13 | +// 繝輔ャ繧ッ蟇セ雎。縺ョ髢「謨ー蜷 %s | |
14 | +// 繝輔ャ繧ッ蟇セ雎。縺ョ蝙 _%s | |
15 | +// 繝輔ャ繧ッ蟇セ雎。縺ョ繝昴う繝ウ繧ソ p_%s | |
16 | +// 繝輔ャ繧ッ逕ィ縺ョ髢「謨ー蜷 h_%s | |
17 | +// 繝輔ャ繧ッ蟇セ雎。縺ョ繧ウ繝シ繝峨?繝舌ャ繧ッ繧「繝?? c_%s | |
18 | 18 | |
19 | 19 | #include <tchar.h> |
20 | 20 | #include <windows.h> |
@@ -61,20 +61,20 @@ BOOL VerifyFileSignatureInCatalog(LPCWSTR Catalog, LPCWSTR Filename); | ||
61 | 61 | BOOL GetSHA1HashOfModule(LPCWSTR Filename, void* pHash); |
62 | 62 | BOOL IsModuleTrusted(LPCWSTR Filename); |
63 | 63 | |
64 | -// 変数の宣言 | |
64 | +// 螟画焚縺ョ螳」險? | |
65 | 65 | #ifdef USE_CODE_HOOK |
66 | 66 | #define HOOK_FUNCTION_VAR(name) _##name p_##name;BYTE c_##name[HOOK_JUMP_CODE_LENGTH * 2]; |
67 | 67 | #endif |
68 | 68 | #ifdef USE_IAT_HOOK |
69 | 69 | #define HOOK_FUNCTION_VAR(name) _##name p_##name; |
70 | 70 | #endif |
71 | -// 関数ポインタを取得 | |
71 | +// 髢「謨ー繝昴う繝ウ繧ソ繧貞叙蠕 | |
72 | 72 | #define GET_FUNCTION(h, name) p_##name = (_##name)GetProcAddress(h, #name) |
73 | -// フック対象のコードを置換してフックを開始 | |
73 | +// 繝輔ャ繧ッ蟇セ雎。縺ョ繧ウ繝シ繝峨r鄂ョ謠帙@縺ヲ繝輔ャ繧ッ繧帝幕蟋 | |
74 | 74 | #define SET_HOOK_FUNCTION(name) HookFunctionInCode(p_##name, h_##name, &c_##name, FALSE) |
75 | -// フック対象を呼び出す前に対象のコードを復元 | |
75 | +// 繝輔ャ繧ッ蟇セ雎。繧貞他縺ウ蜃コ縺吝燕縺ォ蟇セ雎。縺ョ繧ウ繝シ繝峨r蠕ゥ蜈 | |
76 | 76 | #define START_HOOK_FUNCTION(name) HookFunctionInCode(p_##name, h_##name, &c_##name, TRUE) |
77 | -// フック対象を呼び出した後に対象のコードを置換 | |
77 | +// 繝輔ャ繧ッ蟇セ雎。繧貞他縺ウ蜃コ縺励◆蠕後↓蟇セ雎。縺ョ繧ウ繝シ繝峨r鄂ョ謠 | |
78 | 78 | #define END_HOOK_FUNCTION(name) HookFunctionInCode(p_##name, h_##name, NULL, FALSE) |
79 | 79 | |
80 | 80 | HOOK_FUNCTION_VAR(LoadLibraryA) |
@@ -101,8 +101,8 @@ DWORD g_LockedThread[MAX_LOCKED_THREAD]; | ||
101 | 101 | WCHAR* g_pTrustedFilenameTable[MAX_TRUSTED_FILENAME_TABLE]; |
102 | 102 | BYTE g_TrustedMD5HashTable[MAX_TRUSTED_MD5_HASH_TABLE][20]; |
103 | 103 | |
104 | -// 以下フック関数 | |
105 | -// フック対象を呼び出す場合は前後でSTART_HOOK_FUNCTIONとEND_HOOK_FUNCTIONを実行する必要がある | |
104 | +// 莉・荳九ヵ繝?け髢「謨ー | |
105 | +// 繝輔ャ繧ッ蟇セ雎。繧貞他縺ウ蜃コ縺吝?エ蜷医?蜑榊セ後〒START_HOOK_FUNCTION縺ィEND_HOOK_FUNCTION繧貞ョ溯。後☆繧句ソ?ヲ√′縺ゅk | |
106 | 106 | |
107 | 107 | HMODULE WINAPI h_LoadLibraryA(LPCSTR lpLibFileName) |
108 | 108 | { |
@@ -189,7 +189,7 @@ HMODULE WINAPI h_LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFla | ||
189 | 189 | return r; |
190 | 190 | } |
191 | 191 | |
192 | -// 以下ヘルパー関数 | |
192 | +// 莉・荳九?繝ォ繝代?髢「謨ー | |
193 | 193 | |
194 | 194 | BOOL LockThreadLock() |
195 | 195 | { |
@@ -356,7 +356,7 @@ BOOL HookFunctionInIAT(void* pOriginal, void* pNew) | ||
356 | 356 | } |
357 | 357 | #endif |
358 | 358 | |
359 | -// ファイルを変更不能に設定 | |
359 | +// 繝輔ぃ繧、繝ォ繧貞、画峩荳崎?縺ォ險ュ螳 | |
360 | 360 | HANDLE LockExistingFile(LPCWSTR Filename) |
361 | 361 | { |
362 | 362 | HANDLE hResult; |
@@ -366,7 +366,7 @@ HANDLE LockExistingFile(LPCWSTR Filename) | ||
366 | 366 | return hResult; |
367 | 367 | } |
368 | 368 | |
369 | -// DLLのハッシュを検索 | |
369 | +// DLL縺ョ繝上ャ繧キ繝・繧呈、懃エ「 | |
370 | 370 | BOOL FindTrustedModuleSHA1Hash(void* pHash) |
371 | 371 | { |
372 | 372 | BOOL bResult; |
@@ -431,7 +431,7 @@ BOOL VerifyFileSignature_Function(LPCWSTR Filename) | ||
431 | 431 | return bResult; |
432 | 432 | } |
433 | 433 | |
434 | -// ファイルの署名を確認 | |
434 | +// 繝輔ぃ繧、繝ォ縺ョ鄂イ蜷阪r遒コ隱 | |
435 | 435 | BOOL VerifyFileSignature(LPCWSTR Filename) |
436 | 436 | { |
437 | 437 | BOOL bResult; |
@@ -454,7 +454,7 @@ BOOL VerifyFileSignature(LPCWSTR Filename) | ||
454 | 454 | return bResult; |
455 | 455 | } |
456 | 456 | |
457 | -// ファイルの署名をカタログファイルで確認 | |
457 | +// 繝輔ぃ繧、繝ォ縺ョ鄂イ蜷阪r繧ォ繧ソ繝ュ繧ー繝輔ぃ繧、繝ォ縺ァ遒コ隱 | |
458 | 458 | BOOL VerifyFileSignatureInCatalog(LPCWSTR Catalog, LPCWSTR Filename) |
459 | 459 | { |
460 | 460 | BOOL bResult; |
@@ -496,8 +496,8 @@ BOOL WINAPI GetSHA1HashOfModule_Function(DIGEST_HANDLE refdata, PBYTE pData, DWO | ||
496 | 496 | return CryptHashData(*(HCRYPTHASH*)refdata, pData, dwLength, 0); |
497 | 497 | } |
498 | 498 | |
499 | -// モジュールのSHA1ハッシュを取得 | |
500 | -// マニフェストファイルのfile要素のhash属性は実行可能ファイルの場合にImageGetDigestStreamで算出される | |
499 | +// 繝「繧ク繝・繝シ繝ォ縺ョSHA1繝上ャ繧キ繝・繧貞叙蠕 | |
500 | +// 繝槭ル繝輔ぉ繧ケ繝医ヵ繧。繧、繝ォ縺ョfile隕∫エ?縺ョhash螻樊?ァ縺ッ螳溯。悟庄閭ス繝輔ぃ繧、繝ォ縺ョ蝣エ蜷医↓ImageGetDigestStream縺ァ邂怜?縺輔l繧 | |
501 | 501 | BOOL GetSHA1HashOfModule(LPCWSTR Filename, void* pHash) |
502 | 502 | { |
503 | 503 | BOOL bResult; |
@@ -581,14 +581,14 @@ BOOL IsSxsModuleTrusted_Function(LPCWSTR Catalog, LPCWSTR Manifest, LPCWSTR Modu | ||
581 | 581 | return bResult; |
582 | 582 | } |
583 | 583 | |
584 | -// サイドバイサイドDLLを確認 | |
585 | -// パスは"%SystemRoot%\WinSxS"以下を想定 | |
586 | -// 以下のファイルが存在するものとする | |
587 | -// "\xxx\yyy.dll"、"\manifests\xxx.cat"、"\manifests\xxx.manifest"のセット(XPの全てのDLL、Vista以降の一部のDLL) | |
588 | -// "\xxx\yyy.dll"、"\catalogs\zzz.cat"、"\manifests\xxx.manifest"のセット(Vista以降のほとんどのDLL) | |
589 | -// 署名されたカタログファイルを用いてマニフェストファイルが改竄されていないことを確認 | |
590 | -// ハッシュ値は マニフェストファイルのfile要素のhash属性に記述されているものを用いる | |
591 | -// マニフェストファイル内にSHA1ハッシュ値の16進数表記を直接検索しているが確率的に問題なし | |
584 | +// 繧オ繧、繝峨ヰ繧、繧オ繧、繝吋LL繧堤「コ隱 | |
585 | +// 繝代せ縺ッ"%SystemRoot%\WinSxS"莉・荳九r諠ウ螳 | |
586 | +// 莉・荳九?繝輔ぃ繧、繝ォ縺悟ュ伜惠縺吶k繧ゅ?縺ィ縺吶k | |
587 | +// "\xxx\yyy.dll"縲?\manifests\xxx.cat"縲?\manifests\xxx.manifest"縺ョ繧サ繝?ヨ??P縺ョ蜈ィ縺ヲ縺ョDLL縲〃ista莉・髯阪?荳?驛ィ縺ョDLL? | |
588 | +// "\xxx\yyy.dll"縲?\catalogs\zzz.cat"縲?\manifests\xxx.manifest"縺ョ繧サ繝?ヨ??ista莉・髯阪?縺サ縺ィ繧薙←縺ョDLL? | |
589 | +// 鄂イ蜷阪&繧後◆繧ォ繧ソ繝ュ繧ー繝輔ぃ繧、繝ォ繧堤畑縺?※繝槭ル繝輔ぉ繧ケ繝医ヵ繧。繧、繝ォ縺梧隼遶?&繧後※縺?↑縺?%縺ィ繧堤「コ隱 | |
590 | +// 繝上ャ繧キ繝・蛟、縺ッ 繝槭ル繝輔ぉ繧ケ繝医ヵ繧。繧、繝ォ縺ョfile隕∫エ?縺ョhash螻樊?ァ縺ォ險倩ソー縺輔l縺ヲ縺?k繧ゅ?繧堤畑縺?k | |
591 | +// 繝槭ル繝輔ぉ繧ケ繝医ヵ繧。繧、繝ォ蜀?↓SHA1繝上ャ繧キ繝・蛟、縺ョ16騾イ謨ー陦ィ險倥r逶エ謗・讀懃エ「縺励※縺?k縺檎「コ邇?噪縺ォ蝠城。後↑縺 | |
592 | 592 | BOOL IsSxsModuleTrusted(LPCWSTR Filename) |
593 | 593 | { |
594 | 594 | BOOL bResult; |
@@ -679,7 +679,7 @@ BOOL IsSxsModuleTrusted(LPCWSTR Filename) | ||
679 | 679 | return bResult; |
680 | 680 | } |
681 | 681 | |
682 | -// DLLを確認 | |
682 | +// DLL繧堤「コ隱 | |
683 | 683 | BOOL IsModuleTrusted(LPCWSTR Filename) |
684 | 684 | { |
685 | 685 | BOOL bResult; |
@@ -712,11 +712,11 @@ BOOL IsModuleTrusted(LPCWSTR Filename) | ||
712 | 712 | return bResult; |
713 | 713 | } |
714 | 714 | |
715 | -// kernel32.dllのLoadLibraryExW相当の関数 | |
716 | -// ドキュメントが無いため詳細は不明 | |
717 | -// 一部のウィルス対策ソフト(Avast!等)がLdrLoadDllをフックしているためLdrLoadDllを書き換えるべきではない | |
718 | -// カーネルモードのコードに対しては効果なし | |
719 | -// SeDebugPrivilegeが使用可能なユーザーに対しては効果なし | |
715 | +// kernel32.dll縺ョLoadLibraryExW逶ク蠖薙?髢「謨ー | |
716 | +// 繝峨く繝・繝。繝ウ繝医′辟。縺?◆繧∬ゥウ邏ー縺ッ荳肴? | |
717 | +// 荳?驛ィ縺ョ繧ヲ繧」繝ォ繧ケ蟇セ遲悶た繝輔ヨ??vast!遲会シ峨′LdrLoadDll繧偵ヵ繝?け縺励※縺?k縺溘aLdrLoadDll繧呈嶌縺肴鋤縺医k縺ケ縺阪〒縺ッ縺ェ縺 | |
718 | +// 繧ォ繝シ繝阪Ν繝「繝シ繝峨?繧ウ繝シ繝峨↓蟇セ縺励※縺ッ蜉ケ譫懊↑縺 | |
719 | +// SeDebugPrivilege縺御スソ逕ィ蜿ッ閭ス縺ェ繝ヲ繝シ繧カ繝シ縺ォ蟇セ縺励※縺ッ蜉ケ譫懊↑縺 | |
720 | 720 | HMODULE System_LoadLibrary(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags) |
721 | 721 | { |
722 | 722 | HMODULE r = NULL; |
@@ -792,7 +792,7 @@ void SetProcessProtectionLevel(DWORD Level) | ||
792 | 792 | g_ProcessProtectionLevel = Level; |
793 | 793 | } |
794 | 794 | |
795 | -// ファイルのSHA1ハッシュを取得 | |
795 | +// 繝輔ぃ繧、繝ォ縺ョSHA1繝上ャ繧キ繝・繧貞叙蠕 | |
796 | 796 | BOOL GetSHA1HashOfFile(LPCWSTR Filename, void* pHash) |
797 | 797 | { |
798 | 798 | BOOL bResult; |
@@ -834,7 +834,7 @@ BOOL GetSHA1HashOfFile(LPCWSTR Filename, void* pHash) | ||
834 | 834 | return bResult; |
835 | 835 | } |
836 | 836 | |
837 | -// DLLのハッシュを登録 | |
837 | +// DLL縺ョ繝上ャ繧キ繝・繧堤匳骭イ | |
838 | 838 | BOOL RegisterTrustedModuleSHA1Hash(void* pHash) |
839 | 839 | { |
840 | 840 | BOOL bResult; |
@@ -860,7 +860,7 @@ BOOL RegisterTrustedModuleSHA1Hash(void* pHash) | ||
860 | 860 | return bResult; |
861 | 861 | } |
862 | 862 | |
863 | -// DLLのハッシュの登録を解除 | |
863 | +// DLL縺ョ繝上ャ繧キ繝・縺ョ逋サ骭イ繧定ァ」髯、 | |
864 | 864 | BOOL UnregisterTrustedModuleSHA1Hash(void* pHash) |
865 | 865 | { |
866 | 866 | BOOL bResult; |
@@ -881,7 +881,7 @@ BOOL UnregisterTrustedModuleSHA1Hash(void* pHash) | ||
881 | 881 | return bResult; |
882 | 882 | } |
883 | 883 | |
884 | -// 信頼できないDLLをアンロード | |
884 | +// 菫。鬆シ縺ァ縺阪↑縺ДLL繧偵い繝ウ繝ュ繝シ繝 | |
885 | 885 | BOOL UnloadUntrustedModule() |
886 | 886 | { |
887 | 887 | BOOL bResult; |
@@ -946,7 +946,7 @@ BOOL UnloadUntrustedModule() | ||
946 | 946 | return bResult; |
947 | 947 | } |
948 | 948 | |
949 | -// 関数ポインタを使用可能な状態に初期化 | |
949 | +// 髢「謨ー繝昴う繝ウ繧ソ繧剃スソ逕ィ蜿ッ閭ス縺ェ迥カ諷九↓蛻晄悄蛹 | |
950 | 950 | BOOL InitializeLoadLibraryHook() |
951 | 951 | { |
952 | 952 | BOOL bResult; |
@@ -977,8 +977,8 @@ BOOL InitializeLoadLibraryHook() | ||
977 | 977 | return bResult; |
978 | 978 | } |
979 | 979 | |
980 | -// SetWindowsHookEx対策 | |
981 | -// DLL Injectionされた場合は上のh_LoadLibrary系関数でトラップ可能 | |
980 | +// SetWindowsHookEx蟇セ遲 | |
981 | +// DLL Injection縺輔l縺溷?エ蜷医?荳翫?h_LoadLibrary邉サ髢「謨ー縺ァ繝医Λ繝??蜿ッ閭ス | |
982 | 982 | BOOL EnableLoadLibraryHook(BOOL bEnable) |
983 | 983 | { |
984 | 984 | BOOL bResult; |
@@ -1034,8 +1034,8 @@ BOOL EnableLoadLibraryHook(BOOL bEnable) | ||
1034 | 1034 | return bResult; |
1035 | 1035 | } |
1036 | 1036 | |
1037 | -// ReadProcessMemory、WriteProcessMemory、CreateRemoteThread対策 | |
1038 | -// TerminateProcessのみ許可 | |
1037 | +// ReadProcessMemory縲仝riteProcessMemory縲,reateRemoteThread蟇セ遲 | |
1038 | +// TerminateProcess縺ョ縺ソ險ア蜿ッ | |
1039 | 1039 | BOOL RestartProtectedProcess(LPCTSTR Keyword) |
1040 | 1040 | { |
1041 | 1041 | BOOL bResult; |
@@ -1,18 +1,18 @@ | ||
1 | -// protectprocess.h | |
1 | +?ソ// protectprocess.h | |
2 | 2 | // Copyright (C) 2011 Suguru Kawamoto |
3 | -// プロセスの保護 | |
3 | +// 繝励Ο繧サ繧ケ縺ョ菫晁ュキ | |
4 | 4 | |
5 | 5 | #ifndef __PROTECTPROCESS_H__ |
6 | 6 | #define __PROTECTPROCESS_H__ |
7 | 7 | |
8 | 8 | #define ENABLE_PROCESS_PROTECTION |
9 | 9 | |
10 | -// 次の中から1個のみ有効にする | |
11 | -// フック先の関数のコードを書き換える | |
12 | -// 全ての呼び出しをフック可能だが原理的に二重呼び出しに対応できない | |
10 | +// 谺。縺ョ荳ュ縺九i1蛟九?縺ソ譛牙柑縺ォ縺吶k | |
11 | +// 繝輔ャ繧ッ蜈医?髢「謨ー縺ョ繧ウ繝シ繝峨r譖ク縺肴鋤縺医k | |
12 | +// 蜈ィ縺ヲ縺ョ蜻シ縺ウ蜃コ縺励r繝輔ャ繧ッ蜿ッ閭ス縺?縺悟次逅?噪縺ォ莠碁?蜻シ縺ウ蜃コ縺励↓蟇セ蠢懊〒縺阪↑縺 | |
13 | 13 | #define USE_CODE_HOOK |
14 | -// フック先の関数のインポートアドレステーブルを書き換える | |
15 | -// 二重呼び出しが可能だが呼び出し方法によってはフックを回避される | |
14 | +// 繝輔ャ繧ッ蜈医?髢「謨ー縺ョ繧、繝ウ繝昴?繝医い繝峨Ξ繧ケ繝??繝悶Ν繧呈嶌縺肴鋤縺医k | |
15 | +// 莠碁?蜻シ縺ウ蜃コ縺励′蜿ッ閭ス縺?縺悟他縺ウ蜃コ縺玲婿豕輔↓繧医▲縺ヲ縺ッ繝輔ャ繧ッ繧貞屓驕ソ縺輔l繧 | |
16 | 16 | //#define USE_IAT_HOOK |
17 | 17 | |
18 | 18 | typedef HMODULE (WINAPI* _LoadLibraryA)(LPCSTR); |
@@ -24,7 +24,7 @@ typedef HMODULE (WINAPI* _LoadLibraryExW)(LPCWSTR, HANDLE, DWORD); | ||
24 | 24 | |
25 | 25 | #ifdef USE_IAT_HOOK |
26 | 26 | |
27 | -// 変数の宣言 | |
27 | +// 螟画焚縺ョ螳」險? | |
28 | 28 | #define EXTERN_HOOK_FUNCTION_VAR(name) extern _##name p_##name; |
29 | 29 | |
30 | 30 | #undef LoadLibraryA |
@@ -44,17 +44,17 @@ EXTERN_HOOK_FUNCTION_VAR(LoadLibraryExW) | ||
44 | 44 | |
45 | 45 | #endif |
46 | 46 | |
47 | -// ロード済みのモジュールは検査をパス | |
47 | +// 繝ュ繝シ繝画ク医∩縺ョ繝「繧ク繝・繝シ繝ォ縺ッ讀懈渊繧偵ヱ繧ケ | |
48 | 48 | #define PROCESS_PROTECTION_LOADED 0x00000001 |
49 | -// モジュールに埋め込まれたAuthenticode署名を検査 | |
49 | +// 繝「繧ク繝・繝シ繝ォ縺ォ蝓九a霎シ縺セ繧後◆Authenticode鄂イ蜷阪r讀懈渊 | |
50 | 50 | #define PROCESS_PROTECTION_BUILTIN 0x00000002 |
51 | -// サイドバイサイドのAuthenticode署名を検査 | |
51 | +// 繧オ繧、繝峨ヰ繧、繧オ繧、繝峨?Authenticode鄂イ蜷阪r讀懈渊 | |
52 | 52 | #define PROCESS_PROTECTION_SIDE_BY_SIDE 0x00000004 |
53 | -// WFPによる保護下にあるかを検査 | |
53 | +// WFP縺ォ繧医k菫晁ュキ荳九↓縺ゅk縺九r讀懈渊 | |
54 | 54 | #define PROCESS_PROTECTION_SYSTEM_FILE 0x00000008 |
55 | -// Authenticode署名の有効期限を無視 | |
55 | +// Authenticode鄂イ蜷阪?譛牙柑譛滄剞繧堤┌隕 | |
56 | 56 | #define PROCESS_PROTECTION_EXPIRED 0x00000010 |
57 | -// Authenticode署名の発行元を無視 | |
57 | +// Authenticode鄂イ蜷阪?逋コ陦悟?繧堤┌隕 | |
58 | 58 | #define PROCESS_PROTECTION_UNAUTHORIZED 0x00000020 |
59 | 59 | |
60 | 60 | #define PROCESS_PROTECTION_NONE 0 |
@@ -1,4 +1,4 @@ | ||
1 | -// dllmain.cpp : DLL アプリケーションのエントリ ポイントを定義します。 | |
1 | +?ソ// dllmain.cpp : DLL 繧「繝励Μ繧ア繝シ繧キ繝ァ繝ウ縺ョ繧ィ繝ウ繝医Μ 繝昴う繝ウ繝医r螳夂セゥ縺励∪縺吶? | |
2 | 2 | #include "stdafx.h" |
3 | 3 | |
4 | 4 | BOOL APIENTRY DllMain( HMODULE hModule, |
@@ -1,16 +1,16 @@ | ||
1 | -// stdafx.h : 標準のシステム インクルード ファイルのインクルード ファイル、または | |
2 | -// 参照回数が多く、かつあまり変更されない、プロジェクト専用のインクルード ファイル | |
3 | -// を記述します。 | |
1 | +?ソ// stdafx.h : 讓呎コ悶?繧キ繧ケ繝?Β 繧、繝ウ繧ッ繝ォ繝シ繝 繝輔ぃ繧、繝ォ縺ョ繧、繝ウ繧ッ繝ォ繝シ繝 繝輔ぃ繧、繝ォ縲√∪縺溘? | |
2 | +// 蜿ら?蝗樊焚縺悟、壹¥縲√°縺、縺ゅ∪繧雁、画峩縺輔l縺ェ縺??√?繝ュ繧ク繧ァ繧ッ繝亥ーら畑縺ョ繧、繝ウ繧ッ繝ォ繝シ繝 繝輔ぃ繧、繝ォ | |
3 | +// 繧定ィ倩ソー縺励∪縺吶? | |
4 | 4 | // |
5 | 5 | |
6 | 6 | #pragma once |
7 | 7 | |
8 | 8 | #include "targetver.h" |
9 | 9 | |
10 | -#define WIN32_LEAN_AND_MEAN // Windows ヘッダーから使用されていない部分を除外します。 | |
11 | -// Windows ヘッダー ファイル: | |
10 | +#define WIN32_LEAN_AND_MEAN // Windows 繝倥ャ繝?繝シ縺九i菴ソ逕ィ縺輔l縺ヲ縺?↑縺?Κ蛻?r髯、螟悶@縺セ縺吶? | |
11 | +// Windows 繝倥ャ繝?繝シ 繝輔ぃ繧、繝ォ: | |
12 | 12 | #include <windows.h> |
13 | 13 | |
14 | 14 | |
15 | 15 | |
16 | -// TODO: プログラムに必要な追加ヘッダーをここで参照してください。 | |
16 | +// TODO: 繝励Ο繧ー繝ゥ繝?縺ォ蠢?ヲ√↑霑ス蜉?繝倥ャ繝?繝シ繧偵%縺薙〒蜿ら?縺励※縺上□縺輔>縲 |
@@ -1,24 +1,24 @@ | ||
1 | -#pragma once | |
1 | +?ソ#pragma once | |
2 | 2 | |
3 | -// 以下のマクロは、最低限必要なプラットフォームを定義します。最低限必要なプラットフォームとは、 | |
4 | -// アプリケーションを実行するために必要な機能を備えた最も古いバージョンの Windows や Internet Explorer など | |
5 | -// をいいます。これらのマクロは、指定したバージョンと、それ以前のバージョンのプラットフォーム上で利用できるすべての機能を有効にすることによって | |
6 | -// 動作します。 | |
3 | +// 莉・荳九?繝槭け繝ュ縺ッ縲∵怙菴朱剞蠢?ヲ√↑繝励Λ繝?ヨ繝輔か繝シ繝?繧貞ョ夂セゥ縺励∪縺吶?よ怙菴朱剞蠢?ヲ√↑繝励Λ繝?ヨ繝輔か繝シ繝?縺ィ縺ッ縲 | |
4 | +// 繧「繝励Μ繧ア繝シ繧キ繝ァ繝ウ繧貞ョ溯。後☆繧九◆繧√↓蠢?ヲ√↑讖溯?繧貞y縺医◆譛?繧ょ商縺?ヰ繝シ繧ク繝ァ繝ウ縺ョ Windows 繧 Internet Explorer 縺ェ縺ゥ | |
5 | +// 繧偵>縺?∪縺吶?ゅ%繧後i縺ョ繝槭け繝ュ縺ッ縲∵欠螳壹@縺溘ヰ繝シ繧ク繝ァ繝ウ縺ィ縲√◎繧御サ・蜑阪?繝舌?繧ク繝ァ繝ウ縺ョ繝励Λ繝?ヨ繝輔か繝シ繝?荳翫〒蛻ゥ逕ィ縺ァ縺阪k縺吶∋縺ヲ縺ョ讖溯?繧呈怏蜉ケ縺ォ縺吶k縺薙→縺ォ繧医▲縺ヲ | |
6 | +// 蜍穂ス懊@縺セ縺吶? | |
7 | 7 | |
8 | -// 下で指定された定義の前に対象プラットフォームを指定しなければならない場合、以下の定義を変更してください。 | |
9 | -// 異なるプラットフォームに対応する値に関する最新情報については、MSDN を参照してください。 | |
10 | -#ifndef WINVER // 最低限必要なプラットフォームが Windows Vista であることを指定します。 | |
11 | -#define WINVER 0x0600 // これを Windows の他のバージョン向けに適切な値に変更してください。 | |
8 | +// 荳九〒謖?ョ壹&繧後◆螳夂セゥ縺ョ蜑阪↓蟇セ雎。繝励Λ繝?ヨ繝輔か繝シ繝?繧呈欠螳壹@縺ェ縺代l縺ー縺ェ繧峨↑縺??エ蜷医?∽サ・荳九?螳夂セゥ繧貞、画峩縺励※縺上□縺輔>縲 | |
9 | +// 逡ー縺ェ繧九?繝ゥ繝?ヨ繝輔か繝シ繝?縺ォ蟇セ蠢懊☆繧句?、縺ォ髢「縺吶k譛?譁ー諠??ア縺ォ縺、縺?※縺ッ縲`SDN 繧貞盾辣ァ縺励※縺上□縺輔>縲 | |
10 | +#ifndef WINVER // 譛?菴朱剞蠢?ヲ√↑繝励Λ繝?ヨ繝輔か繝シ繝?縺 Windows Vista 縺ァ縺ゅk縺薙→繧呈欠螳壹@縺セ縺吶? | |
11 | +#define WINVER 0x0600 // 縺薙l繧 Windows 縺ョ莉悶?繝舌?繧ク繝ァ繝ウ蜷代¢縺ォ驕ゥ蛻?↑蛟、縺ォ螟画峩縺励※縺上□縺輔>縲 | |
12 | 12 | #endif |
13 | 13 | |
14 | -#ifndef _WIN32_WINNT // 最低限必要なプラットフォームが Windows Vista であることを指定します。 | |
15 | -#define _WIN32_WINNT 0x0600 // これを Windows の他のバージョン向けに適切な値に変更してください。 | |
14 | +#ifndef _WIN32_WINNT // 譛?菴朱剞蠢?ヲ√↑繝励Λ繝?ヨ繝輔か繝シ繝?縺 Windows Vista 縺ァ縺ゅk縺薙→繧呈欠螳壹@縺セ縺吶? | |
15 | +#define _WIN32_WINNT 0x0600 // 縺薙l繧 Windows 縺ョ莉悶?繝舌?繧ク繝ァ繝ウ蜷代¢縺ォ驕ゥ蛻?↑蛟、縺ォ螟画峩縺励※縺上□縺輔>縲 | |
16 | 16 | #endif |
17 | 17 | |
18 | -#ifndef _WIN32_WINDOWS // 最低限必要なプラットフォームが Windows 98 であることを指定します。 | |
19 | -#define _WIN32_WINDOWS 0x0410 // これを Windows Me またはそれ以降のバージョン向けに適切な値に変更してください。 | |
18 | +#ifndef _WIN32_WINDOWS // 譛?菴朱剞蠢?ヲ√↑繝励Λ繝?ヨ繝輔か繝シ繝?縺 Windows 98 縺ァ縺ゅk縺薙→繧呈欠螳壹@縺セ縺吶? | |
19 | +#define _WIN32_WINDOWS 0x0410 // 縺薙l繧 Windows Me 縺セ縺溘?縺昴l莉・髯阪?繝舌?繧ク繝ァ繝ウ蜷代¢縺ォ驕ゥ蛻?↑蛟、縺ォ螟画峩縺励※縺上□縺輔>縲 | |
20 | 20 | #endif |
21 | 21 | |
22 | -#ifndef _WIN32_IE // 最低限必要なプラットフォームが Internet Explorer 7.0 であることを指定します。 | |
23 | -#define _WIN32_IE 0x0700 // これを IE の他のバージョン向けに適切な値に変更してください。 | |
22 | +#ifndef _WIN32_IE // 譛?菴朱剞蠢?ヲ√↑繝励Λ繝?ヨ繝輔か繝シ繝?縺 Internet Explorer 7.0 縺ァ縺ゅk縺薙→繧呈欠螳壹@縺セ縺吶? | |
23 | +#define _WIN32_IE 0x0700 // 縺薙l繧 IE 縺ョ莉悶?繝舌?繧ク繝ァ繝ウ蜷代¢縺ォ驕ゥ蛻?↑蛟、縺ォ螟画峩縺励※縺上□縺輔>縲 | |
24 | 24 | #endif |
@@ -995,6 +995,9 @@ int do_recv(SOCKET s, char *buf, int len, int flags, int *TimeOutErr, int *Cance | ||
995 | 995 | Sleep(1); |
996 | 996 | if(BackgrndMessageProc() == YES) |
997 | 997 | break; |
998 | + // 何故か一部のホストとWindows 2000の組み合わせで通信できないバグに暫定対応 | |
999 | + if(AskAsyncDone(s, &Error, FD_CLOSE_BIT) == YES) | |
1000 | + break; | |
998 | 1001 | // FTPS対応 |
999 | 1002 | // 受信確認をバイパスしたためここでタイムアウトの確認 |
1000 | 1003 | if(BackgrndMessageProc() == YES) |
@@ -1105,6 +1108,9 @@ int do_send(SOCKET s, const char *buf, int len, int flags, int *TimeOutErr, int | ||
1105 | 1108 | Sleep(1); |
1106 | 1109 | if(BackgrndMessageProc() == YES) |
1107 | 1110 | break; |
1111 | + // 何故か一部のホストとWindows 2000の組み合わせで通信できないバグに暫定対応 | |
1112 | + if(AskAsyncDone(s, &Error, FD_CLOSE_BIT) == YES) | |
1113 | + break; | |
1108 | 1114 | // FTPS対応 |
1109 | 1115 | // 送信バッファ確認をバイパスしたためここでタイムアウトの確認 |
1110 | 1116 | if(BackgrndMessageProc() == YES) |