不正DLL群がsetup.exeと同じフォルダに存在する場合のFastCopyインストーラ実行例 (配置したDLLの一覧) 大まかな流れ)インストーラ起動 → コピー&ショートカット作成 → FastCopy起動 1) 起動直後まで この時、起動完了までの間、不正DLLは読まれますが、DLLMainが呼ばれることなく 直ちにアンロードされています。 (MS署名がないDLLの多くはこういった防御が行われている様子。しかし、下記の のような一部のDLLはそういった防御が行われないようです) 2) コピー&ショートカット作成まで ショートカット作成用COM I/F であるIShellLink を呼び出し、そのメンバである SetPath関数を呼び出すと、呼び出しから返る前に、不正な"linkinfo.dll" が 読み込まれ、そのDLLMainが実行されました。 3) FastCopy起動 FastCopyを起動するために、ShellExecuteを呼び出すと、呼び出しから返る前に、 不正な"urlmon.dll", "edputil.dll"等が読み込まれ、DLLMainが実行されました。 (なお、ShellExecuteの引数に指定するパス指定の有無とは無関係) 1.起動開始 (いくつか、exeの置かれたフォルダから不正DLLが読まれていますが、DllMain が 実行されることなく、即アンロードされています。おそらくMS署名がないため) 'setup.exe' (Win32): 'C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\setup.exe' が読み込まれました。シンボルが読み込まれました。 'setup.exe' (Win32): 'C:\Windows\System32\ntdll.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\kernel32.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\KernelBase.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\user32.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\win32u.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\gdi32.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\gdi32full.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\msvcp_win.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\ucrtbase.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\advapi32.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\msvcrt.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\sechost.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\rpcrt4.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\shell32.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\cfgmgr32.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\SHCore.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\combase.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\bcryptprimitives.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\windows.storage.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\shlwapi.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\kernel.appcore.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\powrprof.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\profapi.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\ole32.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.15063.483_none_26002d27e7c744a2\comctl32.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\imm32.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\uxtheme.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\msctf.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\oleaut32.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\dwmapi.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\TextInputFramework.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\CoreUIComponents.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\CoreMessaging.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\ntmarta.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\WinTypes.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\usermgrcli.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\clbcatq.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\IME\IMEJP\IMJPTIP.DLL' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\oleacc.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\iertutil.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\version.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\propsys.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\IME\IMEJP\IMJPAPI.DLL' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\crypt32.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\msasn1.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\ncrypt.dll' が読み込まれました。シンボルが読み込まれました。 'setup.exe' (Win32): 'C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\ncrypt.dll' がアンロードされました 'setup.exe' (Win32): 'C:\Windows\System32\msasn1.dll' がアンロードされました 'setup.exe' (Win32): 'C:\Windows\System32\crypt32.dll' がアンロードされました 'setup.exe' (Win32): 'C:\Windows\System32\IME\IMEJP\IMJPAPI.DLL' がアンロードされました 'setup.exe' (Win32): 'C:\Windows\System32\policymanager.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\msvcp110_win.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\IME\SHARED\IMETIP.DLL' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\dui70.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\IME\SHARED\imecfm.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\wer.dll' が読み込まれました。シンボルが読み込まれました。 'setup.exe' (Win32): 'C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\wer.dll' がアンロードされました 'setup.exe' (Win32): 'C:\Windows\System32\IME\SHARED\imecfm.dll' がアンロードされました 'setup.exe' (Win32): 'C:\Windows\System32\IME\IMEJP\IMJPAPI.DLL' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\crypt32.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\msasn1.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\ncrypt.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\bcrypt.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\ntasn1.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\IME\SHARED\IMJKAPI.DLL' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\IME\IMEJP\IMJPPRED.DLL' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\IME\SHARED\imecfm.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\wer.dll' が読み込まれました。シンボルが読み込まれました。 'setup.exe' (Win32): 'C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\wer.dll' がアンロードされました 'setup.exe' (Win32): 'C:\Windows\System32\IME\SHARED\imecfm.dll' がアンロードされました 'setup.exe' (Win32): 'C:\Windows\System32\IME\SHARED\IMESEARCHDLL.DLL' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 2.起動終了、開始ボタン押下(ショートカット作成用に IShellLink 呼び出し) 'setup.exe' (Win32): 'C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\linkinfo.dll' が読み込まれました。シンボルが読み込まれました。 (不正DLLによるOutputDebugString出力) 0000.00: 1784: 1: C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\LINKINFO.dll (不正DLLによるOutputDebugString出力) 0000.01: 1784: 2: C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\LINKINFO.dll 3.セットアップ完了(FastCopyをShellExecuteで起動) 'setup.exe' (Win32): 'C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\edputil.dll' が読み込まれました。シンボルが読み込まれました。 (不正DLLによるOutputDebugString出力(*)) 0000.00: 1784: 1: C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\edputil.dll (不正DLLによるOutputDebugString出力(*)) 0045.40: 1784: 2: C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\LINKINFO.dll (不正DLLによるOutputDebugString出力(*)) 0000.00: 1784: 2: C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\edputil.dll 'setup.exe' (Win32): 'C:\Windows\System32\Windows.StateRepository.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\StateRepository.Core.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\urlmon.dll' が読み込まれました。シンボルが読み込まれました。 (不正DLLによるOutputDebugString出力(*)) 0000.00: 1784: 1: C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\urlmon.dll 'setup.exe' (Win32): 'C:\Windows\System32\urlmon.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\cryptbase.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\msIso.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\sspicli.dll' が読み込まれました。含める/除外する設定により、読み込みは無効になっています。 'setup.exe' (Win32): 'C:\Windows\System32\IME\IMEJP\IMJPPRED.DLL' がアンロードされました 'setup.exe' (Win32): 'C:\Windows\System32\IME\SHARED\IMJKAPI.DLL' がアンロードされました 'setup.exe' (Win32): 'C:\Windows\System32\dui70.dll' がアンロードされました 'setup.exe' (Win32): 'C:\Windows\System32\IME\SHARED\IMETIP.DLL' がアンロードされました 'setup.exe' (Win32): 'C:\Windows\System32\oleacc.dll' がアンロードされました 'setup.exe' (Win32): 'C:\Windows\System32\IME\IMEJP\IMJPTIP.DLL' がアンロードされました (不正DLLによるOutputDebugString出力(*)) 0000.01: 1784: 0: C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\urlmon.dll (不正DLLによるOutputDebugString出力(*)) 0000.03: 1784: 0: C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\edputil.dll (不正DLLによるOutputDebugString出力(*)) 0045.43: 1784: 0: C:\Users\shirouzu\Desktop\FastCopy330r3src\x64\Release\LINKINFO.dll プログラム '[1784] setup.exe' はコード 0 (0x0) で終了しました。 (*) 今回用意した不正DLLでは、DllMainが呼び出されると、OutputDebugStringに自分自身のDLL名を出力するようにしています。