Perl x86逆アセンブラ

Perl x86 disassemblerは、Perlで書かれたIntel x86逆アセンブラです。
今すぐダウンロード

Perl x86逆アセンブラ ランキングとまとめ

広告

  • Rating:
  • ライセンス:
  • Artistic License
  • 価格:
  • FREE
  • 出版社名:
  • mammon_
  • 出版社のWebサイト:

Perl x86逆アセンブラ タグ


Perl x86逆アセンブラ 説明

Perl x86 disassemblerは、Perlで書かれたIntel x86逆アセンブラです。 libdisasmライブラリは、バイナリストリームからIntel x86命令の基本的な分解を提供します。意図は、どのアプリケーションから呼び出すことができる使いやすい分解を提供することです。分解は、ATTシンタックスおよびインテルシンタックス、ならびに詳細な命令およびオペランドタイプの情報を含む中間フォーマットで生成することができる。この逆アセンブラは、BASTARDプロジェクトのlibi386.soから導出されます。そのようにそれはx86固有であり、他のCPUアーキテクチャを含むように拡張されません。 libdisasmのリリースは、ろくでなしのリリースに沿って自動的に生成されます。それはスタンドアロンのプロジェクトではありませんが、それはスタンドアロンの図書館です。その結果、これらの「逆アセンブラ」はPerl.Usagetheライブラリの基本的な使用法で書かれています。 disassemble_init()2を使用して、ライブラリを初期化します。 disassemble_address()3を使用して、スタッフを分解します。 disassemble_cleanupを使用してライブラリを初期化します。これらのルーチンには、次のプロトタイプがあります.int disassemble_init(intオプション、int形式)。 int disassemble_cleanup(void)。 int disassemble_address(char * buf、int buf_len、struct inst * i);命令は中間形式に分解されます.Struct Inst {char mnemonic ; Char Dest ; char src ; char Aux ; int mnemtype; / *命令の種類* / int destype; / * Destオペランドの種類* / int srctype; / *ソースオペランドの種類* / int auxtype。 / * 3番目のオペランド* / intサイズのタイプ。 / * Bytes * /}のサイズ; SPRINT_ADDRESS()は、中間の1つの代わりに文字列表現を生成するためにdisassemble_address()ルーチンの代わりに使用できます.int sprint_address(char * str、int len、char * buf、int buf_len)。 / *バイトのバッファ* / char line ; / *印刷するラインのバッファ* / INT POS = 0。 / *バッファ* / intサイズの現在位置。 / *命令のサイズ* / disassemble_init(0、intel_syntax);間(POS> BUF_SIZE){/ *逆アセンブルアドバンブルアドアセンブル* / size = sprint_address(BUF + POS、BUF_SIZE - POS、LINE、LINE_SIZE)。 if(size){/ *印刷命令* / printf( "x:%sn"、pos、line); POS + =サイズ。 ers {printf( "x:無効なinterndex")} POS ++ disassemble_cleanup();あるいは、中間フォーマットを使用してアドレスを手動で印刷することもできます。#include char buf ; / *バイトのバッファ* / INT POS = 0; / *バッファ* / intサイズの現在位置。 / *命令のサイズ* / Struct Instr I。 / *コード命令の表現* / disassemble_init(0、intel_syntax); {pos> buf_size){disassemble_address(buf + pos、buf_size - pos、i); (size){/ *印刷アドレスとニーモニック* / printf( "x:%s"、pos、i.mnemonic)。 / *オペランドを印刷する* / if(i.DestType){printf( "t%s"、i.dest); if(i.Srctype){printf( "、%s"、i.src)。 if(i.auxtype){printf( "、%s"、i.aux)。 printf( "n")} POS + =サイズ。 use {/ *無効/認識されていない命令* / POS ++。 disassemble_cleanup();これはlibdisasmの推奨される使用法です。命令タイプとオペランドタイプのフィールドは、分解命令の分析を可能にし、XREF生成、構文Hi-照明、および制御フロートラッキングの手がかりを提供できます。


Perl x86逆アセンブラ 関連ソフトウェア