02 - Machine to Machine - 自动化WinDBG分析过程
挖坑,说不定哪天心血来潮不填了呢。
既然我们有了源源不断的DUMP,那么再找个方法自动
看一看,这种事肯定不能是人工去做,人工的话,这得搭上我所有的时间,还不如让我老老实实对着IDA一个个函数去逆向呢。
Windbg其实是cdb的GUI版本。使用cdb,应该可以达到同样的效果。cdb位于Windows SDK Debugging Tools目录下。
使用cdb -y SymbolPath -i ImagePath -z DumpFileName可以打开dump文件,然后就和windbg的操作一模一样了。
那这还得手动操作啊,如何自动化
?简单,使用管道
。linux下大家已经玩的熟练了,类似ps aux|grep xx
,在windows也是一样。 echo .ecxr;k;| cdb -z C:\xx.dmp
试一试?你会惊奇的发现,连.detach
都不需要。分析完,程序就退了。留下一屏幕的分析结果。
有了这个管道信息,剩余的大家也都明白,要不就读( ReadConsoleOutput or GetStdHandle + GetConsoleScreenBufferInfo
whatever)一下这里输出的东西,要不就使用输出重定向
:>>
。
echo .ecxr;k;| cdb -z C:\xx.dmp >> c:\a.txt
more c:\a.txt
这样一切都搞定了(上面只是例子,注意权限。c:\根目录不一定写的进去)。
这是要做什么?下一章再说吧。在下一章开始之前,我们再简单修改一下语句
.foreach(place {s -[1]u 0 L?80000000 "http"}){du /c100 ${place}}
这样,我们看起来是不是清爽多了?所有字符都在一行了。
0:012> .foreach(place {s -[1]u 0 L?80000000 "http"}){du /c100 ${place}}
0080dc9c "https://fonts.googleapis.com/css?family=PT+Sans"
00815c24 "http://***.com/includes/js/virtualpaginate.js"
00815e82 "http://***.com/download.php?id=584CE4A51..."
接下来,将所有内容输出。到文件也好,到你的自动化处理程序也好,这都是我们下一篇文章要说的事情了。
(作者 blast,CH 02 完)