日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OllyDbg笔记-寄存器以及各种关键指令解析(含简单程序破解)

發布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OllyDbg笔记-寄存器以及各种关键指令解析(含简单程序破解) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

?

?

基本概念

代碼與實例


?

基本概念

CPU中的9個寄存器:

EAX:擴展累加寄存器
EBX:擴展基址寄存器
ECX:擴展計數寄存器
EDX:擴展數據寄存器
ESI:擴展來源寄存器
EDI:擴展目標寄存器
EBP:擴展基址指針寄存器
ESP:擴展堆棧指針寄存器
EIP:擴展的指令指針寄存器

?

處理EBP、ESP、EIP,其他寄存器都能隨意使用。

EBP:主要用于棧和棧針;
ESP:指向當前進程的棧空間地址;
EIP:總是指向下一條要被執行的指明;

?

call有以下幾種方式:

call xxxxxxxxxh #直接跳到函數或過程的地址; call xxxx #等同于 push eip;jmp xxx; call eax #函數或過程地址直接存放在eax; call dword ptr [eax] #eax中存的是地址,[]這個是取地址中的值,dword大小 call dword ptr [<&API>] #執行一個系統API

下面是關于Windows操作系統相關的知識:

從內到外:
Ring 0:優先級最高,用于操作系統內核;
Ring 1:不使用;
Ring 2:不使用;
Ring 3:最先級最低,用于應用程序;

?

下面是關于在條件判斷跳轉中關鍵:

?

代碼與實例

這里破解:

這里有2個破解方法,一個是暴力破解,把if判斷后的結果修改為正確。

還有一個是破解算法。

下面來演示下,首先是暴力破解:

這里有個關鍵,程序首先是在看有沒有存在Keyfile.dat文件,如果沒有,就直接跳轉了

JNE是當ZF=0的時候跳轉,此時把ZF改為0

往下走看到一個JNZ,現在程序給出的默認是不跳轉,也就是ZF此時為0,在往下看是JMP是無條件跳轉。跳到004010F7的位置,先看看這段004010F7是什么代碼:

發現是給出密鑰不對。此時我們讓其跳轉吧:

此處我們可以看到跳到一個算法里面:

這里我們分析下:這里首先是對比DS:[402173]的值是不是為10.這個目測是,通過JL可以看出小于或不大于時跳轉。所以密鑰估計是10位以上。然后就是讀取東西。讀取了后和ASCII 47也就是G做對比。如果不是G就跳轉,如果是就回去在循環,所以可以知道密鑰估計是>10個G(這個10是16進制的10進制為16)。這里先暴力破解下,

進行修改嘗試后:

最后就來到了這個地方:

填出:

這里創建:Keyfile.dat文件,里面輸入大于10個的G。看看結果:

打開程序:直接成功

總結

以上是生活随笔為你收集整理的OllyDbg笔记-寄存器以及各种关键指令解析(含简单程序破解)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。