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

使用的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解压后得到,双击它安装;

2、汉化
将IDA.pro.5.5dapro55.zip解压后得到的文件

继续解压得到,将它拷贝到IDS的安装目录下。

二、测试一个最简单的驱动程序
1、准备要测试的驱动程序
编译方法可参考我的文章:<<http://blog.csdn.net/chenyujing1234/article/details/7674104>>

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

#include <ntddk.h>

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



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

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

2、反汇编实现
把sys.sys拖到IDA程序里。这里要选择载入的文件类型:

第一个是:PE文件

第二个是:DOS 可执行文件

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

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

 

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

 

 此时在输出窗口中显示:

 

 此时我们的结果出来了.

 

 3、简要分析

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

蓝色: 表示是代码段;

棕色: 表示是数据段;

红色: 表示是内核;

 

 3、1  代码段

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

 

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

 

 接下来我们来查看函数DriverEntry

 

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

 

 3、2  数据段

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

 

 得到的结果如下:

 

 若要还原为UNICODE风格,则选择

 4、退出IDA

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

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

 

 id0:二叉树数据库

id1:文件包含描述每个程序字节的标记

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

4、2  保存后退出。
保存也有两种方式,一种是压缩,一种是不压缩。

注意:在使用IDA过程中要经常保存,因为IDA常会崩溃,这样会造成数据丢失。
————————————————
版权声明:本文为CSDN博主「Jackchenyj」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/chenyujing1234/java/article/details/7766887

原文地址:https://www.cnblogs.com/yuanscn/p/12733013.html