Execution Trace Viewer는 실행 추적을보고, 편집 및 분석하기위한 응용 프로그램입니다. 원래 리버스 엔지니어링 난독 화 코드를 위해 만들어졌지만 모든 종류의 실행 추적을 분석하는 데 사용할 수 있습니다.

git clone https://github.com/teemu-l/execution-trace-viewer
pip install pyqt5 yapsy qdarkstyle capstone
python tv.py다음 파일 형식이 지원됩니다.
.tvt- 기본 파일 형식. x64dbg 트레이스 형식에서 개발되었습니다. 3 x64dbg 형식의 차이점 : 주석, disasm 및 북마크가 추가되었습니다.
.trace32 / .trace64 -x64dbg 파일 형식. 지원 된 독서 만 읽습니다. 코드를 분해해야하므로 x64dbg 트레이스로드 속도가 느립니다.
JSON- 트레이스는 JSON 텍스트 파일에서 저장 및로드 할 수 있습니다.
추적 폴더에는 하나의 샘플 추적이 포함되어 있습니다. ~ 11k의 난독 화 코드 (vmprotect3에 의해)입니다. 모든 핸들러는 분해되어 북마크 테이블에 추가됩니다.
Python3 플러그인으로 실행 추적 뷰어를 확장 할 수 있습니다. 플러그인은 플러그인 메뉴 또는 추적 테이블의 마우스 오른쪽 버튼 클릭 메뉴에서 시작됩니다. 자세한 내용은 예제 플러그인 및 Core/API.py를 확인하십시오.
더 많은 플러그인 :
필터 예제 :
| 필터 | 설명 |
|---|---|
| disasm = 푸시 | 팝 | Disasm에는 단어 푸시 또는 팝 (Push, 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 검색 (댓글 포함) |
| Regex = 읽기 | 메모리를 읽는 비축을 보여줍니다 |
| eiregex = 정크 | decrypt | 반대 방향으로, '정크'또는 '해독'이있는 행은 필터링됩니다. |
| 주석 = 해독 | 댓글로 필터 |
여러 필터를 함께 결합 할 수 있습니다.
disasm=xor/reg_any=0x1337 ; show all xor instructions where atleast one register value is 0x1337
보다 복잡한 필터링을 위해서는 필터 플러그인을 만들고 API.SET_FILTERATION_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, 댓글,
Disasm Field는 여러 키워드를 지원합니다 : "XOR/SHL/SHR". MEM 필드는 MEM 액세스 (액세스, ADDR 및 값)의 세 필드를 모두 확인합니다. 정수는 16 진수로 제공되어야합니다.
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 ]])))