y.a過程計算出第一步注冊碼,6位數字 818768
x.a過程,通過818768,計算出第2過程的注冊碼,32位長度:EFE1499CED0B97FE91CFCBB71E0F2C98
這個過程太過于復雜,沒有看明白,只能略過去了。
(備注:整體的計算過程如此,由于之前破解的時候,已經把軟件注冊了,這個是剛安裝的虛擬機,在里面計算出來的,機器碼
是:67154-29574-61760-40730,最終計算出來的注冊為:2TTUCKBA2181B81)
y.b過程:此過程是通過上面的步驟計算出來的字符串,通過循環計算、取ASC碼,再間隔取位拼接出最終的8位值:2TTU2181
這是該軟件的整個注冊流程示意。
小結:能從頭一步一步看到這里,如果還能跟著動手實踐過來,那么這款軟件,或者同同樣類型的軟件,我們就可以嘗試著來破解了。
我們回過頭來,在從新看一下過程,
軟件查殼---->(如有De4dot去混淆)----->扔進Dnspy進行動態分析----->依據注冊提示搜索關鍵字(注冊、注冊錯誤等提示信息)
---->根據找到的方法或者函數或者調用,單步跟蹤---->觀察局部變量窗口,注意其中的每個值----->遇到關鍵的調用,F11步進跟蹤
或者Ctrl+鼠標單擊調用開新窗口跟蹤過去。--->能到這里,基本上可以有80%的可能性找到注冊碼。余下的就是耐心和不斷遇到新問題,
遇新問題,多多論壇搜索或者百度。
至此,已經完成整個注冊過程的分析,雖然很短,也可能講的不太明白。但是對于一個新入門的小白來說,已經是很不容易了。
也希望得到更多的壇友與大神的幫助,共同成長。
三、最后的最后
由于算法中關于機器碼的第2個步驟沒有看懂,太過冗長與復雜,只能選擇先爆破,還做不出注冊機來。只能先做個爆破的版本,給
壇友使用。
最后附上爆破的主程序地址:http://pan.baidu.com/s/1mimIAIO
[C#] 純文本查看 復制代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
|
catch (Exception exception1)
{
ProjectData.SetProjectError(exception1);
Exception exception = exception1;
ProjectData.ClearProjectError();
}
if (Operators.CompareString(y.b, right, true) <= 0)
{
y.a(ref right);
if (Operators.CompareString(left, y.c, true) == 0)
{
y.c = "a@^*(^*ga$(&%io";
return true;
}
}
return false;
}
return false;
}
|
編輯了好長好長時間,那個將word中粘貼過來的功能好像不太好用。不知道編輯出來的效果好不好。
編輯完看了一下,圖片的順序好像有點亂,最后面還多出一張,重新編輯,還看不到。大家對付看吧,
有不明白的地方,可以留言,我看見了會回復,也可以一起來學習,更希望得到大神的指點。
總結:;
1、通過本次的破解體驗,基本上掌握和了解了.net破解的流程與使用的工具。其中大愛Scan id/Dot net id用來查殼,De4dot脫殼,
Dnspy動態調試追碼,Reflector+Reflexi爆破。本次調試由于軟件可以看出反匯編的代碼,沒有用De4dot反混淆。這個軟件的使用
相對簡單,在cmd模式下,執行 de4dot 空格 待反混淆軟件名稱 回車就OK,我看他們有帶/df參數的,結果都報錯,直接de4dot
加軟件的路徑名稱就可以脫掉。但是它們說DN Guard這種干不掉,好像是個強殼。
2、了解了.net的混淆、反混淆、強命名、命名空間等的一些概念,如果能會一些編程語言,對調試程序有很多益處,哪怕只有一點點。
知道一些基礎語法,對于逆向調試的軟件整個流程的邏輯結構會有個大致的掌握。
3、軟件的注冊機制,個人感覺絕大部分或者全部,都應該會在軟件內有一個驗證機制,也就是在軟件內部一定會有注冊碼的計算過程。
通過跟蹤到特定的領空,就可以把碼拿出來。(也可能會有網絡驗證的那種,讀取到注冊碼,直接服務器比對,來驗證軟件的授權情況,
不過針對這種情況,也可以處理,就是跟蹤到驗證的部位,直接修改代碼的返回值,還和爆破差不多。),在這里就是思考注冊的流程
然后想不同的辦法來對付它。
能想到的就這些,尋求逆向的小伙伴一起上路。
上一頁 [1] [2]
|