課上實驗 小軟體破解

2022-03-09 21:10:15 字數 1972 閱讀 1953

二進位制**分析報告(好水的乙個破解)

第一步,language.exe檢測出程式加殼,經過aspack加殼。

第二步,aspackdie.exe脫殼

第三步,language.exe檢測脫殼後的程式,發現該程式是使用delphi編寫的。

第四步,將脫殼程式拉入ida,通過viewsàstrings檢視字串資訊,發現「註冊碼錯誤」字串,定位到**處。如下圖:

在0x004acad7處有兩個分支,經觀察0x004acadd的分支為註冊成功的分支,0x004acc3d的分支為註冊失敗的分支。因此,為了註冊成功,我將0x004acad7處的jnz改為jz,這樣隨便輸入註冊資訊後,將跳轉到0x004acadd分支,即註冊成功。對jnz的修改可以利用ollydbg進行修改。效果如圖:

然而,當我關閉程式重新開啟時,提示頁仍然存在,程式仍是未註冊狀態(如下圖),我意識到在程式啟動時還有驗證註冊資訊的**段。 

利用ida和ollydbg,我從程式的入口點開始分析。

程式首先利用getprivateprofilestringa從user.dat中取出使用者註冊的資訊,包括使用者名稱和序列號。如下圖: 

接下來,對使用者的註冊資訊進行了分析,這些分析過程就應該是驗證註冊資訊是否正確的,從而根據判斷結果來確定是否註冊。

從ida的反彙編視窗來看,總共有三處地方對註冊資訊進行了驗證。如下圖:

前兩處:

第三處:

在利用ollydbg進行除錯的時候,發現前兩次判斷都能通過,在進行第三步判斷時,沒能通過。因此,我將0x004ad5c5處的jnz改為了jz,這樣,成功通過三次判斷,因此註冊驗證通過,將不會顯示提示頁面,同時註冊成功。

效果如圖: 

附:我也嘗試著去找到真正的註冊碼,並且成功找到,過程如下。

從圖中,左分支為註冊成功的分支,右分支為註冊失敗的分支。註冊成功與否關鍵看0x004acad2處 call sub_404b04的返回值,我斷定這個函式應該是驗證註冊成功的關鍵函式。如果sub_4-4b04返回非零,則註冊碼錯誤。在ida中分析sub_404b04函式,發現該函式接受了兩個引數,分別是eax和edx(delphi的傳參規則是前三個引數依次傳入eax, edx, ecx暫存器)。在sub_404b04中首先比較了兩個引數是否相同,如果不相同,直接返回第乙個引數(也就是非0),所以首先應該保證的是這兩個引數相同。

在ollydbg中,我在此函式下斷點,並嘗試輸入註冊資訊,點選註冊按鈕時,觸發斷點。這個時候,觀察eax和edx,我發現edx為我輸入的註冊碼,而eax為帶比較的引數,因此,我可以斷定正確的註冊碼就是eax所指向的內容。如下圖:  

因此,使用者名為」wah」的正確註冊碼是」2ea4b10」。經過驗證確實正確,如圖:

w13 12 09 2020 實驗課上機總結

題目描述 鍵盤輸入n,m,n為整數個數,m為每乙個數的後移位數,要求後面的數迴繞到前面 核心 方法一 陣列作臨時交換變數 int b n p,q p a q b for q b n p q 方法二當時沒做出來 現在是中午12 30,下課時間是9 35 總結出來的現象是 迴繞條件下,每乙個陣列元素向後...

ios軟體破解

sass router 複製 計算屬性實用 計算屬性的作用非常強大。在開發過程中,個人非常不推薦進行一些複雜的邏輯運算,不僅破壞了template的可閱讀性,對於 擴充套件也變得非常的艱難。盡量把一些邏輯運算寫入到計算屬性中去。下面就是個常見的例子 demo 資料過濾 這是乙個非常常見的過濾資料的計...

軟體破解示例

用od載入脫殼後的主程式,搜尋字串 註冊碼錯誤 找到後雙擊之,即可看到它在 中的引用 我們在004accbb 處下斷點,然後再點選註冊來尋找呼叫者,程式停在了斷點處 分析 可知彈出這個 messagebox 的這部分 是由某處 跳轉過來的,點選 004accb1 處的 可以看到,是由 004acb4...