使用的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\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鏡像文件)
這里我們按默認的。(一般程序會幫我們自動選擇類型。)
全部按默認,點確定;接下來會提示是否加載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