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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

160个CrackMe005

發布時間:2025/3/21 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 160个CrackMe005 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 查殼
      • 關于脫殼
    • 使用DarkDe分析程序
    • 分析程序
      • 導出符號
      • 從字符串入手
      • 分析第一層防護
      • 分析表單創建事件
        • 初始化控件
        • 讀取文件內容
        • 破解第一層防護
      • 分析第二層防護
        • 分析表單的鼠標移動事件
          • 獲取坐標
          • 校驗圖片
          • 校驗坐標
          • 再次校驗圖片和坐標
      • 分析第三層防護
      • 分析第四層防護
      • 分析第五層防護
        • 破解第五層防護
      • 破解第四層防護
      • 破解第三層防護
        • 分析Ddit2雙擊事件
      • 破解第二層防護
      • 破解第六層防護
        • 分析0x318
        • 分析0x314
      • 破解第七層防護
    • 校驗步驟總結

這個Crackme跟004一樣是同一個作者,不過變態多了,真的是層層設防啊。

查殼

程序是使用Delphi編寫的,加了個UPX殼,隨隨便便就能脫掉。

關于脫殼

這個殼的話,有三種脫的方式,PEiD通用脫殼器 手動脫和專用的脫殼器,這里建議用專用的脫殼器 反匯編代碼和對齊比較準確方便后面的分析,我用脫殼器脫的時候報錯了,所以直接從網上找了一個脫好了的。

使用DarkDe分析程序

把脫殼后的程序拖如DarkDe

首先來觀察一下窗體,發現這里有一個隱藏的Edit框。

再來觀察一下事件按鈕,有如下幾個響應事件:

  • 表單創建
  • Timer1定時器
  • 按鈕的鼠標按下事件
  • 雙擊事件
  • Edit2的雙擊事件
  • 表單的鼠標移動事件
  • Image1的鼠標按下事件
  • Image2的鼠標按下事件
  • Image3的鼠標按下事件
  • Image4的鼠標按下事件
  • Timer2定時器
  • 按鈕點擊事件

接著再來看一下控件的ID,這個會方便以后的分析,注意了,如果你脫殼用的是手動的方法或者是通用脫殼機,這個控件ID是顯示不出來的。所以能用專用脫殼器脫盡量不要手脫。

分析程序

導出符號

首先為了方便我們分析,把程序拖到IDA里,添加Delphi的所有的簽名,然后導出map文件,加載到OD中,方便后續的調試。

從字符串入手

整個程序整體的框架已經了解的差不多,那么接下來就開始分析這個程序。首先從字符串入手。

找到這個注冊成功的字符串,跟進去。

拉到函數頭的位置,我們看到右邊有個IDA的注釋,說明這個是Timer2的響應事件。然后這里有連續的五條跳轉指令,都是跳到函數結束的位置。那么要想注冊成功,就必須讓這五個條件不成立。

分析第一層防護

右鍵->查找所有常量->查找0x3C4,找到0xC34被賦值的位置,我們的目的是不讓這個地方被賦值。

接著找到函數頭的位置,IDA的位置顯示這個是表單的創建事件

分析表單創建事件

接著,在函數頭的位置下斷點,分析整個表單創建事件。分析表單創建事件的目的是為了讓ebx+0x304這個位置的值不被賦值為0xC34。整個事件的代碼分析如下:

初始化控件

首先是初始化控件,這個不是重點。

讀取文件內容

接著獲取C:\ajj.126.c0m\j\o\j\o\ok.txt的文件句柄,讀取文件,然后檢索IO輸入操作結果,如果檢索失敗,直接退出函數。我這個脫殼后的文件是從網上下載的,原來是X盤,好像是被人改成C盤。

如果文件存在,那么從文本中讀取字符串,然后比較文本中的字符串是否是作者要求的,這個123456789是我自己寫入txt文件中測試用的,如果要復制作者要求的那個字符串,必須把從0x20開始到00的所有十六進制復制下來。如果字符串比較通過,那么就會跳過[ebx+0x304]被賦值為0xC34的過程,至此整個表單創建函數就完成了。

破解第一層防護

創建文件,路徑為: C:\ajj.126.c0m\j\o\j\o\ok.txt,然后將20 61 6A 6A D0 B4 B5 C4 43 4B 6D 65 D5 E6 C0 C3 21 FF FF用十六進制編輯器寫入到文本。

成功破解第一層防護之后,隱藏的Edit編輯框就出來了。但是這個編輯框是被禁用的。

分析第二層防護

計時器的五個條件我們已經滿足了第一個,接下來回到計時器的入口,從第二個條件入手。

條件二是默認已經滿足了,跳轉不會實現。那么我們現在要滿足條件三,讓[ebx+0x310]賦值為0xF94。

同樣,搜索0xF94這個常量,找到賦值的地方。

第一條,直接跟進去,拉到函數頭部,發現這里是表單的鼠標移動事件。接下來開始分析這個事件的所有的代碼。

分析表單的鼠標移動事件

接下來在函數頭部下斷點,然后從左上角移動到表單,觸發斷點,分析整個函數。

獲取坐標

首先把參數一和參數二給edx和eax,我們必須知道這兩個參數是什么。因為這是鼠標點擊事件,初步猜測是鼠標的X和Y坐標。接下來做四次測試

左上角:edx=0 eax=0x14 右上角:edx=0 eax=0xE8 左下角:edx=0x13B eax=0x3 右下角:edx=0x13B eax=0xFD

當從不同的位置移入表單,對應的eax和edx的值都不相同,所以判斷這兩個參數是橫縱坐標,而且坐標系的原點在左上角。

校驗圖片

接著函數取出了一個圖片對象,然后判斷是否是這個圖片對象,

可以看到Image3的ID是0x2E0,所以只有當圖片為Image3的時候才能滿足條件,而Image3根據測試是"性相近"。

校驗坐標

接著將橫坐標和0xE2做比較,將縱坐標和0x12C做比較,小于或等于跳轉,那么就是說如果想讓他不跳轉,橫縱坐標必須大于這兩個值。整個表單的原點是左上角,那么我們必須從右下角移入才能滿足條件。

再次校驗圖片和坐標

接著再次校驗圖片是否是Image2 Image2是性本善,然后校驗橫坐標和縱坐標,這一次必須從左下角移入才能滿足條件。然后再判斷[ebx+0x30C]這個地址的值是否是0x9,默認這個值是0x9,所以這里又是一層防護。只有滿足了[ebx+0x30C]這個地址的值是9,才能把ebx+0x310賦值為0xF94,也就是滿足我們的第二層防護。

分析第三層防護

接下來還是一樣,要讓[ebx+0x30C]這個地址的值不為9,查找所有常量。符合要求的只有第一條和第二條。

而第一條跟進去發現這是之前分析過的表單創建的時候就被賦值為30C,所以目標不是這里,是第二條。

第二條跟進去,應該就是這里了。

接下來,拉到函數頭的位置,

發現這里是Edit2的雙擊事件,而Edit2目前是禁用的,所以雙擊事件根本斷不下來,這又是一層防護。

分析第四層防護

想要破解第二層防護必須先破解第三層防護,想要破解第三層防護,就必須先破解第四層防護,這是在玩俄羅斯套娃啊。那么我們這一步必須讓Edit2控件變成啟用狀態。怎么做呢?利用剛才看到的控件ID。

Edit2的控件ID是0x2F0,接著搜索所有常量。

總共有這么多和0x2F0相關的,我們必須一個一個去看才能找到禁用Edit2的那一個。經過排查發現真正的開啟Edit2控件的是第四個。

這個函數并不長,是Panel1的雙擊事件,想要讓Edit2控件被啟用,就必須讓eax+0x308這個地址被賦值為0x29D。

Panel是什么東西呢。打開一下DarkDe,中間的這個大按鈕就是Panel1,注意不是圖片是按鈕。所以想要觸發這個事件必須是雙擊空白處才能讓程序斷下。

分析第五層防護

查找常量,第三條,跟進去,這里是注冊按鈕的鼠標按下事件。

首先比較edx=0x230D,這個是直接能通過的,沒有給咱下套,我還以為又套了一層。接著比較cl是1,cl的話必須是右鍵單擊,還是用猜,鼠標無非就量個參數,坐標和左右按鍵。eax+0x308的初始值是0x28E,右鍵單擊一次增加3,所以只要將注冊按鈕右鍵單擊5次,第五層防護就算過了。

破解第五層防護

右鍵單擊五次注冊按鈕

破解第四層防護

第五層防護已經過了,那么接下來來到沒有解決的第四層。

鼠標右鍵單擊五次注冊按鈕,然后等圖片過了,雙擊大按鈕,響應事件斷下,

這個時候可以看到eax+0x308的值已經是29D了。

Edit2編輯框也能正常使用了。

破解第三層防護

Edit2編輯框的編輯框已經啟用了,那么接下來雙擊編輯框

程序成功斷下,接下來分析Edit2的雙擊事件。我們的目的要讓[ebx+0x30C]被賦值為eax,達到破解第二層防護的條件。

分析Ddit2雙擊事件

首先獲取Edit2的內容,然后獲取長度,長度必須等于8,然后比較第二個字符是否是0x5F,0x5F就是下劃線。

接著獲取Edit2的內容,比較第六個字符是否是0x2C,然后獲取Edit1的內容和長度,然后將長度+3之后除以3,

比較余數,余數必須為0。就是說Edit1的長度必須為3的倍數。至此,Ddit2雙擊事件分析完成。

**破解第三層防護:**第一個編輯框長度必須是3的倍數,第二個編輯框第二個字符必須是下劃線,第六個字符必須的逗號

破解第二層防護

當破解了第三層防護的時候,第二層防護的比較條件也就滿足了。繼續往下分析。

接著往下走,程序會獲取第一個編輯框的內容然后和ajj做比較,也就是說第一個編輯框必須為ajj。然后會把數字轉成字符串顯示到控件。

成功了之后,這里會出現一個數字。

破解第六層防護

接下來來到總驗證的地方。也就是一開始的定時器,看看現在的校驗情況如何。

我們已經過掉了前三個驗證,接下來要過掉第四個,也就是要讓ebx+0x318等于ebx+0x314。那么要搞清楚0x318和0x314這兩個位置是怎么被賦值的

分析0x318

搜索所有常量->0x318,


除了第一個設置初始值,剩下的所有對這個地址的變量做加法運算。隨便點進去第二個,增加二的位置,

這里是圖片1的鼠標按下的位置,而且顯示的是注冊不成功。

首先判斷鼠標按下的是左鍵還是右鍵,如果是左鍵+2,右鍵+0x11。

再次回到所有常量的位置,那么規律也就出來了,這幾個加法分別對應四張圖片,根據點擊的按鍵不同,加的值也不同。0x318這個位置搞明白了,接下來去分析0x314。

分析0x314

搜索所有常量->0x314。

0x314被賦值的地方也有很多,分別對應五個值。這個幾個地址相差的值比較小,說明是同一個函數,隨便點進去一個。

這里是之前分析過的表單的鼠標移動事件,這個地址的值取決于eax的值,有四種情況第一種情況賦值為0x41,第二種情況賦值為0x3D,第三種情況賦值為0x34,第三種情況賦值為0xDF。然后根據不同的情況,在界面上會顯示一個數字。

而eax的值來自于0x30C這個位置,又得繼續往上找。

破解第七層防護

接下來還是查找所有常量->0x30C。

來到給0x30C賦值的位置,這里是編輯框的雙擊事件,之前已經分析過了,但是我沒有分析上面兩個call具體是做什么的。

第一個call是獲取磁盤的剩余空間,然后將eax做一系列的處理,交給第二個call,第二個call是純粹的算法了。

最后這兩處結合,是根據顯示的數字不同,然后對圖片采用不同的點擊方案。

校驗步驟總結

  • 創建文件,路徑為: C:\ajj.126.c0m\j\o\j\o\ok.txt,然后將20 61 6A 6A D0 B4 B5 C4 43 4B 6D 65 D5 E6 C0 C3 21 FF FF用十六進制編輯器寫入到文本。
  • 鼠標右鍵點擊五次注冊按鈕
  • 鼠標左鍵雙擊圖片框的空白處
  • 用戶名輸入ajj
  • 密碼輸入1_345,78(第二位必須的下劃線,第六位必須的逗號,長度必須8位,其余隨便),然后鼠標左鍵雙擊
  • 在圖片是性相近的時候,鼠標從右下角移入軟件框內
  • 在圖片是性本善的時候,鼠標從左下角移入軟件框內
  • 根據顯示的數字不同,最終的解決方案也不同,具體如下:
    • 數字為0——在“習相遠”圖片時左鍵點擊圖片2次,在“人之初”圖片時右鍵點擊圖片3次
    • 數字為1——在“習相遠”圖片時左鍵點擊圖片1次,在“習相遠”圖片時右鍵點擊圖片2次
    • 數字為2——在“性本善”圖片時左鍵點擊圖片2次,在“性相近”圖片時右鍵點擊圖片2次
    • 數字為3——在“習相遠”圖片時左鍵點擊圖片1次,在“習相遠”圖片時右鍵點擊圖片8次
    • 數字為4——在“習相遠”圖片時左鍵點擊圖片2次,在“人之初”圖片時右鍵點擊圖片3次
  • 所有的步驟都執行完畢之后,等待計時器執行完成之后,

    注冊按鈕會變成注冊了,鼠標移上去會顯示厲害厲害真厲害。

    需要相關文件的可以到我的Github下載:https://github.com/TonyChen56/160-Crackme

    總結

    以上是生活随笔為你收集整理的160个CrackMe005的全部內容,希望文章能夠幫你解決所遇到的問題。

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