1.nop法
nop法通過用於跳過序列號驗證機制,得到最後的成功結果,關鍵是我們要找到序列號判定的函式,如何找到這個函式,常用的方法有以下幾個:
1.利用字串查詢法,右鍵,查詢,引用的字串,查詢判斷失敗或者成功彈出的字串,從而向上,找到判定函式的位置,之後再跟進除錯。
2.利用呼叫模組查詢法,右鍵,檢視呼叫的模組,尤其是對於要輸入驗證碼的程式,常見的模組呼叫有:
getdlgitemtexta(getdlgitemtextw)
getwindowtexta(getwindowtextw)(當然這是對於呼叫windows api函式的**),有一些程式編寫的**語言,決定了其鏈結庫呼叫的函式名稱不是這些,需要我們查詢具體函式名
3.ctrl+n,可以直接查詢所有的函式呼叫表,進而查詢我們所需要下斷的函式
2.修改**結構法
修改**結構法通常用於清楚nag視窗,或者用於防止od除錯(通過惡意修改**結構方法防止我們除錯程式)
比如:1.改變addressofentrypoint,從而直接把nag視窗彈出的**段跳過
比如:2.程式設計師編寫程式時採取的方法,將sizeofcode欄位惡意變長,我們可以通過修改為正常值的方法,從而實現除錯,發現程式有採取這種方法時,我們不僅要關注sizeofcode,還要關注:sizeofinitialzeddata、baseofcode、baseofdata。。。。。類似結構
3.修改暫存器數值法
這種方法也通常用於破解軟體、跳過序列號驗證機制、跳過nag視窗,比如在條件跳轉指令前,存在test ax,ax**,這時在該驗證**之前,可以人工修改ax的值,進而改變後續跳轉指令。
4.強制改變跳轉指令法
這種方法也是通常用於破解軟體、跳過序列號驗證機制、跳過nag視窗的等等,可以將條件跳轉指令改為強制跳轉指令,或者將跳轉條件相反的指令互相修改,從而達到目的。
5.內嵌補丁法
內嵌補丁方法就是在程式的**區塊,利用沒有用的**區域,新增我們所需要的**,比如我們需要讓程式執行某個我們自己想要執行的**段,可以利用jmp,跳轉到我們編寫內嵌補丁的區段,執行完**後,jmp回原**執行指令,即可實現我們需要的功能。
6.堆疊檢視法
在除錯**的過程中,比如我們彈出了nag視窗,或者正在執行驗證操作,如何檢視此時**呼叫的函式?
1.可以暫停函式,選擇面板k,檢視此時呼叫的函式
2.檢視l,可以看程式的日誌檔案,裡面可以看到**的執行過程以及函式相關的呼叫。
3.利用看雪論壇提供的ollyuni.dll外掛程式,還可以檢視各種跳轉指令的位置
7.通過程式資源查詢關鍵指令
可以利用軟體exescope,可以引導程式,並且檢視程式內的資源,將程式加引導程式,到資源–對話方塊:可以看到所需分析的對話方塊或者關鍵部位的對應編號,因此可以在od中查詢指令:push+編號,下斷,進而進行後續分析
8.反除錯軟體破解
1.多型病毒類
2.防od除錯的關鍵函式
逆向筆記2 常用的除錯軟體及外掛程式
結合平日的逆向除錯經驗,特別總結了幾個常用的逆向軟體和外掛程式,方便大家學習和應用 2.ida 靜態除錯神器 3.peid 查檔案用,對於不額外加殼的程式,可以看程式編寫的源 型別,對於加殼的程式,有時可以檢視殼的種類。4.peview 方便檢視pe檔案結構 比較複雜一些,看pe各結構內部的16進製...
c 引數呼叫方式的逆向
c c 傳參的方式有 cdecl stdcall,fastcall 三種 cdecl c c 預設的呼叫方式,呼叫方平衡堆疊,不定引數的函式可以使用 stdcall 被呼叫方平衡堆疊,不定引數的函式無法使用。fastcall 暫存器方式傳參,不定引數的函式無法使用,當函式引數個數為零時,無需區分呼叫...
ios逆向的學習筆記
很開心已經接觸到了ios的逆向,並完成了第乙個小的tweak。功能 hookspringboard 當ios啟動時插入乙個alertview,詳細過程如下 大部分工作都在終端下完成 1 配置環境變數 export theos opt theos 就不解釋了,都知道什麼意思 export lc col...