逆向破解之160個CrackMe —— 001


CrackMe —— 001

160 CrackMe 是比較適合新手學習逆向破解的CrackMe的一個集合一共160個待逆向破解的程序

CrackMe:它們都是一些公開給別人嘗試破解的小程序,制作 crackme 的人可能是程序員,想測試一下自己的軟件保護技術,也可能是一位 cracker,想挑戰一下其它 cracker 的破解實力,也可能是一些正在學習破解的人,自己編一些小程序給自己破。

CrackMe簡稱CM。
程序下載地址: 點擊我

來源 <-點擊查看

編號 作者 保護方式
001 Acid burn Nag Name/Serial,Serial

 

 

 

工具 

x32dbg

KeyMake

開始破解之旅

ON.1

使用x32dbg打開001號程序

我們來到了入口點,如果打開后發現程序直接運行,在選項->選項->事件處勾選 入口斷點 即可在程序入口處暫停

 

 

ON.2

F9運行,或者點擊菜單欄 調試->運行 程序運行出現

程序分為兩部分Serial/Name 和 Serial

爆破方式破解

Serial/Name

在輸入框內輸入任意數據,點擊Check it Baby! 彈出窗口

在x32dbg里右鍵 搜索->當前模塊->字符串 先會顯示在當前搜索到的字符串

找到 Sorry, The serial is incorect! 

找到兩處

地址=0042FA63
反匯編=mov edx,acid burn.42FB80
字符串="Sorry , The serial is incorect !"

地址=0042FB26
反匯編=mov edx,acid burn.42FB80
字符串="Sorry , The serial is incorect !"

 插入代碼里竟然沒有匯編的選項!!!

 分別點進去查看兩處代碼 

地址=0042FA63

0042FA52 | E8 D96EFDFF              | call acid burn.406930                   |
0042FA57 | 83F8 04                  | cmp eax,0x4                             |
0042FA5A | 7D 1D                    | jge acid burn.42FA79                    |
0042FA5C | 6A 00                    | push 0x0                                |
0042FA5E | B9 74FB4200              | mov ecx,acid burn.42FB74                | 42FB74:"Try Again!"
0042FA63 | BA 80FB4200              | mov edx,acid burn.42FB80                | 42FB80:"Sorry , The serial is incorect !"
0042FA68 | A1 480A4300              | mov eax,dword ptr ds:[0x430A48]         |
0042FA6D | 8B00                     | mov eax,dword ptr ds:[eax]              |
0042FA6F | E8 FCA6FFFF              | call acid burn.42A170                   |
0042FA74 | E9 BE000000              | jmp acid burn.42FB37                    |
0042FA79 | 8D55 F0                  | lea edx,dword ptr ss:[ebp-0x10]         |
0042FA7C | 8B83 DC010000            | mov eax,dword ptr ds:[ebx+0x1DC]        |

0042FA5A 處有跳轉,指向彈出錯誤提示框 修改為JMP

 

地址=0042FB26

0042FAF8 | 8B55 F0                  | mov edx,dword ptr ss:[ebp-0x10]         |
0042FAFB | 8B45 F4                  | mov eax,dword ptr ss:[ebp-0xC]          |
0042FAFE | E8 F93EFDFF              | call <acid burn.sub_4039FC>             |
0042FB03 | 75 1A                    | jne acid burn.42FB1F                    |
0042FB05 | 6A 00                    | push 0x0                                |
0042FB07 | B9 CCFB4200              | mov ecx,acid burn.42FBCC                | 42FBCC:"Congratz !!"
0042FB0C | BA D8FB4200              | mov edx,acid burn.42FBD8                | 42FBD8:"Good job dude =)"
0042FB11 | A1 480A4300              | mov eax,dword ptr ds:[0x430A48]         |
0042FB16 | 8B00                     | mov eax,dword ptr ds:[eax]              |
0042FB18 | E8 53A6FFFF              | call acid burn.42A170                   |
0042FB1D | EB 18                    | jmp acid burn.42FB37                    |
0042FB1F | 6A 00                    | push 0x0                                |
0042FB21 | B9 74FB4200              | mov ecx,acid burn.42FB74                | 42FB74:"Try Again!"
0042FB26 | BA 80FB4200              | mov edx,acid burn.42FB80                | 42FB80:"Sorry , The serial is incorect !"
0042FB2B | A1 480A4300              | mov eax,dword ptr ds:[0x430A48]         |
0042FB30 | 8B00                     | mov eax,dword ptr ds:[eax]              |
0042FB32 | E8 39A6FFFF              | call acid burn.42A170                   |
0042FB37 | 33C0                     | xor eax,eax                             |
0042FB39 | 5A                       | pop edx                                 |
0042FB3A | 59                       | pop ecx                                 |
0042FB3B | 59                       | pop ecx                                 |

 通過查看發現 0042FB26 處有字符串 “Good job dude =)” 猜測可能是正確執行流程

 查看該出匯編代碼發現0042FB03處有跳轉,修改跳轉為NOP

運行程序

破解成功

Serial

搜索字符串“Try Agent” 在每個地址下斷點,點擊Check it Baby!

發現斷點於 0042F4F8 在該地址向上翻最近跳轉處設置斷點單步F8 

經過兩個call是發現寄存器處顯示字符,疑似密碼,繼續單步向下

發現寄存器出現之前call處顯示的字符串拼接到了一起和我們輸入框輸入的數據,下一條指令為判斷跳轉,此處call為輸入框判斷對比函數

在輸入框內輸入Hello Dude!

密碼正確,此處可用爆破方式 jne 42F41F 修改 NOP,運行

 bingo! 破解成功

內存補丁方式

 單步F8,在地址 42F4D0 處看到寄存器存在Key

打開KeyMake 點擊其他->內存注冊機->添加

 

中斷地址:對應的內存地址

中斷次數:設置1次,是第一次運行到指定地址時中斷並追碼,設置2次,是第二次運行到指定地址時中斷並追碼

第一字節:原始指令

指令長度:兩個字母或數字代表一個指令長度E82745FDFF代表5個指令長度

點擊添加->生成->打開程序運行->點擊按鈕出現注冊碼

 同理 0042FAFE 發現注冊碼,制作內存注冊機,運行得到注冊碼

 


免責聲明!

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



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