菜鳥對XARA 3D V4.0的對比和註冊碼演算法的一點心得,請多多指教!! (8千字)
XARA 3D v4.0
雖然網上已有序號產生器,但本著學習的目的,我還是將它研究了一番,現寫出心得如下:
執行xara 3d,發現沒有註冊有15天限制,且作出來的圖的背景上有它的logo,看一下注冊方式,只要輸入註冊碼即可,沒有使用者名稱什麼的,再用fi偵測一下,用aspack
2.1加了殼,脫了它,再執行脫殼後的程式,隨便輸入幾個數字,然後啟動trw,下斷
bpx hmemcpy ,按f5回到程式,點ok,被trw斷下,bd *禁止所有斷點,pmodule回到程式的領空,然後小心的按f10,來到如下地方:
:0041F6BA mov eax, dword ptr [esp+00000144] //將註冊碼送到EAX
:0041F6C1 cmp dword ptr [eax-08], 00000007 //比較註冊碼的長度是否為7
:0041F6C5 jne 0041F8CA //不對就出錯
:0041F6CB movsx edx, byte ptr [eax] //將註冊碼第一位送到ECX
:0041F6CE push edx
:0041F6CF call 0047C3E8 //比較註冊碼第1位是否為大寫的英文字母
:0041F6D4 add esp, 00000004
:0041F6D7 test eax, eax //檢查正確與否的標誌
:0041F6D9 je 0041F8CA //不符合條件就出錯
:0041F6DF mov eax, dword ptr [esp+00000144] //將註冊碼送到EAX
:0041F6E6 movsx ecx, byte ptr [eax+01] //將註冊碼第二位送到ECX
:0041F6EA push ecx
:0041F6EB call 0047C3E8 //比較註冊碼第2位是否為大寫的英文字母
:0041F6F0 add esp, 00000004
:0041F6F3 test eax, eax //檢查正確與否的標誌
:0041F6F5 je 0041F8CA //不符合條件就出錯
:0041F6FB mov edx, dword ptr [esp+00000144]//將註冊碼送到EAX
:0041F702 movsx eax, byte ptr [edx+02] //將註冊碼第三位送到ECX
:0041F706 push eax
:0041F707 call 0047C3E8 //比較註冊碼第3位是否為大寫的英文字母
:0041F70C add esp, 00000004
:0041F70F test eax, eax //檢查正確與否的標誌
:0041F711 je 0041F8CA //不符合條件就出錯
:0041F717 mov ecx, dword ptr [esp+00000144]//將註冊碼送到EAX
:0041F71E movsx edx, byte ptr [ecx+03] //將註冊碼第四位送到ECX
:0041F722 push edx
:0041F723 call 0047C3E8 //比較註冊碼第4位是否為大寫的英文字母
:0041F728 add esp, 00000004
:0041F72B test eax, eax //檢查正確與否的標誌
:0041F72D je 0041F8CA //不符合條件就出錯
:0041F733 mov eax, dword ptr [esp+00000144]//將註冊碼送到EAX
:0041F73A movsx ecx, byte ptr [eax+04] //將註冊碼第五位送到ECX
:0041F73E push ecx
:0041F73F call 0047C3E8 //比較註冊碼第5位是否為大寫的英文字母
:0041F744 add esp, 00000004
:0041F747 test eax, eax //檢查正確與否的標誌
:0041F749 je 0041F8CA //不符合條件就出錯
:0041F74F mov edx, dword ptr [esp+00000144]//將註冊碼送到EAX
:0041F756 movsx eax, byte ptr [edx+05] //將註冊碼第六位送到ECX
:0041F75A push eax
:0041F75B call 0047C3E8 //比較註冊碼第6位是否為大寫的英文字母
:0041F760 add esp, 00000004
:0041F763 test eax, eax //檢查正確與否的標誌
:0041F765 je 0041F8CA //不符合條件就出錯
:0041F76B mov ecx, dword ptr [esp+00000144]//將註冊碼送到EAX
:0041F772 movsx edx, byte ptr [ecx+06] //將註冊碼第七位送到ECX
:0041F776 push edx
:0041F777 call 0047C3E8 //比較註冊碼第7位是否為大寫的英文字母
:0041F77C add esp, 00000004
:0041F77F test eax, eax //檢查正確與否的標誌
:0041F781 je 0041F8CA //不符合條件就出錯
:0041F787 mov eax, ebp //用EBP的值初始化EAX
:0041F789 mov ecx, ebp //用EBP的值初始化ECX
:0041F78B shr eax, 1 //將EAX的值邏輯右移1次
:0041F78D and eax, 55555555 //將EAX+55555555h,和放到EAX中
:0041F792 and ecx, 55555555 //將ECX+55555555h,和放到ECX中
:0041F798 lea ecx, dword ptr [eax+2*ecx]//將ECX*2再加上EAX,和放到ECX
:0041F79B mov eax, dword ptr [esp+00000144]//將註冊碼送到EAX
:0041F7A2 imul ecx, 5678DE15 //將ECX*5678DE15h的積放到ECX
:0041F7A8 mov bl, byte ptr [eax+01]//將註冊碼第二位放入BL中
:0041F7AB mov dl, byte ptr [eax+03]//將註冊碼第四位放入DL中
:0041F7AE mov byte ptr [esp+32], bl//將BL的值放到ESP+32
:0041F7B2 mov bl, byte ptr [eax]//將註冊碼第一位放到BL
:0041F7B4 mov byte ptr [esp+30], bl//將BL的值放到ESP+30
:0041F7B8 mov bl, byte ptr [eax+05]//將註冊碼第六位放到BL
:0041F7BB mov byte ptr [esp+31], bl//將BL的值放到ESP+31
:0041F7BF mov bl, byte ptr [eax+02]//將註冊碼第三位放到BL
:0041F7C2 mov byte ptr [esp+33], bl//將BL的值放到ESP+33
:0041F7C6 mov bl, byte ptr [eax+06]//將註冊碼第七位放到BL
:0041F7C9 movsx eax, byte ptr [eax+04]//將註冊碼第五位放到EAX
:0041F7CD movsx esi, bl//將BL的值,即註冊碼第七位放到ESI
:0041F7D0 lea eax, dword ptr [eax+2*eax]//將EAX即註冊碼第五位乘以3,積放到EAX
:0041F7D3 movsx edx, dl//將DL即註冊碼第四位放到EDX
:0041F7D6 lea eax, dword ptr [esi+8*eax]//將EAX乘以8,再加上ESI即註冊碼第七位,和放到EAX
:0041F7D9 movsx esi, byte ptr [esp+33]//將ESP+33即註冊碼第三位放到ESI
:0041F7DE lea eax, dword ptr [eax+2*eax]//將EAX乘以3的積放到EAX
:0041F7E1 lea eax, dword ptr [esi+8*eax]]//將EAX乘以8,再加上ESI即註冊碼第三位,和放到EAX
:0041F7E4 movsx esi, byte ptr [esp+31]//將ESP+31即註冊碼第六位放到ESI
:0041F7E9 lea eax, dword ptr [eax+2*eax]//將EAX乘以3的積放到EAX
:0041F7EC lea eax, dword ptr [esi+8*eax]]//將EAX乘以8,再加上ESI即註冊碼第六位,和放到EAX
:0041F7EF movsx esi, byte ptr [esp+30]//將ESP+30即註冊碼第一位放到ESI
:0041F7F4 lea eax, dword ptr [eax+2*eax]//將EAX乘以3的積放到EAX
:0041F7F7 lea eax, dword ptr [esi+8*eax]]//將EAX乘以8,再加上ESI即註冊碼第一位,和放到EAX
:0041F7FA movsx esi, byte ptr [esp+32]//將ESP+32即註冊碼第二位放到ESI
:0041F7FF lea eax, dword ptr [eax+2*eax]//將EAX乘以3的積放到EAX
:0041F802 lea eax, dword ptr [esi+8*eax]]//將EAX乘以8,再加上ESI即註冊碼第二位,和放到EAX
:0041F805 lea eax, dword ptr [eax+2*eax]//將EAX乘以3的積放到EAX
:0041F808 lea eax, dword ptr [edx+8*eax-0494DE99]]//將EAX乘以8,再加上ESI即註冊碼四第位,再減去0494DE99h,最後的結果放到EAX
:0041F80F cmp eax, ecx //比較EAX和ECX的值
:0041F811 jne 0041F8CA //不相等就game over了
好了,現在將它的演算法總結如下:
設 EBP=ECFAD166(不同的機器EBP因該不同) B=0494DE99
註冊碼:M 我暫且將M從高位到低位,每一位上的數字設為M1,M2,M3,M4,M5,M6,M7
他們滿足下面這個等式:(其中的shr()代表邏輯右移一次,以下所有等式中的數,如沒有特別說明,都為16進位制)
[(EBP+55555555)*2+(shr(EBP)+55555555)]*5678de15
= (((((M5*18+M7)*18+M3)*18+M6)*18+M1)*18+M2)*183B
上面這個等式不好看,將它作下變換,得到下面的等式:
[(EBP+55555555)*2+(shr(EBP)+55555555)]*5678de15+B
= (M5*18^6+M7*18^5+M3*18^4+M6*18^3+M1*18^2+M2*18+M4)
這下就好看多了,B是個固定的常數,想辦法得到EBP,我們就可以計算出等式左邊的值,當然這個值是一個16進位制的數,那麼怎麼把這個16進位制的數與等式的右邊對應起來呢,仔細看看
M5*18^6+M7*18^5+M3*18^4+M6*18^3+M1*18^2+M2*18+M4
這個表示式,是不是與這個表示式(等式中的數為10進位制)
1*10^6+2*10^5+3*10^4+4*10^3+5*10^2+6*10+7
很相似呢,後面這個表示式寫成常規形式就是 123467 這個數,同理,前面那個表示式寫成常規形式就是 M5 M7 M3 M6 M1 M2 M4
,當然這是個24進位制的7位數,到這裡,我們已經看到曙光了,將等式左邊的值轉換為24進位制的數,將我們計算得到的這個7位24進位制的數的每一位,分別與M5 M7
M3 M6 M1 M2 M4 對應上,我門就得到了註冊碼 M 每一位上的數,接下來就好說了,將每一位的順序調整一下,就得到了我們想要的註冊碼
M .不過還沒有完,我們還需要將M的每一位,對照軟體作者給定的24進位制轉換表,轉換成我門可以輸入的字元,到此才算結束了,這時才得到了真正的註冊碼。那麼作者給定的24進位制轉換表在那裡呢,我沒有找到,但我猜測這張表就是26個大寫英文字母,因為如果你的註冊碼裡面含有26個大寫英文字母以外的字元時,程式根本不會到達核心對比的地方,就已經game
over了。
下面是我還沒有理解的地方:
1。那個EBP在我的機器上始終是ECFAD166 ,不知道在其它的機器上是不是這個值,我想呢,因該是不同的,可能它是根據機器的某個地方的數值計算出來的,無奈我水平有限,找了半天也沒有搞清楚這個EBP的值是怎麼來到。還請高手指教!!
2。不知道是我的演算法分析錯誤還是我的計算錯誤,我算了好幾遍也沒有算對,始終沒有得到正確的註冊碼,無奈之下,上網下載了一個序號產生器,得到我的註冊碼是LTIFVPT,可我怎麼也算不來這個值。請高手救救我啊!!
3。這是我第一次看懂軟體的演算法,可惜我不會程式設計,不知哪位高手能告訴我怎麼寫它的序號產生器,讓我這個菜鳥也過過做序號產生器的癮,哈哈,不要笑我啊!!
好了,不說了,寫的夠羅嗦的了,浪費了大家這麼多時間,有空就幫幫我吧!!
最後還說一點廢話:
1.將登錄檔中的這個鍵[HKEY_CURRENT_USER\Software\Xara\X3D4\Install]
下的key鍵刪除就又可以註冊了;
2.如果你只是想註冊的話,則只要填註冊碼時,隨便填入7個大寫的字母,然後在
0041F811 jne 0041F8CA 處下 r fl z ,不讓程式跳走,就註冊成功了,且以後也不要再註冊了,跟真正的註冊版一模一樣!
Cracker:Turkey/滅害靈
2001.12.17@17:40
相關文章
- 一個菜鳥對密碼學的理解 (4千字)2015-11-15密碼學
- 註冊碼演算法入門!----菜鳥篇2015-11-15演算法
- 菜鳥破解之軟體自己顯示註冊碼2015-11-15
- 分散式註冊中心對比2020-12-07分散式
- 一種非明碼比較程式的註冊------NS-SHAFT註冊碼破解 (9千字)2015-11-15
- 菜鳥求助關於資料比對程式的OO問題!!!2005-01-26
- 菜鳥站長之家google賬號註冊申請圖文教程2020-11-01Go
- 離線註冊你的Fast Browser v4.0 (2千字)2001-09-14AST
- 註冊碼演算法 (2千字)2001-01-14演算法
- 菜鳥譯文(三)——JDK6和JDK7中substring()方法的對比2015-04-02JDK
- 很對不起,因為出了兩天差。動態找出winhex的註冊碼.請進...... (2千字)2001-07-23
- 我對註冊中心的理解2021-01-14
- 給TAE!的小禮物---對DISKdata v3.3.2註冊演算法的分析 (14千字)2001-07-13演算法
- SuperCleaner演算法分析----菜鳥級
(12千字)2015-11-15演算法
- Konvertor 3.03的註冊碼演算法模組的分析
(7千字)2015-11-15演算法
- 貼一個教程,Ace FTP 1.30 ,菜鳥請進! (13千字)2001-03-27FTP
- 初學者請進,看far.exe的註冊碼! (7千字)2001-04-24
- 與MSSQL對比學習MYSQL的心得2021-09-09MySql
- 《APIS32》的註冊碼演算法 還請各位大俠幫忙寫一下注冊機!!!! (15千字)2001-08-07APIS3演算法
- HotkeyMaster演算法分析----菜鳥級
(4千字)2015-11-15AST演算法
- 影像合成的利器 2003 v4(一)註冊演算法 (8千字)2015-11-15演算法
- 菜鳥破解錄之 GIF Construction Set Pro及演算法分析
(8千字)2000-09-01Struct演算法
- 對程式碼命名的一點思考和理解2014-09-17
- 《棋隱》的註冊演算法 (19千字)2001-08-26演算法
- 『凌雲郵神』 註冊碼破解 (非明碼比較的哦 ^_^) (6千字)2001-11-05
- 破解過程-----請多多指教 (2千字)2000-12-31
- Linux“菜鳥”到“菜鳥的一些建議2020-10-15Linux
- 一個菜鳥管理的學習和思考(一)2022-06-07
- 【SpringBoot】服務對註冊中心的註冊時機2024-05-25Spring Boot
- 對軟體開發的一點心得體會 (轉)2007-10-05
- Kugle Regediter 1.0 註冊碼破解法(非明碼) (8千字)2001-11-03
- 菜鳥教學--密碼學概述 (10千字)2015-11-15密碼學
- 請教各位大哥,小弟是一名菜鳥,想對公司下面的專案採取如下的分層方式,各位大哥,看看我的想法對不對2006-10-01
- Flash ActionScript Tool 的註冊碼! (22千字)2001-05-04
- 《TxEdit 4.6》的註冊碼破解 (11千字)2001-07-28
- winrar2.71的破解和對暴破的一點想法 (4千字)2001-04-16
- EmEditor v3 Version 3.09 漢化版註冊碼演算法分析
(8千字)2001-01-09演算法
- 『手寫Mybatis』實現對映器的註冊和使用2024-06-16MyBatis