1. 程式人生 > >IDA Pro——CrackMe.exe除錯

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區塊,發現數字即正確密碼。