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