ExecMLは、C#で書かれたx64機械語命令を実行するプログラムです。ただし、機械語命令は、ハンドアッセンブルして16進数としてコマンドライン引数として与える必要があります。
マイナビニュースの連載記事「窓辺の小石」の「第123回 創世記機械語」に記事を書きました。
プログラムのダウンロード
使い方
簡単な使い方は、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 件のコメント:
コメントを投稿