Perl勉強
とりあえずWinDbg dtコマンド出力の基本形はこんな感じで処理すればいいのかな。型名は変換テーブル持たないとダメそうだけどね。
$dt = <<EOT nt!_UNICODE_STRING +0x000 Length : Uint2B +0x002 MaximumLength : Uint2B +0x004 Buffer : Ptr32 Uint2B EOT ; $dt =~ /(\w+)!_(\w+)\n/; $module_name = $1; $symbol_name = $2; print "typedef struct /*" . $module_name . "!*/" . "_" . $symbol_name . "\n"; print "{" . "\n"; while ($' =~ /.*(\+0x\w\w\w) (\w+).*: (\w+)\n?/) { printf(" %-20s%-20s// %s\n", $3, ($2 . ";"), $1); } print "} " . $symbol_name . ", *P" . $symbol_name . ";\n";
codepad使うと環境を整えなくてよいのが楽ですね。