freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

ollydbg圖文入門教程資料(完整版)

2024-12-21 05:21上一頁面

下一頁面
  

【正文】 440F7E |. A1 442C4400 MOV EAX,DWORD PTR DS:[442C44] 00440F83 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 00440F85 |. E8 DEC0FFFF CALL 00440F8A |. EB 18 JMP SHORT 00440F8C | 6A 00 PUSH 0 00440F8E |. B9 80104400 MOV ECX, 。 這里跳走就完蛋 00440F58 |. 6A 00 PUSH 0 00440F5A |. B9 3C104400 MOV ECX, 。如果你在 調(diào)試選項CPU 標簽中把 “顯示跳轉(zhuǎn)路徑 ”及其下面的兩個 “如跳轉(zhuǎn)未實現(xiàn)則顯示灰色路徑 ”、 “顯示跳轉(zhuǎn)到選定命令的路徑 ”都選上的話,就會看到是從什么地方跳到出錯字串處的: 我們在上圖中地址 00440F2C 處按 F2 鍵設(shè)個斷點,現(xiàn)在我們按 F9 鍵,程序已運行起來了。 ASCII Registered User 00440F34 |. E8 F32BFCFF CALL 。 用戶名為空則跳 00403B3F |. 85FF TEST EDI,EDI 00403B41 |. 74 6B JE SHORT 00403B43 |. 8B46 FC MOV EAX,DWORD PTR DS:[ESI4] 。 把我們輸入的用戶名送到 ECX 00403B57 |. 8B1F MOV EBX,DWORD PTR DS:[EDI] 。 ASCII GFX754IER954 00440F51 |. E8 D62BFCFF CALL ?,F(xiàn)在我們把斷點禁用,在 OllyDBG 中按 F9 鍵讓程序運行。先不要點那個 “Check It” 按鈕,保留上圖的 狀態(tài)。一般我們打開的程序看到的調(diào)用都是 ASCII 類型的函數(shù),以 “A” 結(jié)尾。斷點設(shè)好后我們轉(zhuǎn)到我們調(diào)試的程序上來,現(xiàn)在我們在被我們調(diào)試的程序上點擊那個 “Check It”按鈕,被 OllyDBG 斷下: 00401323 |. E8 4C010000 CALL JMP.amp。 Title = Crudd39。s Crack Head”,對話框顯示的內(nèi)容是 “Now write a keygen and tut and you39。 00401486 $ FF25 20204000 JMP DWORD PTR DS:[amp。 關(guān)鍵,要按 F7 鍵跟進去 0040132D |. 3BC6 CMP EAX,ESI 。 EDX 清零 004013DF |. 8A06 MOV AL,BYTE PTR DS:[ESI] 。 每位字符減 16 進制的 30,因為這里都是數(shù)字,如 1 的 ASCII 碼是 “31H”,減 30H 后為 1,即我們平時看到的數(shù)值 004013F2 |. 8D0C89 LEA ECX,DWORD PTR DS:[ECX+ECX*4] 。如果我們輸入的是負數(shù),則此處功能就是把 EAX 中的值取反 00401404 |. 5E POP ESI 。我們來看一下信息窗口: ESI=E6B5F2F9 EAX=FF439EBE 左鍵選擇信息窗口 中的 ESI=E6B5F2F9,再按右鍵,在彈出菜單上選 “ 修改寄存器 ” ,我們會看到這樣一個窗口: 可能你的顯示跟我不一樣,因為這個 crackme 中已經(jīng)說了每個機器的序列號不一樣。今天就先說到這里,關(guān)于如何追出 ESI 寄存器的值我就留到下一篇 OllyDBG 入門系列(四)-內(nèi)存斷點 中再講吧。 比較 0040132F |. 75 42 JNZ SHORT 。在 OllyDBG 中一般我們用到的內(nèi)存斷點有內(nèi)存訪問和內(nèi)存寫入斷點。內(nèi)存斷點的特性就是不管你選幾個字節(jié), OllyDBG 都會分配 4096 字節(jié)的內(nèi)存區(qū)。如果你是其它系統(tǒng),如 Win98 的話,可能會有所不同。 。 |MaxVolumeNameSize = B (11.) 00401425 |. 68 9C334000 PUSH 。 磁盤類型參數(shù)送 EAX 00401442 |. 8B1E MOV EBX,DWORD PTR DS:[ESI] 。如我把這個 Crackme 程序放在 F:\OD 教程\crackhead\ 目錄下,而我 F 盤設(shè)置的卷標是 GAME,則這里獲取的就是 GAME, ASCII 碼為 “47414D45”。注意這里是 DWORD,即 “雙字 ”,由 4 個連續(xù)的字節(jié)構(gòu)成。如果用匯編來寫這個注冊機的話就更簡單了,很多內(nèi)容可以直接照抄。 |pVolumeSerialNumber = NULL 00401423 |. 6A 0B PUSH 0B 。這就是一般比較常見的 stdcall 調(diào)用約定。如果我的分區(qū)沒有卷標的話,則卷標值為 0,最后的注冊碼就是 797A7553H,即十進制 2038068563。 有七章之多。為什么這樣寫?大家把前一句和這一句合起來看一下: 0040140F |. E8 B4000000 CALL JMP.amp。 |VolumeNameBuffer = 0040142A |. 6A 00 PUSH 0 。這里只要大家注意函數(shù)參數(shù)傳遞的次序,即調(diào)用約定。因此經(jīng)過 MOV EBX,DWORD PTR DS:[ESI] 這條指令,就是把從地址 40339C 開始處的值送到 EBX,所以我們得到了 “454D4147”。為什么會這樣呢?如果大家對 x86 系列 CPU 的存儲方式了解的話,這里就容易理解了。 循環(huán)遞減取磁盤類型參數(shù)值與卷標名 值相乘 00401446 |. 03F8 ADD EDI,EAX 。 |RootPathName = NULL 0040142C |. E8 A3000000 CALL JMP.amp。 磁盤類型參數(shù)送內(nèi)存地址 4033EC 00401419 |. 6A 00 PUSH 0 。我們看一下領(lǐng)空,原來是在 內(nèi)。選中部分會顯示為灰色。更多關(guān)于斷點的知識大家可以參考 論壇精華 7基礎(chǔ)知識 斷點技巧 斷點原理 這篇 Lenus 兄弟寫的《如何對抗硬件斷點之一 調(diào)試寄存器》文章,也可以看這個帖: 根據(jù)當前我們調(diào)試的具體程序的情況,我們選用內(nèi)存寫入斷點。哈哈,原來就在附近?。? 我們現(xiàn)在知道 ESI 寄存器的值是從內(nèi)存地址 40339C 中送過來的,那內(nèi)存地址 40339C 中的數(shù)據(jù)是什么時候產(chǎn)生的呢?大家注意,我這里信息窗口中顯示的是 DS:[0040339C]=9FCF87AA,你那可能是 DS:[0040339C]=XXXXXXXX,這里的 XXXXXXXX 表示的是其它的值,就是說與我這里顯示的 9FCF87AA 不一樣。今天我們的任務(wù)就是使用 OllyDBG 的內(nèi)存斷點功能找到這個地方,搞清楚這個值是如何算出來的。我們原來輸入的是字串 “12345666” ,現(xiàn)在轉(zhuǎn)換為了數(shù)字 12345666??吹竭@條和下一條指令,我們要考慮一下這個 ESI 的值是哪里運算得出的呢? 00401405 |. 81F6 53757A79 XOR ESI,797A7553 。 每位字符運算后的值與 2倍上一位字符運算后值相加后送 ECX 004013F8 |. 8A06 MOV AL,BYTE PTR DS:[ESI] 。 指針加 1,指向下一個字符 004013E2 |. 3C 2D CMP AL,2D 。 不等則完蛋 光標停在 00401328 地址處的那條指令上。 0040148C $ FF25 24204000 JMP DWORD PTR DS:[amp。等等,怎么回事?怎么按一下 F8 鍵跑到這來了: 00401474 $ FF25 2C204000 JMP DWORD PTR DS:[amp。 Text = Now write a keygen and tut and you39。 GetWindowTextA 00401328 |. E8 A5000000 CALL ?,F(xiàn)在回到我們調(diào)試的程序上來,我們現(xiàn)在就是要找一下我們調(diào)試的程序有沒有調(diào)用 GetDlgItemTextA 或 GetWindowTextA 函數(shù)。我們在 OllyDBG 的反匯編窗口中右擊鼠標,在彈出菜單中選擇 查找 當前模塊中的名稱 (標簽 ),或者我們通過按 CTR+N 組合鍵也可以達到同樣的效果(注意在進行此操作時要在 OllyDBG 中保證是在當前被調(diào)試程序的領(lǐng)空,我在第一篇中已經(jīng)介紹了領(lǐng)空的概念,如我這里調(diào)試這個程序時 OllyDBG 的標題欄顯示的就是 “[CPU 主線程 , 模塊 CrackHea]” ,這表明我們當前在被調(diào)試程序的 領(lǐng)空)。仍然選擇 鏡像打包中的一個名稱為 CrackHead 的 crackme。 這里跳走就完蛋 大家注意看一下,地址 00440F51 處的 CALL 和上面我們分析的地址 00440F34 處的 CALL 是不是匯編指令都一樣?。窟@說明檢測用戶名和注冊碼是用的同一個子程序。 比較 00403B5B |. 75 58 JNZ SHORT 。 “Registered User”字串的長度送 EDX 00403B49 |. 29D0 SUB EAX,EDX 。 這里跳走就完蛋 當我們按 F8 鍵走到 00440F34 |. E8 F32BFCFF CALL 這一句時,我們按一下 F7 鍵,進入這個 CALL,進去后光標停在這一句: 我們所看到的那些 PUSH EBX、 PUSH ESI 等都是調(diào)用子程序保存堆棧時用的指令,不用管它,按 F8 鍵一步步過來,我們只關(guān)心關(guān)鍵部分: 00403B2C /$ 53 PUSH EBX 00403B2D |. 56 PUSH ESI 00403B2E |. 57 PUSH EDI 00403B2F |. 89C6 MOV ESI,EAX 。我們看一下信息窗口,你應(yīng)該發(fā)現(xiàn)了你剛才輸入的內(nèi)容了吧?我這里顯示是這樣: 堆棧 SS:[0012F9AC]=00D44DB4, (ASCII CCDebuger) EAX=00000009 上面的內(nèi)存地址 00D44DB4 中就是我們剛才輸入的內(nèi)容,我這里是 CCDebuger。 ASCII Congrats! You cracked this CrackMe! 00440F64 |. A1 442C4400 MOV EAX,DWORD PTR DS:[442C44] 00440F69 |. 8B00 MOV EAX,DWORD PTR DS:[EAX] 00440F6B |. E8 F8C0FFFF CALL 00440F70 |. EB 32 JMP SHORT 00440F72 | 6A 00 PUSH 0 00440F74 |. B9 80104400 MOV ECX, 。 ASCII Wrong Serial,try again! 00440F98 |. A1 442C4400 MOV EAX,DWORD PTR DS:[442C44] 00440F9D |. 8B00
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1