実行トレースビューアーは、実行トレースを表示、編集、分析するためのアプリケーションです。もともとはリバースエンジニアリングの難読化コード用に作られていましたが、あらゆる種類の実行トレースを分析するために使用できます。

git clone https://github.com/teemu-l/execution-trace-viewer
pip install pyqt5 yapsy qdarkstyle capstone
python tv.py次のファイル形式がサポートされています。
.tvt-デフォルトのファイル形式。 x64dbgトレース形式から開発されました。 X64DBG形式の3つの違い:コメント、障害、ブックマークが追加されました。
.trace32 / .trace64 -x64dbgファイル形式。読書のみがサポートされました。コードを分解する必要があるため、x64dbgトレースをロードするのは遅いです。
JSON -Tracesは、JSONテキストファイルから保存およびロードできます。
Tracesフォルダーには、1つのサンプルトレースが含まれています。これは、難読化されたコードの〜11k行です(vmprotect3による)。すべてのハンドラーが分解され、ブックマークテーブルに追加されます。
実行トレースビューアーは、Python3プラグインによって拡張できます。プラグインは、プラグインメニューから、またはTraceテーブルの右クリックメニューから起動します。詳細については、サンプルプラグインとcore/api.pyを確認してください。
その他のプラグイン:
フィルターの例:
| フィルター | 説明 |
|---|---|
| disasm = push | pop | Disasmにはワードプッシュまたはポップ(プッシュ、プッシュFD、ポップなど)が含まれています |
| reg_eax = 0x1337 | EAXが0x1337の行を表示します |
| reg_any = 0x1337 | REG値は0x1337です |
| mem_value = 0x1337 | メモリに値0x1337を読み書きします |
| mem_read_value = 0x1337 | メモリから値0x1337を読み取ります |
| mem_addr = 0x4f20 | メモリアドレス0x4f20から読んだり書いたりします |
| mem_read_addr = 0x40400 | メモリアドレス0x40400からお読みください |
| mem_write_addr = 0x40400 | メモリアドレス0x40400に書き込みます |
| opcodes = c704 | OpCodesでフィルター |
| 行= 20-50 | 行20-50のみを表示します |
| regex = 0x40?00 | 行に敏感なregex列全体の検索(コメントを含む) |
| regex = read | メモリを読み取るinctructionsを表示します |
| iRegex = junk | decrypt | 逆の正規表現、「ジャンク」または「復号」を備えた行が除外されます |
| コメント= Decrypt | コメントでフィルタリングします |
複数のフィルターを結合することが可能です:
disasm=xor/reg_any=0x1337 ; show all xor instructions where atleast one register value is 0x1337
より複雑なフィルタリングの場合、フィルタープラグインを作成し、API.SET_FILTERED_TRACE()を使用して結果リストを保存できます。次に、api.show_filtered_trace()を呼び出してトレースを表示します。
指定されたキーワード/値がトレースに含まれる次または前の行を見つけます。
以前のメモリを見つける:
from core . filter_and_find import TraceField
current_row = 500
next_row = find (
trace = trace_data . trace ,
field = TraceField . MEM ,
keyword = 'WRITE' ,
start_row = current_row ,
direction = - 1
)トレースフィールド:disasm、regs、mem、mem_addr、mem_value、comment、any
Disasm Fieldは、「XOR/SHL/SHR」という複数のキーワードをサポートしています。 MEMフィールドは、MEM Access(アクセス、ADDR、値)の3つのフィールドすべてをチェックします。整数は16進数で与えなければなりません。
Dark Themeは、Prefs.pyを編集して無効にすることができます:
USE_DARK_THEME = False mit
Teemu Laurilaによって開発されました。
接触:
print ( '' . join ( map ( chr ,[ k ^ 86 for k in [ 34 , 51 , 51 , 59 , 35 , 58 , 55 , 22 , 38 , 36 , 57 , 34 , 57 , 56 , 59 , 55 , 63 , 58 , 120 , 53 , 57 , 59 ]])))