OD之繞過序列號驗證 二

2022-03-13 00:55:43 字數 1653 閱讀 4246

上次是修改程式的標題,大家應該感覺這只是乙個起點而已,接下來我們可以嘗試繞過序列號驗證,這種技術應用在很多軟體中,比如**上要買什麼的軟體,商家都會發給`你乙個使用者名稱和密碼,而且還有試用期什麼的,這確實令我們很懊惱,但是od可以幫我們解決這個問題.

例如下面這個程式:

類似於這種程式,先將它拖進od:

使用者名稱和密碼應該是屬於文字的獲取,這時可以了解到,在win32中,有兩種比較常用的獲取文字的函式:

getdlgitemtext(a w)              

getwindowtext(a w)    a引數代表ascll碼   w代表unicode模式

ctrl+g呼叫表示式:(這裡由於不知道它使用的哪種函式,需要一一除錯,輸錯就沒有呼叫該函式,這裡是需要耐心的,逆向工程都是在耐心中完成的):

可以發現在這裡呼叫了 getdlgitemtexta,按 f2 下乙個斷點,然後ctrl+f2進行重載入,f9執行:

隨便輸入使用者名稱和序列號,check:然後f8單步進行到如下;

出現了ascll碼,這是我們剛才輸入的序列號和使用者名稱,[ (代表兩位元組)>> (在組合語言中是push壓入棧後進行jmp跳轉的意思)],這個是告訴我們文字的位置,然後我們繼續f8除錯;

這裡出現了test函式,意思是測試序列號和使用者名稱是否符合要求,eax是暫存器的函式的意思,大一上學期的時候應該有了解過一點,win32系統一定會把文字轉換為32位存在eax中,je是彙編函式的乙個跳轉函式,判斷條件是zf=1時就跳轉,

而這裡我們可以修改值,將eax暫存器的值修改,或者修改je函式,讓1為0,成為false,跳轉不實現,因為我們不知道正確的序列號,這是跳轉一定會指向錯誤的,或者強制填充nop函式

然後進行檔案的儲存:

生成為traceme1.exe然後可以測試一下咯;

可以發現成功了,對比源程式:

這只是開始,但是在尋找問題中解決是有趣的.

uniapp學習系列二之登入驗證

簡單驗證 判空提示,密碼圓點顯示,固定賬號密碼 login bg gradual green 背景顏色bg gradual green漸變色 content bounceindown 頭部logo header common logo.png systemname 學習系統 主體表單 main ex...

二叉搜尋樹的後序遍歷序列驗證

題目 輸入乙個整數陣列,判斷該陣列是不是某二叉搜尋樹的後序遍歷的結果。如果是,返回true,否則輸出false。假設輸入的陣列的任意兩個數字都互不相同。public class solution public boolean check int array,int begin,int end 如果沒...

LeetCode之驗證二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 1 3輸出 true 示例 2 輸入 5 1 4 3 6輸出 false 解釋 輸入...