ASM

ハードウェアブレークポイントを使う

コードを実際に書いたことがなかったので書いてみた。デバッグレジスタは本来特権レベルでなければ操作できないが、Windowsの場合はSetThreadContext系APIを使って設定することができる。 ハードウェアブレークポイントはソフトウェアブレーク(int 3)ほど…

Visual Studioでasmファイルを使う

x64ではインラインアセンブラが使えないので生のMASMを書く必要がある。 asmファイルをプロジェクト内に追加する 追加したasmファイルのプロパティを開き、「カスタム ビルド ステップ」>「全般」の 「コマンドライン」に ml64 /c /Cx /W0 /Fo$(IntDir)\$(I…

swapgs命令

x64で追加された命令のひとつにswapgs(Swap GS Base Register)がある。この命令は、 現在の GS ベースレジスタ値を、MSR アドレス C0000102H(MSR_KERNELGSbase)に格納された値と交換する。 ――インテル® エクステンデッド・メモリ 64 テクノロジ・ソフトウ…

x86命令のバイトコードを理解する

ASM

ある命令をバイト表現でハンドアセンブルしたいとき、Intelのオペコード表の見方を理解していないと非常に苦労する。しかし、Intelのマニュアルはとっつきづらい*1ところがあり、理解するのに時間がかかるので、ヒントとしてまとめていく。ちなみに、小数点…

逆アセンブラライブラリ

Win32デバッグ(9)・・・逆アセンブラにまとめてありました。逆アセンブラは特にシステムコールを使うようなものではないので、カーネルモードのコードにも簡単に組み込めます。 個人的にはBSD相当のライセンスかつ軽量なHacker Disassembler Engineで十分だ…

バイナリ読書会行ってました

ASM

そのまま連休で帰省しちゃったから書いてなかったけどね。 会の目的はPEとかELFとか、プログラムとしてのアセンブリを読むこと。要するにリバースエンジニアリング技術だね。ポイントは、平日なので私の勤務地からだと間に合わないという点。 というのはさて…

積ん読

なぜか変換できる@Ubuntu 9.04。 ここ1ヶ月ぐらいで技術書だけでもかなり溜まってきた。あと2冊ぐらい増える雰囲気なのでどう考えても赤字;) それにしてもこの冷やし中華、ノリノリである。

GsDriverEntryを読む

普通にドライバをビルドすると、ドライバモジュールのエントリーポイントはDriverEntryではなく、暗黙的にGsDriverEntryになる。この関数はその名前の通りVCコンパイラの /GS オプションに関係する。 以下は、そのGsDriverEntry関数のアセンブルコードを読ん…

Intel VT-xを使ってみた

id:rootkitの人に会うのに手ぶらで行けるわけがない! というわけで(?)私もvmxcpuをリファクタリングして、Intel VTを使った仮想マシンモニタのコア部分を書いてみました。独自性のないデモとソース(動作環境:私のPC!)です。 嬉しいのでエントリーに…

Intel VT-xを使ってみた(経過)

Intel VT-xを利用して基礎的なVMMを書いてみた日記。アセンブラの話題でも、Windowsの話題でもないのでカテゴリ選択が非常に微妙(笑) 02/27 久しぶりにVT勉強してみる気になってきたから、vmxcpuを読んだり弄ったりしはじめている。

for each 文

VC8からの拡張機能で生のC++においてもfor each文が使える。VC8まではコンテナに対してのみだったが、9からは配列に対しても可。知らなかった。 // in vc9 #include <iostream> template<typename T, unsigned long N> inline void for_each_print(T (&array)[N]) { for each (const T& n in array) </typename></iostream>…

あわせて読んでみた 15-25

ASM

引き続きWisdomSoftさんのC言語入門をアセンブルコードで見ていく。C言語のソース表示を隠しているので、もはやどのソースについて言及しているのか第三者にはわからないがキニシナイ。今回は配列とポインタ。ポインタはC言語の概念が理解できてれば、アセン…

あわせて読んでみた 1-14

ASM

WisdomSoftさんのC言語入門をアセンブルコードの視点で見ていく。恐らく備忘録ではないかと思われる。期待してはいけない。 ということで、とりあえず1〜14までやってみた。制御構文とプリミティブな変数操作の内容。次は配列・ポインタ・関数・構造体等の内…

あわせて読みたい

ASM

IDA Pro 4.9 Freeware Versionを導入して、リリースビルドされた自作GUI(x86)アプリのアセンブラを眺めているが、なにもかも初めてなので面白い。たとえば、関数がインライン化されているのが判ったり、ラベルの多いswitchがcmp/jzの連続じゃなかったり、sta…

アセンブラめも(x64)

昨日の続き。今度はx64用にビルドしたものを追いかけてみる。スタックまわりがわからん。

アセンブラめも

ASM

C言語とアセンブラの対応を理解するには最適化の為のアセンブラ入門がとってもわかりやすい。昼休みに読める。とりあえず頭を整理するためにちょっと書く。アセンブラがちょっとずつ読めるようになってきて楽しい。