从堆里抢救丢失的博客

来源:互联网 发布:淘宝卖家店铺动态设置 编辑:程序博客网 时间:2024/04/20 14:26

实验环境

  • 实验环境 
    • 操作机:Windows XP
  • 实验工具:
ToolsPathWinDbg桌面WinHexC:\Tools\WinHex
  • 实验文件:
    • C:\gedu\labs\blog\ieblog.dmp

掌握使用工具提取回复文字数据。

实验步骤

第一步 实验提示

快速查找实验工具

  • 打开桌面 Everything 搜索工具,输入实验工具名称,右击选择“打开路径”,跳转实验工具所在位置。
  • 以查找BURP为例为大家演示。

Alt text

小i提示

  • 在本次实验中,请注意实验工具、实验文件存放路径,不同的文件路径可能会出现不一样的实验结果。
  • 在实验环境中无法连接互联网,请使用您本地的网络环境。
  • 在本次实验中因为不同的操作环境,将Hex editor替换成同样功能的Winhex,一样的简单实用。
  • 在本次实验环境中没有E盘,在导出博文时,请注意保存路径!

第二步 打开目标文件

我们首先打开WinDbg,然后选择File菜单下的Open Crash Dump,载入我们这次所研究的文件ieblog.dmp。可见WinDbg已经为我们打开了文件,并且已经停下来了:

Alt text

虽然说作者是在网上写的博客文章,但是事实上这篇文章的本体依旧是存在于本地计算机内存中的某个区域中的。由于作者很清楚自己的博客中有哪些内容,因此我们可以在内存中检索博文中相应的字符串。这里可以输入如下指令:

0:011>s  –u 0 L800 “当年在交大”

上述命令的意思是,以Unicode的形式在内存中查找“当年在交大”这几个字,查找范围是从0800。回车后发现WinDbg并没有返回结果,那么说明我们这里所指定的800这个范围太小了,这里修改一下,将上述语句中的800改成8000000,然后再次尝试查找:

Alt text

可以看到这次检索出了很多个结果。之所以能够在内存中搜索到这么多的结果,有可能是作者在写作的过程中对文章进行了多次保存,或者说是系统自动进行了保存,于是就在内存中留下了痕迹。那么我们下一步的操作就是确认究竟是哪个位置保存的是完整的博文。当然这里我们依旧可以使用s -u命令来查找博文中最后的几个字符,从而定位博文的范围。或者可以使用如下命令:

0:001>du 001b5942 L1000

上述命令的意思是从内存地址为0x001b5942的位置开始,以Unicode的形式显示内存中的内容,一共显示800个结果。WinDbg输出如下:

Alt text

第三步 提取内存中文章

可以发现,这个地址正是博文真实存放的地址。既然已经在内存中找到了这篇文章,那么下一步就是 将其从内存中提取出来。可以使用如下命令:

0:001>.writemem e:\blog_1.txt 001b5942 L1458

这行命令的意思是,将内存起始位置为0x001b5942处的内容读取出来,一共读取1458个字符,并命名为blog_1.txt,保存在E盘根目录下:

Alt text

然后来到E盘根目录下,打开blog_1.txt文件:

Alt text

可见虽然我们已经把博文提取出来了,但是却是以乱码的形式显示的。而且虽然说是乱码,但是可以发现这些文字已经很接近于我们的中文字了。其实之所以会出现这样的结果,就是因为我们的系统没能有效地识别这些编码。为了解决这个问题,这里可以利用十六进制编辑工具,比如WinHex打开blog_1.txt文件,然后在文件开头加上Unicode的标识符FFFE,这样系统就能够以Unicode字符的形式进行解析了:

Alt text

然后再次打开blog_1.txt文件:

Alt text

可以看到此时已经能够正确显示出汉字了。但是现在还有两个问题没有解决。一个是第一句话中的第一个字,也就是“当”字没有了,因为刚才为了添加Unicode的标识,将字的编码给覆盖掉了。第二个问题是由于作者在网上写的博文是以HTML形式编写的,它对于段落是以<P>以及</P>进行识别的,第一段开头的<P>也没能显示出来。所以下面的操作就是解决这两个问题。

通过截图可以发现,这个程序有可能是一个HTTP的后门程序,并且还可能连接到一个网站。而诸如-cc-re以及-in这几个字符,有可能是与配置相关。比如-in有可能是insall也就是安装的意思。至此,静态分析部分就到这里。

可以在WinDbg中输入如下命令:

0:001>db 001b5942-8

这个命令的意思是在内存地址为0x001b5942减去8的位置,以字节的形式显示内存中的内容,这里之所以要减去8,是因为我们想看一下在“当年在交大”前面有些什么内容:

Alt text

可以看到这里出现了3c0050003e,转换成字符就是<P>,也就是段落的开始标志。而最开始的两个字节正好是00,那么就可以将Unicode的标识符写入这个位置,就不会影响其它的位置了。当然这里依旧可以利用 Hex Editor进行编辑,或者利用如下WinDbg命令进行编辑:

0:001>eb 001b593a ff fe

这句命令的意思是,以字节为单位,在内存位置0x001b593a写入fffe。写入成功后,再将博文提取出来,那么就获得了完整的博文了

0 0
原创粉丝点击