execution trace viewer
1.0.0
执行跟踪查看器是用于查看,编辑和分析执行跟踪的应用程序。它最初是用于逆向工程混淆的代码的,但可用于分析任何类型的执行跟踪。

git clone https://github.com/teemu-l/execution-trace-viewer
pip install pyqt5 yapsy qdarkstyle capstone
python tv.py支持以下文件格式:
.tvt-默认文件格式。从X64DBG跟踪格式开发。 3与X64DBG格式的差异:添加了评论,灾难和书签。
.trace32 / .trace64 -x64dbg文件格式。仅阅读支持。加载X64DBG跟踪很慢,因为需要拆卸代码。
JSON-可以从JSON文本文件中保存并加载痕迹。
TRACE文件夹包含一个示例跟踪。它是混淆的代码的〜11K线(通过VMProtect3)。所有处理程序均已分解并添加到书签表中。
执行跟踪查看器可以通过Python3插件扩展。插件是从插件菜单或从跟踪表上的右键单击菜单启动的。查看示例插件和core/api.py以获取更多信息。
更多插件:
示例过滤器:
| 筛选 | 描述 |
|---|---|
| disasm = push | pop | 障碍包含单词推或弹出(推送,pushfd,pop等) |
| 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 =阅读 | 显示读取内存 |
| iregex =垃圾|解密 | 逆时机,将带有“垃圾”或“解密”的行被过滤掉 |
| 评论=解密 | 通过评论过滤 |
可以将多个过滤器连接在一起:
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
)跟踪字段:灾难,regs,mem,mem_addr,mem_value,评论,任何
障碍字段支持多个关键字:“ XOR/SHL/SHR”。 MEM字段检查MEM访问中的所有三个字段(访问,ADDR和值)。整数必须在十六进制中给出。
通过编辑prefs.py可以禁用黑暗主题:
USE_DARK_THEME = False 麻省理工学院
由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 ]])))