IDA应用之旅(一)用IDA查看最简单的sys文件

IDA使用之旅(一)用IDA查看最简单的sys文件

转载请标明是引用于 http://blog.csdn.net/chenyujing1234 

欢迎大家拍砖!

 

本系列内容是我根据“知其所以然论坛”博主录制的学习视频,做的笔记。

使用的IDA软件版本: IDA.pro.5.5 (参考下载地址: http://www.pc6.com/softview/SoftView_55231.html)

下载后得到IDA.pro.5.5dapro55.zip文件。

 

在Windows 下可以开发exe文件,exe是不可逆向的,通过IDA可以把应用程序逆向,并非不是完全逆向,因为EXE已经把代码优化了。

DEBUG比RELEASE能更好逆向。

IDA它支持多种文件的反汇编,如exe 、sys、dll等。

一、IDA软件的安装

1、安装DIA软件

把IDA.pro.5.5dapro55.zip解压后得到IDA应用之旅(一)用IDA查看最简单的sys文件,双击它安装;

2、汉化

将IDA.pro.5.5dapro55.zip解压后得到的文件 IDA应用之旅(一)用IDA查看最简单的sys文件

继续解压得到IDA应用之旅(一)用IDA查看最简单的sys文件,将它拷贝到IDS的安装目录下。

^-^ 此时运行IDA程序,可以看到程序界面了:

IDA应用之旅(一)用IDA查看最简单的sys文件

 

IDA应用之旅(一)用IDA查看最简单的sys文件

我们点击运行按钮,进入到主界面:

IDA应用之旅(一)用IDA查看最简单的sys文件

 

二、测试一个最简单的驱动程序

1、准备要测试的驱动程序

编译方法可参考我的文章:<<http://blog.csdn.net/chenyujing1234/article/details/7674104>>

之所以简单,是因为只有一个文件sys.c,文件中只有两个函数:

#include <ntddk.h>

VOID HelloDDKUnload (IN PDRIVER_OBJECT pDriverObject) 
{
   KdPrint(("Enter DriverUnload\n"));
   KdPrint(("Leave DriverUnload\n"));
}



extern NTSTATUS DriverEntry (
			IN PDRIVER_OBJECT pDriverObject,
			IN PUNICODE_STRING pRegistryPath	) 
{
   NTSTATUS status;
   status=STATUS_SUCCESS;
   KdPrint(("Enter DriverEntry\n"));
   pDriverObject->DriverUnload = HelloDDKUnload;
   KdPrint(("DriverEntry end\n"));
   return status;
}

编译后得到我们的目标文件: sys.sys

 

2、反汇编实现

把sys.sys拖到IDA程序里。这里要选择载入的文件类型:

第一个是:PE文件

第二个是:DOS 可执行文件

第三个是:二进制文件。(用于有时我们不知道它的文件类型,eg:ROM镜像文件)

这里我们按默认的。(一般程序会帮我们自动选择类型。)

IDA应用之旅(一)用IDA查看最简单的sys文件

全部按默认,点确定;接下来会提示是否加载PDB文件,点YES。

IDA应用之旅(一)用IDA查看最简单的sys文件

此时在输出窗口中显示:

IDA应用之旅(一)用IDA查看最简单的sys文件

此时我们的结果出来了.

IDA应用之旅(一)用IDA查看最简单的sys文件

 

3、简要分析

我们可以看到在IDA View-A选项卡上会显示三种颜色。

蓝色: 表示是代码段;

棕色: 表示是数据段;

红色: 表示是内核;

IDA应用之旅(一)用IDA查看最简单的sys文件

 

3、1  代码段

 

.sys文件一般是从00010000开始的,而.exe一般是从00040000开始的,dll是从00070000开头的。

IDA应用之旅(一)用IDA查看最简单的sys文件

在查看的汇编代码中,如果可以标识符进步重命名,之后与它有关的所有名字都会改变。

IDA应用之旅(一)用IDA查看最简单的sys文件

 

 

接下来我们来查看函数DriverEntry

IDA应用之旅(一)用IDA查看最简单的sys文件

下图表示:把_HelloDDKUnload@4的代码放入eax+34h的内存中。这样当卸载时可以调用。

IDA应用之旅(一)用IDA查看最简单的sys文件

 

3、2  数据段

在数据段时若我们判断是字符串,那么可以选择以C风格来查看。

IDA应用之旅(一)用IDA查看最简单的sys文件

得到的结果如下:

IDA应用之旅(一)用IDA查看最简单的sys文件

 

若要还原为UNICODE风格,则选择 IDA应用之旅(一)用IDA查看最简单的sys文件

 

4、退出IDA

4、1   退出时提示是否要保存,我们选择不保存,且不存数据库。

IDA应用之旅(一)用IDA查看最简单的sys文件

这样我们文件夹中生成的四个文件会被删除:

IDA应用之旅(一)用IDA查看最简单的sys文件

id0:二叉树数据库
id1:文件包含描述每个程序字节的标记

nam:包含IDA NAME窗口的数据库
til:本地数据库有关信息

 

4、2  保存后退出。

保存也有两种方式,一种是压缩,一种是不压缩。

注意:在使用IDA过程中要经常保存,因为IDA常会崩溃,这样会造成数据丢失。