IDA Pro——CrackMe.exe除錯
版本:IDA pro 6.1(看雪學院下載)
1.配置
1)選單Option配置,只對當前專案有效
2)ida.cfg檔案配置
2.主介面
藍色程式碼段,棕色資料段,紅色核心
視窗管理
名字視窗(Names window):
F:匯入函式/自己寫的函式
I:匯入函式/自己寫的
A:字串
L:庫函式
D:全域性的命令程式碼
函式視窗
Sub子程式
loc地址
byte8位資料
word16位資料
dword雙字資料
unk未知的
3.自定義結構體
IDA之所以在分析階段無法識別結構體,可能源於兩個原因。
第一種:瞭解結構體,但沒有判斷出程式使用了結構體。
第二種:不瞭解結構體,即程式中用的結構體是非標準結構體。
例如,對於自定義的Student結構體:
struct student
{ int id;
char name[20];
int age;
};
方法一:手工建立結構
結構體管理面板–>Insert鍵–>輸入結構體名稱Student
加入資料(id、age等):選中Student ends那一行–>D 建立資料,預設名為field_0–>N 修改名字為id/age–>D 切換資料型別db、dw、dd。
加入ASCII字元(name等):A 建立陣列
方法二:C標頭檔案匯入結構 Loadfile–>Parse C header file
定義好結構體後,找到對應的程式碼(必須選中所有結構體的程式碼),選單Edit–>Struct var–>選擇student,資料按照結構體顯示
修改結構體的偏移量:選中所有要替換的程式碼–>選單Edit–>Offset–>選擇student自動修改
4.自定義列舉型別
開啟列舉視窗–>insert新增列舉型別–>N 新增列舉成員(名字對應數字)–>選中對應程式碼中數字–>M
CrackMe.exe除錯
1.找到“序列號不對,重新再試一次!”提示資訊;
2.往前找cmp、test、je、jne等表示比較的指令;
3.找到關鍵程式碼
4.爆破:讓004010C9一句不跳轉(用OD、WinHex等修改檔案)
方法一:把jne改成je即可,修改暫存器
方法二:改成空指令,即nop指令:jne2位元組,用兩個nop指令替代
5.找到正確序列號:
開啟檔案,跳到.data區塊,發現數字即正確密碼。