2008-08-01から1ヶ月間の記事一覧

64bit プロセス判定

IsWow64Process はWOW64か否かしか見ないため、次のような結果を返す。 OS 32 64 64 Process 32 32 64 結果 FALSE TRUE FALSE よって実行環境をGetNativeSystemInfo*1で調べて、64bitだった場合IsWow64Processを使う。 *1:GetSystemInfoはWOW64上ではx86を返…

Injection 実装メモ

32bit環境だけを想定した場合との違いについてメモ(例によって2008環境のことを書いているので、それ以外、特にXP/2003だと違う可能性あり)。32bitにおけるDLL注入は別のプロセスにコードを割り込ませる3つの方法の「2. CreateRemoteThread+LoadLibraryの…

がんばってたけど飽きた

MPCとか。

64bit対応 HookInjection

別プロセスにDLLをロードさせたりアンロードさせたり、メッセージフック用のスレッドを立てたりするCUIツールです。よければどうぞー(HookInjection.cab / Readme)。

LOAD_LIBRARY_AS_DATAFILEなハンドルからフルパスを得る

LoadLibraryEx等を使い、データとしてプロセスにマッピングされたファイルのフルパスを得るコード。Process Explorerが[Type = Data]なモジュールのフルパスを表示していることに今更ながら気づいたのでやってみた。実際はGetMappedFileNameの実行と、その戻…

マルチコア環境でのコンパイル速度改善

Faith and Brave - C++で遊ぼう - 並列コンパイルを見て。clに/MPオプションを渡すと、CPU数を活かした並列ビルドを行う。すばらしい。このエントリー見つけた瞬間、VS2008の有償版を買おうかと思い悩んだが、VS2005 SP1で試したところ問題なく機能すること…

GetProcAddressの怪

たぶん、環境に依存するけど、以下のソースをVS2005でx86用にコンパイルして実行する。 int main() { HMODULE k = ::GetModuleHandle(_T("kernel32.dll")); FARPROC f = ::GetProcAddress(k, "GetProcAddress"); std::cout << std::hex; std::cout << k << s…

モジュールとかのメモ

#pragma comment(linker, "/subsystem:windows") extern "C" void __cdecl WinMainCRTStartup() { while (1); } こんなソースをビルドして実行する。APIをひとつもインポートしていないので、DLLはマッピングされない。わけがない。ntdll.dllがなかったらど…

地中海・猫の旅6500キロ

CATS OF THE MEDITERRANEAN SEA 先月ぐらいに、Win2008調査のためヨドバシとかに行ってて、気づいたら買ってた。良い。

64bit対応 TrayExpand

x64に対応したTrayExpandです。よければどうぞー(TrayExpand.cab - Readme)。 このアプリは本家TrayExpand ver1.12b1を改造したものです。Vista/Win2008で動作するようになっていますが、機能的な追加・削除はありません。 #2008/08/12追記 起動時に取得で…

タスクバーや詳細表示に曜日を表示

タスクトレイの時計に曜日を表示する 詳細表示に曜日を表示させたり、タスクバーに日付を表示させる方法。TClockとか弄っておいて言うのもなんだが、これは素晴らしいね。

Win2008のMUI

ひょんなことで2008もVistaと同様にMUI(多言語化)が可能であることがわかった。 Windows Server 2008 Multilingual User Interface Language Packsから必要な言語パック(isoファイル)をダウンロード ダウンロードしたisoをマウント コントロールパネルの…