OD之繞過序列號驗證(二)


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

例如下面這個程序:

   

類似於這種程序,先將它拖進OD:

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

   GetDlgItemText(A W)              

   GetWindowText(A W)    A參數代表ASCLL碼   W代表Unicode模式

    CTRL+G調用表達式:(這里由於不知道它使用的哪種函數,需要一一調試,輸錯就沒有調用該函數,這里是需要耐心的,逆向工程都是在耐心中完成的):

 

    可以發現在這里調用了 GetDlgItemTextA,按 F2 下一個斷點,然后CTRL+F2進行重加載,F9運行:

  隨便輸入用戶名和序列號,check:然后F8單步進行到如下;

 

     出現了ASCLL碼,這是我們剛才輸入的序列號和用戶名,{dword ptr}[ (代表兩字節)>> (在匯編語言中是push壓入棧后進行jmp跳轉的意思)],這個是告訴我們文本的位置,然后我們繼續F8調試;

 

    這里出現了test函數,意思是測試序列號和用戶名是否符合要求,eax是寄存器的函數的意思,大一上學期的時候應該有了解過一點,win32系統一定會把文本轉換為32位存在eax中,je是匯編函數的一個跳轉函數,判斷條件是ZF=1時就跳轉,

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

  然后進行文件的保存:

    生成為TraceMe1.exe然后可以測試一下咯;

 

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

 

 

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM