我有一个包含每行地址的文件。现在我想将某个CDB调试器命令(实际上是SOSEX refs
)应用于文件中的每个地址。
我可以生成一个脚本,其中每一行的格式为:
!refs <address> -target
因此,如果我的原始文件包含10,000个地址,那么该脚本将包含10,000个!refs
命令的调用。
有更好的方法吗?
答案 0 :(得分:2)
假设我收集了一些这样的地址到文件
wc -l someaddr.txt
623 someaddr.txt
head -n 5 someaddr.txt
00211635
00211637
00211638
0021163a
00211640
tail -n 5 someaddr.txt
0023779c
002377a2
002377a7
002377ac
002377b0
我在文件中有623地址
.foreach /f (place "e:\someaddr.txt") { u place l2 }
假设我想要反汇编每个地址的两条指令
我会做这样的事情
0:000> .foreach /f (place "e:\someaddr.txt") { u place l2 }
calc!WinMain:
00211635 8bff mov edi,edi
00211637 55 push ebp
calc!WinMain+0x2:
00211637 55 push ebp
00211638 8bec mov ebp,esp
calc!WinMain+0x3:
00211638 8bec mov ebp,esp
0021163a 81ec580d0000 sub esp,0D58h
calc!WinMain+0x5:
0021163a 81ec580d0000 sub esp,0D58h
00211640 a164402600 mov eax,dword ptr [calc!__security_cookie (00264064)]
calc!WinMain+0xb:
00211640 a164402600 mov eax,dword ptr [calc!__security_cookie (00264064)]
00211645 33c5 xor eax,ebp
导致
头
calc!WinMain+0x772:
0023779c ff1500132100 call dword ptr [calc!_imp__InvalidateRect (00211300)]
002377a2 e92ba4fdff jmp calc!WinMain+0x778 (00211bd2)
calc!WinMain+0x778:
002377a2 e92ba4fdff jmp calc!WinMain+0x778 (00211bd2)
002377a7 a1ac402600 mov eax,dword ptr [calc!calcSQM (002640ac)]
calc!WinMain+0x7fb:
002377a7 a1ac402600 mov eax,dword ptr [calc!calcSQM (002640ac)]
002377ac 83482004 or dword ptr [eax+20h],4
calc!WinMain+0x800:
002377ac 83482004 or dword ptr [eax+20h],4
002377b0 e993a4fdff jmp calc!WinMain+0x804 (00211c48)
calc!WinMain+0x804:
002377b0 e993a4fdff jmp calc!WinMain+0x804 (00211c48)
002377b5 90 nop
尾巴
Many-to-Many