ExecML

 ExecMLは、C#で書かれたx64機械語命令を実行するプログラムです。ただし、機械語命令は、ハンドアッセンブルして16進数としてコマンドライン引数として与える必要があります。

マイナビニュースの連載記事「窓辺の小石」の「第123回 創世記機械語」に記事を書きました。

プログラムのダウンロード

ExecML v1.0

使い方

簡単な使い方は、GitHubのページをご覧ください。

ExecMLでは、コマンドラインの引数の先頭2つがRCX、RDXに入り、機械語プログラムが呼び出されます。RAXに入れた値が、機械語プログラムの戻り値になります。

ExecML.exe␣<rcxの値>␣<rdxの値>␣<Byte-Hex>␣<Byte-Hex>␣<Byte-Hex>……

 具体的には、RCXに0102030405060708、RDXに8070605040302010を入れて、機械語「48 89 c8 48 01 d0 c3」を実行。以下のようになります。

ExecML.exe 0102030405060708 8070605040302010 48 89 c8 48 01 d0 c3
8172635445362718

機械語は、RCX(最初の引数)をRAXに入れ、RDXとRAXを加算し、結果はRAXに入るのでそのまま戻ってきます。

48 89 c8    mov    %rcx,%rax
48 01 d0    add    %rdx,%rax
c3          ret

0 件のコメント:

コメントを投稿