各位看官大家好,俗話說的好,近朱者赤,近墨者黑。本人3天前在看雪論壇註冊ID,當時對破解,crack,IAT,等等連個概念都沒有,在論壇裡泡了3天,看了很多各方面的貼子,感覺到收入良多,今日正好看見了一個軟體的破解過程,按作者的方法,成功找到註冊碼,破解了軟體,心中一陣竊喜,因為這是本人第一次破解軟體,當然高興啦!後來覺得閒來無事,乾脆就研究一下注冊碼的演算法,結果還讓我看出點兒門道,為了讓和我一樣的菜菜們能學點兒新東西,特別將過程發出來,也算是為本論壇出一份薄力吧。因為本人就是菜鳥一個,所以寫出來的東東,各位菜友應該能看懂的!
好了,進入正題!
SuperCleaner 2.61*注:此文給新手看,高手不要浪費時間
軟體大小:386KB
軟體語言:英文
軟體類別:國外軟體/免費版/解除安裝工具
執行環境:Win9x/Me/NT/2000/XP
下載地址:http://www.onlinedown.net/soft/6433.htm
軟體介紹:是幫助使用者清洗他們的計算機硬碟內不必要的檔案的程式。它能掃描你的系統讓你選擇不再需要的檔案進行刪除。並能備份檔案已避免你誤刪除有用的檔案,此備份功能將不必要的檔案扔進再迴圈箱,這樣可以讓你再必要的時候恢復資訊。
軟體的破解內容請參見論壇裡的另外一貼。
這裡我主要想和大家研究一下注冊碼的演算法。該軟體的註冊方式為“使用者名稱+註冊碼”方式,註冊碼分為4段即“XXXX-XXXX-XXXX-XXXX”形式。首先要找到註冊碼的演算法程式碼,在上面的貼子裡有,這裡就不多說了。下面就是註冊碼各部分演算法的程式碼。
註冊碼第一部分演算法:
00419841 |> /0FBE1C38 /movsx ebx,byte ptr ds:[eax+edi] "ds:[edi]中存放的為使用者名稱"
00419845 |. |03DA |add ebx,edx "edx中存放一常數38"
00419847 |. |03CB |add ecx,ebx
00419849 |. |40 |inc eax "指向使用者名稱中下一個字母"
0041984A |. |3BC6 |cmp eax,esi "比較使用者名稱是否結束,esi中存放使用者名稱長度"
0041984C |.^7C F3 jl short SuperCle.00419841 "迴圈取數計算"
註冊碼第二部分演算法:
00419873 |> /0FBE2C38 /movsx ebp,byte ptr ds:[eax+edi]
00419877 |. |0FAFEA |imul ebp,edx "edx中存放一常數52"
0041987A |. |03CD |add ecx,ebp
0041987C |. |40 |inc eax
0041987D |. |3BC6 |cmp eax,esi
0041987F |.^7C F2 jl short SuperCle.00419873
註冊碼第三部分演算法:
004198AF |> /0FBE2C38 /movsx ebp,byte ptr ds:[eax+edi]
004198B3 |. |03EA |add ebp,edx "edx中存放一常數12"
004198B5 |. |03CD |add ecx,ebp
004198B7 |. |40 |inc eax
004198B8 |. |3BC6 |cmp eax,esi
004198BA |.^7C F3 jl short SuperCle.004198AF
註冊碼第四部分演算法:
004198EA |> /0FBE2C38 /movsx ebp,byte ptr ds:[eax+edi]
004198EE |. |0FAFEA |imul ebp,edx "edx中存放一常數14"
004198F1 |. |03CD |add ecx,ebp
004198F3 |. |40 |inc eax
004198F4 |. |3BC6 |cmp eax,esi
004198F6 |.^7C F2 jl short SuperCle.004198EA
相信看完上面的註冊碼演算法,大家也差不多都能寫出具體的演算法了吧,不過像和我一樣的菜菜們,可能還是有些不太明白的地方,沒關係下面就是根據的演算法,得到的註冊碼計算公式。
第一部分註冊碼演算法:(使用者名稱中的每一個字母的ASCII碼+38)的累計數。
第二部分註冊碼演算法:(使用者名稱中的每一個字母的ASCII碼*52)的累計數。
第三部分註冊碼演算法:(使用者名稱中的每一個字母的ASCII碼+12)的累計數。
第四部分註冊碼演算法:(使用者名稱中的每一個字母的ASCII碼*14)的累計數。
這下應該比較直觀了,要是還不明白,還是沒關係,因為最後還有舉例說明,俺想的周到吧!
舉例:使用者名稱:123456,註冊碼計算流程如下:
123456的ASCII碼分別為十進位制的49,50,51,52,53,54。
第一部分註冊碼:(49+38)+(50+38)+(51+38)+(52+38)+(53+38)+(54+38)=537;
第二部分註冊碼:(49*52)+(50*52)+(51*52)+(52*52)+(53*52)+(54*52)=16068;
第三部分註冊碼:(49+12)+(50+12)+(51+12)+(52+12)+(53+12)+(54+12)=381;
第四部分註冊碼:(49*14)+(50*14)+(51*14)+(52*14)+(53*14)+(54*14)=4326;
註冊碼:537-16068-381-4326
以上就是偶花了2小時的勞動成果(1小時解演算法,1小時發貼子),還請大家多多捧場,有意見和看法歡迎提出來,因為這是偶第一篇帶點兒技術性的貼子,所以可能寫的不是很好,以後我會努力的! :D