使用的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