2.33 windbg有"Run Trace"功能吗 https://scz.617.cn/windows/202206191821.txt Q: 已知流程会过[addr_a,addr_b]区间,我想在此区间单步执行每一条指令,每次单步 后想执行一些命令,比如检查相关寄存器值并据此做出不同动作。 A: scz 2022-06-19 该需求与ta/pa命令无关,这两个命令无法在每次单步后执行指定命令。也与wt命令 无关。 编辑tcmd.txt如下 -------------------------------------------------------------------------- .if(@rip==@$t1){}.else{r $t0,rip;r $t0=@$t0+1;t "$$< tcmd.txt"} -------------------------------------------------------------------------- 在addr_a处执行如下命令 t "r $t0=0;r $t1=;$$< tcmd.txt" 效果是,从addr_a单步执行至addr_b,每次都执行"r $t0,rip;r $t0=@$t0+1",输出 中会看到一堆"$t0=... rip=..."。 这只是示例,根据原始需求调整tcmd.txt的内容,比如当rax等于特征值时停止单步 执行,修改每次单步时所执行的命令,等等。这是土法"Run Trace"功能。 配合.logopen/.logclose,对指定范围内被执行的指令进行定制化记录,当流程因in 不同而不同时,对两次log进行BC比较,快速找出分叉点。根据[addr_a,addr_b]的具 体情况,将t换成p,避免失焦。