首页 > 学院 > 逻辑算法 > 正文

(看雪教程) 第4章 静态分析技术 第一节 基础知识

2019-09-10 09:02:10
字体:
来源:转载
供稿:网友

一、虚拟地址和偏移量转换
  由于Windows程序是运行在386保护模式下,在保护模式下,程序访问存储器所使用的逻辑地址称为虚拟地址(Virual Address,VA)。与实地址模式下的分段地址类似,虚拟地址也可写成"段:偏移量"的形式,这里的段是指段选择器。

  文件执行时将被映像到指定内存地址中,这个初始内存地址称为基址(ImageBase)。在Windows NT中,缺省的值是10000h;对于DLLs,缺省值为400000h。在Windows 9x中,10000h不能用来装入32位的执行文件,因为该地址处于所有进程共享的线性地址区域,因此Microsoft将Win32可执行文件的缺省基地址改变为400000h。

  相对虚拟地址(Relative Virual Address,RVA)表示此段代码在内存中相对于基地址的偏移。即:相对虚拟地址(RVA)=虚拟地址(VA)-基址(ImageBase)。

  文件中的地址与内存中表示不同,它是用偏移量(File offset)来表示的。

  在SoftICE和W32Dasm下显示的地址值是内存地址(memory offset),或称之为虚拟地址(Virual Address,VA)。而十六进制工具里,如:Hiew、Hex Workshop等显示的地址就是文件地址,称之为偏移量(File offset) 或物理地址(RAW offset)。

  在实际操作时,使用 RVA-Offset之类的转换器很容易查出字串RVA和偏移量的值。
以Pc_offset(光盘/tools/offset)此工具为例说说如何将SoftICE下看到的虚拟地址(Virual AddressVA)转换成十六进制工具里的偏移量(File offset),运行该软件打开记事本程序,在Memory Address(内存地址)输入虚拟地址(Virual AddressVA)的值:40117D,点击"Do it"按钮将显示己转换成文件偏移量(File offset),如图一所示。

(图一)内存虚拟地址转换成文件偏移量

二、文件类型分析

  文件分析是静态分析程序的第一步,通过相关工具显示欲调试文件的信息,如它是用什么语言写的,是否加等。常用的文件分析工具有TYP、Gtw或FileInfo。其中FileInfo(光盘/tools/file/File analysers)由于识别文件类型较多,使用方便,在这一节简单地讲讲它的用法。
FileInfo运行时是DOS界面,支持Windows长文件名,能识别DOS、NE、PE等各种文件类型和
  语法:fi <drive:/path/><*.*> </r> </f> </d-> </l+> </p+>
     "fi /r"or "/s" 列出当前目录和子目录所有的文件信息;
     "fi /f" 仅列出能识别的文件
  由于每次要进入DOS窗口运行程序相当不便,在这可创建快捷方式,把要分析的文章复制到FileInfo目录下,用鼠标双击FileInfo主文件即可。FileInfo快捷方式如图二。在快捷方式中的命令行中可以键入相关参数,如:FI.EXE /l /p+,此后用鼠标双击FileInfo快捷方式,会自动分析出FileInfo当前目录内的所有文件,不包含子目录。


图二FileInfo快捷方式中命令参数配制

  双击此快捷方式就可执行带参数的FileInfo,显示结果如图三所示。


图三 FileInfo分析文件的报告

  在此例中,文件CHAP301.EXE被分析出是用VC6.0编译的 CHAP303.EXE文件类型是Win GUI,就是Windows图形用户界面程序(一般FileInfo分析不出类型就报此类型)。另外此工具也可分析出程序是被何种软件加密的等。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选