加密解密第二章:ollydbg用法

od用法

  • 基本設置

加密解密第二章:ollydbg用法

這裏是使用的吾愛破解的專用版OD,文字漢語 操作就很方便了

tips:加入到右鍵菜單

加密解密第二章:ollydbg用法

  • 調試文件的方式

OllyDBG 有三種方式來載入程序進行調試,一種是點擊菜單 文件->打開 (快捷鍵是 F3)來打開一個可執行文件進行調試,
另一種是點擊菜單 文件->附加 來附加到一個已運行的進程上進行調試。注意這裏要附加的程序必須已運行。

第三種就是用右鍵菜單來載入程序(不知這種算不算)。一般情況下我們選第一種方式。比如我們選擇一個 test.exe 來調試,通過菜單 文件->打開 來載入這個程序

同時我們可以使用 ollydbg -p pid的值來調試隱藏的進程
icesord 來查看進程的pid

Traceme 案列分析

使用ASCCII 碼的traceme來進行調試

ctrl+g設置斷點 輸入GetDlgItemTextA定位到方法處 按F2下斷點
加密解密第二章:ollydbg用法

跟蹤代碼 ,發現關鍵的判斷點再如下方法:
加密解密第二章:ollydbg用法

方法一:修改標誌位寄存器ZF的值 點擊 Z取反即可
加密解密第二章:ollydbg用法

we get it
加密解密第二章:ollydbg用法

方法二:
上面那個GenRegCode的返回值存儲正在eax中 如果爲真及返回1,錯誤即返回0;

加密解密第二章:ollydbg用法

在這一句修改eax的值 即可跳轉到正確的流程

方法三: NOP掉判斷代碼

加密解密第二章:ollydbg用法

上面這三種方式都是在內存中手動修改代碼或者寄存器的值。無法實際落盤到磁盤中。下面我們嘗試將第三種方法持久化。

加密解密第二章:ollydbg用法
右鍵選擇修改過後的代碼並存放到可執行後文件,最後保存文件爲traceme-patch.exe

加密解密第二章:ollydbg用法

輸入任何長度大於5的名稱即可通過。
加密解密第二章:ollydbg用法

我們用ida打開看看代碼變動的位置。
加密解密第二章:ollydbg用法

可以看到 相當於是註釋掉原來的check方法。
加密解密第二章:ollydbg用法

算法分析

該註冊機的算法代碼


unsigned char Table[8] = {0xC,0xA,0x13,0x9,0xC,0xB,0xA,0x8};    //計算序列號要用的數據表,全局變量

/*-------------------------------------------------------------*/
/* GenRegCode - 註冊算法主函數                                */
/*-------------------------------------------------------------*/
BOOL GenRegCode( TCHAR  *rCode, TCHAR  *name ,int len) 
{ 
int i,j;
unsigned long code=0; 

    for(i=3,j=0;i<len;i++,j++) 
         {if(j>7) j=0; 
           code+=((BYTE)name[i])*Table[j];                                                                                                  
          } 

    wsprintf(name,TEXT("%ld"),code);
    if(lstrcmp(rCode, name)==0)      //比較真假序列號,這裏爲了省事,直接比較了
        return TRUE;
    else
        return FALSE;

}

使用python寫一個

z = 3
j = 0
code = 0
table = [0xC, 0xA, 0x13, 0x9, 0xC, 0xB, 0xA, 0x8]
cname = input("Enter a number: ")
for i in range(z,len(cname)):
    if j > 7:
        j = 0
    code = code + table[j] * ord(cname[i])  #注意16進制轉ascci碼
    i=i+1
    j=j+1
print(code)

od斷點

硬件斷點

內存斷點

消息斷點
(windows的機制 當用戶點擊一個按鈕,移動鼠標或者鍵入文字時 都會發送消息給當前的窗體 消息爲四個參數 hwnd msg longA longB )

條件斷點
按照寄存器的條件中斷
按存儲器條件中斷

vs2017 編譯加入調試符號

加密解密第二章:ollydbg用法

https://msdn.microsoft.com/zh-cn/library/xe4t6fc1.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章