財智家庭理財V3.30註冊演算法分析
財智家庭理財V3.30註冊演算法分析
軟體名稱:
財智家庭理財V3.30(內部版本為3.31)
軟體簡介:
財智家庭理財V3.30
財智家庭理財3.30版:本軟體為付費註冊軟體,使用期限為7天。註冊或更換正版後,已輸入資料仍能繼續使用。原下載試用版的使用者需重新
下載本版本才能付費註冊。
此版軟體改進後的主要功能:
聯網賬務:透過網路獲取在銀行或證券機構的交易賬目;
開放式基金管理:記錄開放式基金交易活動,管理和掌握開放式基金餘額和盈虧;
外匯管理:管理和掌握外匯的買賣情況;
圖表分析:自動生成多種統計圖表便於分析統計,完善理財
資訊服務功能,透過網際網路自動提供精選的個性化證券、銀行、保險資訊。
理財助手,日記,事務提醒等工具為工作生活提供方便;
財務計劃,協助安排住房、子女就學等重大支出;
債權債務,管理各種形式私人借款和資金往來;
實物管理,提供固定資產、收藏品等的買賣均價、盈虧、存量估值等;
資金管理,提供存款,信用卡,外幣,保險保單,個人貸款等不同資產針對性管理
證券管理,分帳戶記錄管理投資交易,詳細核算證券交易的盈虧,費用,買賣均價
家庭帳簿,以帳戶為核心分類記錄管理家庭收支,讓日子過得更清楚明白;
下載地址:http://www.moneywise.com.cn/product/moneyhome6.htm
------------------------------------------------------------
破解作者:
yzez[DFCG]
破解工具:
w32dasm、0llydbg1.09
破解目的:
初學破解,學習演算法!
------------------------------------------------------------
[破解過程]
詳細過程:
1、用FI2.5查殼,無殼,爽!用w32dasm反彙編,查有用資訊:"註冊成功!為防萬一,請抄錄您的註冊碼:",雙擊我們來到
這裡:
:004C933D E85AEDF6FF call
0043809C
:004C9342 8B45FC mov
eax, dword ptr [ebp-04]
:004C9345 E80AD7FFFF call
004C6A54===============>在此CALL設斷!
:004C934A 84C0
test al, al
:004C934C 746B
je 004C93B9==================>跳向失敗!
:004C934E A140A86700 mov eax,
dword ptr [0067A840]
:004C9353 8B00
mov eax, dword ptr [eax]
:004C9355 8B55FC mov
edx, dword ptr [ebp-04]
:004C9358 E86754FFFF call
004BE7C4
:004C935D 8D8378030000 lea eax, dword
ptr [ebx+00000378]
:004C9363 8B55FC mov
edx, dword ptr [ebp-04]
:004C9366 E839ADF3FF call
004040A4
:004C936B 8BC3
mov eax, ebx
:004C936D E82AFCFFFF call
004C8F9C
:004C9372 C783800300000F270000 mov dword ptr [ebx+00000380],
0000270F
:004C937C 6A00
push 00000000
:004C937E A140A86700 mov eax,
dword ptr [0067A840]
:004C9383 8B00
mov eax, dword ptr [eax]
:004C9385 8B4858 mov
ecx, dword ptr [eax+58]
:004C9388 8D45F8 lea
eax, dword ptr [ebp-08]
* Possible StringData Ref from
Code Obj ->"註冊成功!為防萬一,請抄錄您的註冊碼:"
|
:004C938B BA14944C00 mov edx,
004C9414======>雙擊來到這裡,往上找跳轉!
2、用0llydbg動態除錯,設斷在::004C9345 E80AD7FFFF call 004C6A54,以下是程式程式碼:
004C92E8 . 73 74 61 72 7>ASCII "start mailto:sal"
004C92F8 . 65 73 40 6D 6>ASCII "es@moneywise.com"
004C9308 . 2E 63 6E 00 ASCII ".cn",0
004C930C /. 55 PUSH
EBP
004C930D |. 8BEC MOV
EBP, ESP
004C930F |. 6A 00 PUSH 0
004C9311 |. 6A 00 PUSH 0
004C9313 |. 53 PUSH
EBX
004C9314 |. 8BD8 MOV
EBX, EAX
004C9316 |. 33C0 XOR
EAX, EAX
004C9318 |. 55 PUSH
EBP
004C9319 |. 68 FE934C00 PUSH MoneyHom.004C93FE
004C931E |. 64:FF30 PUSH DWORD
PTR FS:[EAX]
004C9321 |. 64:8920 MOV DWORD
PTR FS:[EAX], ESP
004C9324 |. 8B83 4C030000 MOV EAX, DWORD PTR DS:[EBX+34C]
004C932A |. 8078 47 00 CMP BYTE PTR
DS:[EAX+47], 0
004C932E |. 0F84 AF000000 JE MoneyHom.004C93E3
004C9334 |. 8D55 FC LEA EDX,
[LOCAL.1]
004C9337 |. 8B83 40030000 MOV EAX, DWORD PTR DS:[EBX+340]
004C933D |. E8 5AEDF6FF CALL MoneyHom.0043809C
004C9342 |. 8B45 FC MOV EAX,
[LOCAL.1]
004C9345 |. E8 0AD7FFFF CALL MoneyHom.004C6A54----在此CALL設定斷點,此CALL按F7追進!
004C934A |. 84C0 TEST
AL, AL----測試AL的值,如果註冊碼正確,則AL賦值1,註冊碼不對,則AL賦值為0
004C934C |. 74 6B JE
SHORT MoneyHom.004C93B9-------此處不能跳,跳就要跟你說bye-bye!
004C934E |. A1 40A86700 MOV EAX, DWORD PTR
DS:[67A840]
004C9353 |. 8B00 MOV
EAX, DWORD PTR DS:[EAX]
004C9355 |. 8B55 FC MOV EDX,
[LOCAL.1]
004C9358 |. E8 6754FFFF CALL MoneyHom.004BE7C4
004C935D |. 8D83 78030000 LEA EAX, DWORD PTR DS:[EBX+378]
004C9363 |. 8B55 FC MOV EDX,
[LOCAL.1]
004C9366 |. E8 39ADF3FF CALL MoneyHom.004040A4
004C936B |. 8BC3 MOV
EAX, EBX
004C936D |. E8 2AFCFFFF CALL MoneyHom.004C8F9C
004C9372 |. C783 80030000>MOV DWORD PTR DS:[EBX+380],
270F
004C937C |. 6A 00 PUSH 0
004C937E |. A1 40A86700 MOV EAX, DWORD PTR
DS:[67A840]
004C9383 |. 8B00 MOV
EAX, DWORD PTR DS:[EAX]
004C9385 |. 8B48 58 MOV ECX,
DWORD PTR DS:[EAX+58]
004C9388 |. 8D45 F8 LEA EAX,
[LOCAL.2]
004C938B |. BA 14944C00 MOV EDX, MoneyHom.004C9414
004C9390 |. E8 97AFF3FF CALL MoneyHom.0040432C
--------------------------------------------------------------------------------------
追進004C9345 |. E8 0AD7FFFF CALL MoneyHom.004C6A54來到這裡:
-----------------------------------------------------------------------------------------
004C6A54 /$ 55 PUSH
EBP------------此CALL的入口!
004C6A55 |. 8BEC MOV
EBP, ESP
004C6A57 |. 6A 00 PUSH 0
004C6A59 |. 6A 00 PUSH 0
004C6A5B |. 6A 00 PUSH 0
004C6A5D |. 53 PUSH
EBX
004C6A5E |. 8945 FC MOV [LOCAL.1],
EAX------->移入輸入的假碼:1234-5678
004C6A61 |. 8B45 FC MOV EAX,
[LOCAL.1]------->假碼送入EAX!
004C6A64 |. E8 2BDAF3FF CALL MoneyHom.00404494
004C6A69 |. 33C0 XOR
EAX, EAX------------->EAX清零!
004C6A6B |. 55 PUSH
EBP
004C6A6C |. 68 C96A4C00 PUSH MoneyHom.004C6AC9
004C6A71 |. 64:FF30 PUSH DWORD
PTR FS:[EAX]
004C6A74 |. 64:8920 MOV DWORD
PTR FS:[EAX], ESP
004C6A77 |. 8D45 F4 LEA EAX,
[LOCAL.3]--------->機器碼入EAX,我的機器碼是:9226-9973
004C6A7A |. E8 31FFFFFF CALL MoneyHom.004C69B0------>此ACLL要跟進,因為它已經把機器碼移進,進行處理!演算法CALL(1)跟進!
004C6A7F |. 8B45 F4 MOV EAX,
[LOCAL.3]
004C6A82 |. 8D55 F8 LEA EDX,
[LOCAL.2]
004C6A85 |. E8 46FFFFFF CALL MoneyHom.004C69D0
004C6A8A |. 8B45 F8 MOV EAX,
[LOCAL.2]--------->假碼入EAX!
004C6A8D |. E8 FAFCFFFF CALL MoneyHom.004C678C
004C6A92 |. 8BD8 MOV
EBX, EAX
004C6A94 |. 8B45 FC MOV EAX,
[LOCAL.1]--------->假碼入EAX!
004C6A97 |. E8 F0FCFFFF CALL MoneyHom.004C678C------->對假碼的處理,有興趣跟吧!好象意義不大!
004C6A9C |. 85C0 TEST
EAX, EAX--------------->測試什麼?
004C6A9E |. 75 04 JNZ
SHORT MoneyHom.004C6AA4----->不相等跳!,一定要跳,TNT炸點(1)!
004C6AA0 |. 33DB XOR
EBX, EBX
004C6AA2 |. EB 0A JMP
SHORT MoneyHom.004C6AAE
004C6AA4 |> 3BC3 CMP
EAX, EBX------------------>比較EAX和EBX的值!
004C6AA6 |. 75 04 JNZ
SHORT MoneyHom.004C6AAC--->不相等就跳,不能跳跳就玩完!TNT炸點(2)
004C6AA8 |. B3 01 MOV
BL, 1
004C6AAA |. EB 02 JMP
SHORT MoneyHom.004C6AAE
004C6AAC |> 33DB XOR
EBX, EBX
004C6AAE |> 33C0 XOR
EAX, EAX
004C6AB0 |. 5A POP
EDX
; MoneyHom.004C934A
004C6AB1 |. 59 POP
ECX
; MoneyHom.004C934A
004C6AB2 |. 59 POP
ECX
; MoneyHom.004C934A
004C6AB3 |. 64:8910 MOV DWORD
PTR FS:[EAX], EDX
004C6AB6 |. 68 D06A4C00 PUSH MoneyHom.004C6AD0
004C6ABB |> 8D45 F4 LEA
EAX, [LOCAL.3]
004C6ABE |. BA 03000000 MOV EDX, 3
004C6AC3 |. E8 ACD5F3FF CALL MoneyHom.00404074
---------------------------------------------------------------------------------
跟進演算法ACLL(1),來到這裡:
---------------------------------------------------------------------------------
004C69D0 /$ 55 PUSH
EBP----------->來到這裡!F8往下!
004C69D1 |. 8BEC MOV
EBP, ESP
004C69D3 |. 83C4 F4 ADD ESP,
-0C
004C69D6 |. 53 PUSH
EBX
004C69D7 |. 56 PUSH
ESI
004C69D8 |. 8BF2 MOV
ESI, EDX
004C69DA |. 8945 FC MOV [LOCAL.1],
EAX
004C69DD |. 8B45 FC MOV EAX,
[LOCAL.1]
004C69E0 |. E8 AFDAF3FF CALL MoneyHom.00404494
004C69E5 |. 33C0 XOR
EAX, EAX
004C69E7 |. 55 PUSH
EBP
004C69E8 |. 68 476A4C00 PUSH MoneyHom.004C6A47
004C69ED |. 64:FF30 PUSH DWORD
PTR FS:[EAX]
004C69F0 |. 64:8920 MOV DWORD
PTR FS:[EAX], ESP
004C69F3 |. 8B45 FC MOV EAX,
[LOCAL.1]
004C69F6 |. E8 91FDFFFF CALL MoneyHom.004C678C---->此CALL對機器碼運算,要了解它是如何處理的,可以跟進,程式碼我放在下面!
004C69FB |. 8BD8 MOV
EBX, EAX=============>前6位機器碼反轉的十六進位制值移入EBX,EBX=F3385
004C69FD |. 85DB TEST
EBX, EBX
004C69FF |. 75 09 JNZ
SHORT MoneyHom.004C6A0A===>這裡跳,跳到下面!
004C6A01 |. 8BC6 MOV
EAX, ESI
004C6A03 |. E8 48D6F3FF CALL MoneyHom.00404050
004C6A08 |. EB 27 JMP
SHORT MoneyHom.004C6A31
004C6A0A |> 2B1D B07A6700 SUB EBX, DWORD PTR
DS:[677AB0]==>從上面跳來![677AB0]存放的是常數:
================================================================>034B263C,所以EBX=F3385-034B263C=FCC40D49
004C6A10 |. 895D F4 MOV [LOCAL.3],
EBX
004C6A13 |. 33C0 XOR
EAX, EAX===================>EAX清零!
004C6A15 |. 8945 F8 MOV [LOCAL.2],
EAX
004C6A18 |. DF6D F4 FILD QWORD
PTR SS:[EBP-C]===>浮點數除,SS存放的是:00000000FCC40D49
================================================>運算結果是:4240706889.0000000000存入ST當中!實際上就是除1
004C6A1B |. DC0D B47A6700 FMUL QWORD PTR DS:[677AB4]===>浮點數乘,DS:[677AB4]存放的是常數:
====================>0.9498864000000000,ST=4240706889.0000000000*0.9498864000000000=4028189800.2474096830
004C6A21 |. E8 FAC2F3FF CALL MoneyHom.00402D20==============>此CALL對上述運算出的浮點值處理!
=======================>保留浮點值的整數位,並轉化成十六進位制形式,4028189800,十六進位制值是:F0194C68
004C6A26 |. 8BD8 MOV
EBX, EAX
004C6A28 |. 8BD6 MOV
EDX, ESI
004C6A2A |. 8BC3 MOV
EAX, EBX
004C6A2C |. E8 67FCFFFF CALL MoneyHom.004C6698======>演算法CALL(2)一定要跟進!
---------------------------------------------------------------------------------------------
演算法CALL(2)跟進!來到這裡,下面是程式碼:
---------------------------------------------------------------------------------------------
004C6698 /$ 55 PUSH
EBP
004C6699 |. 8BEC MOV
EBP, ESP
004C669B |. 33C9 XOR
ECX, ECX
004C669D |. 51 PUSH
ECX
004C669E |. 51 PUSH
ECX
004C669F |. 51 PUSH
ECX
004C66A0 |. 51 PUSH
ECX
004C66A1 |. 51 PUSH
ECX
004C66A2 |. 53 PUSH
EBX
004C66A3 |. 56 PUSH
ESI
004C66A4 |. 57 PUSH
EDI
004C66A5 |. 8955 F8 MOV [LOCAL.2],
EDX
004C66A8 |. 8945 FC MOV [LOCAL.1],
EAX
004C66AB |. 33C0 XOR
EAX, EAX
004C66AD |. 55 PUSH
EBP
004C66AE |. 68 70674C00 PUSH MoneyHom.004C6770
004C66B3 |. 64:FF30 PUSH DWORD
PTR FS:[EAX]
004C66B6 |. 64:8920 MOV DWORD
PTR FS:[EAX], ESP
004C66B9 |. 8D45 F4 LEA EAX,
[LOCAL.3]
004C66BC |. E8 8FD9F3FF CALL MoneyHom.00404050
004C66C1 |. 33FF XOR
EDI, EDI=============>EDI清零!
004C66C3 |. BB 06000000 MOV EBX, 6========>6入EBX,控制迴圈次數!
004C66C8 |> 8B45 FC /MOV
EAX, [LOCAL.1]
004C66CB |. B9 0A000000 |MOV ECX, 0A0A====>0A移入ECX!
004C66D0 |. 33D2 |XOR
EDX, EDX=====>EDX清零!
004C66D2 |. F7F1 |DIV
ECX===>EAX=EAX/0A=F0194C68/A=180287A4,商放EAX,餘數放EDX!
004C66D4 |. 8BF2 |MOV
ESI, EDX===========>餘數移入ESI!
004C66D6 |. 03FE |ADD
EDI, ESI===========>EDI=EDI+ESI
004C66D8 |. 8D45 F0 |LEA EAX,
[LOCAL.4]
004C66DB |. 8D56 30 |LEA EDX,
DWORD PTR DS:[ESI+30]
004C66DE |. E8 15DBF3FF |CALL MoneyHom.004041F8
004C66E3 |. 8B55 F0 |MOV EDX,
[LOCAL.4]
004C66E6 |. 8D45 F4 |LEA EAX,
[LOCAL.3]
004C66E9 |. E8 FADBF3FF |CALL MoneyHom.004042E8
004C66EE |. 8B45 FC |MOV EAX,
[LOCAL.1]
004C66F1 |. B9 0A000000 |MOV ECX, 0A
004C66F6 |. 33D2 |XOR
EDX, EDX
004C66F8 |. F7F1 |DIV
ECX===EAX=EAX/0A=F0194C68/A=180287A4
004C66FA |. 8945 FC |MOV [LOCAL.1],
EAX
004C66FD |. 4B |DEC
EBX
004C66FE |.^ 75 C8 \JNZ SHORT
MoneyHom.004C66C8====這裡迴圈6次,每次迴圈把上一次的結果除以A,
====================================================這裡計算前六位註冊碼!除的餘數計算前六位註冊碼,迴圈六次,相
====================================================當於除1000000,所以最後是:4028.189800,前六位註冊碼是它的餘數
====================================================取反,即189800取反是:008981
004C6700 |. BB 02000000 MOV EBX, 2======================2入EBX,控制迴圈次數!
004C6705 |> 8BC7 /MOV
EAX, EDI=======EDI的值是:1A,這個值是怎樣得到的?就是上述餘數逐位相加,
==========================================>注意它的每一位是十六進位制,它是處理後兩位註冊碼,即處理1A,1A的十進位制是26
004C6707 |. B9 0A000000 |MOV ECX, 0A====>0A移入ECX
004C670C |. 33D2 |XOR
EDX, EDX
004C670E |. F7F1 |DIV
ECX========>EAX=EAX/A=1A/A=2
004C6710 |. 8BF2 |MOV
ESI, EDX
004C6712 |. 8D45 EC |LEA EAX,
[LOCAL.5]
004C6715 |. 8D56 30 |LEA EDX,
DWORD PTR DS:[ESI+30]
004C6718 |. E8 DBDAF3FF |CALL MoneyHom.004041F8
004C671D |. 8B55 EC |MOV EDX,
[LOCAL.5]
004C6720 |. 8D45 F4 |LEA EAX,
[LOCAL.3]
004C6723 |. E8 C0DBF3FF |CALL MoneyHom.004042E8
004C6728 |. 8BC7 |MOV
EAX, EDI
004C672A |. B9 0A000000 |MOV ECX, 0A====>0A移入ECX
004C672F |. 33D2 |XOR
EDX, EDX
004C6731 |. F7F1 |DIV
ECX====>EAX=EAX/0A=1A/A=2
004C6733 |. 8BF8 |MOV
EDI, EAX
004C6735 |. 4B |DEC
EBX
004C6736 |.^ 75 CD \JNZ SHORT
MoneyHom.004C6705====>這裡迴圈2次,最後結果:EAX=0,得到後兩位註冊
================================================================>碼,即把1A的十進位制值反過來,得到62
004C6738 |. 8D55 F4 LEA EDX,
[LOCAL.3]
004C673B |. B9 05000000 MOV ECX, 5
004C6740 |. B8 88674C00 MOV EAX, MoneyHom.004C6788
004C6745 |. E8 26DEF3FF CALL MoneyHom.00404570==========>此CALL把上面得到的註冊碼00898162進行處理,使
===============================================================>之變成和機器碼一樣的形式,即:0089-8162
004C674A |. 8B45 F8 MOV EAX,
[LOCAL.2]
004C674D |. 8B55 F4 MOV EDX,
[LOCAL.3]
004C6750 |. E8 4FD9F3FF CALL MoneyHom.004040A4
004C6755 |. 33C0 XOR
EAX, EAX
004C6757 |. 5A POP
EDX
; MoneyHom.004C6A31
004C6758 |. 59 POP
ECX
; MoneyHom.004C6A31
004C6759 |. 59 POP
ECX
; MoneyHom.004C6A31
004C675A |. 64:8910 MOV DWORD
PTR FS:[EAX], EDX
004C675D |. 68 77674C00 PUSH MoneyHom.004C6777
004C6762 |> 8D45 EC LEA
EAX, [LOCAL.5]
004C6765 |. BA 03000000 MOV EDX, 3
004C676A |. E8 05D9F3FF CALL MoneyHom.00404074
---------------------------------------------------------------------------------上面的CALL結束,省略了一部分程式碼!
004C6A31 |> 33C0 XOR
EAX, EAX
004C6A33 |. 5A POP
EDX
; MoneyHom.004C6A8A
004C6A34 |. 59 POP
ECX
; MoneyHom.004C6A8A
004C6A35 |. 59 POP
ECX
; MoneyHom.004C6A8A
004C6A36 |. 64:8910 MOV DWORD
PTR FS:[EAX], EDX
004C6A39 |. 68 4E6A4C00 PUSH MoneyHom.004C6A4E
004C6A3E |> 8D45 FC LEA
EAX, [LOCAL.1]
004C6A41 |. E8 0AD6F3FF CALL MoneyHom.00404050
---------------------------------------------------------------------------------------
004C69F6 |. E8 91FDFFFF CALL MoneyHom.004C678C這個CALL的程式碼如下,主要是瞭解對機器碼的處理:
---------------------------------------------------------------------------------------
004C678C /$ 55 PUSH
EBP
004C678D |. 8BEC MOV
EBP, ESP
004C678F |. 83C4 F8 ADD ESP,
-8
004C6792 |. 53 PUSH
EBX
004C6793 |. 56 PUSH
ESI
004C6794 |. 33D2 XOR
EDX, EDX
004C6796 |. 8955 F8 MOV [LOCAL.2],
EDX
004C6799 |. 8945 FC MOV [LOCAL.1],
EAX
004C679C |. 8B45 FC MOV EAX,
[LOCAL.1]
004C679F |. E8 F0DCF3FF CALL MoneyHom.00404494
004C67A4 |. 33C0 XOR
EAX, EAX
004C67A6 |. 55 PUSH
EBP
004C67A7 |. 68 66684C00 PUSH MoneyHom.004C6866
004C67AC |. 64:FF30 PUSH DWORD
PTR FS:[EAX]
004C67AF |. 64:8920 MOV DWORD
PTR FS:[EAX], ESP
004C67B2 |. 8B55 FC MOV EDX,
[LOCAL.1]
004C67B5 |. B8 80684C00 MOV EAX, MoneyHom.004C6880
004C67BA |. E8 0DDEF3FF CALL MoneyHom.004045CC
004C67BF |. 85C0 TEST
EAX, EAX
004C67C1 |. 76 1F JBE
SHORT MoneyHom.004C67E2
004C67C3 |> 8D55 FC /LEA
EDX, [LOCAL.1]
004C67C6 |. B9 01000000 |MOV ECX, 1
004C67CB |. 92 |XCHG
EAX, EDX
004C67CC |. E8 57DDF3FF |CALL MoneyHom.00404528======>此CALL幹什麼?把機器碼中間的"-"去掉,變成聯在一起的8位數!
004C67D1 |. 8B55 FC |MOV EDX,
[LOCAL.1]=========>處理後的機器碼入EDX,即EDX的值為92269973!
004C67D4 |. B8 80684C00 |MOV EAX, MoneyHom.004C6880
004C67D9 |. E8 EEDDF3FF |CALL MoneyHom.004045CC
004C67DE |. 85C0 |TEST
EAX, EAX
004C67E0 |.^ 77 E1 \JA SHORT
MoneyHom.004C67C3
004C67E2 |> 8B45 FC MOV
EAX, [LOCAL.1]
004C67E5 |. E8 F6DAF3FF CALL MoneyHom.004042E0
004C67EA |. 83F8 08 CMP EAX,
8=================>比較是否是8位!
004C67ED |. 74 04 JE
SHORT MoneyHom.004C67F3====>相等就跳,這裡當然會跳,因為處理過後的機器碼就是8位!
004C67EF |. 33DB XOR
EBX, EBX
004C67F1 |. EB 58 JMP
SHORT MoneyHom.004C684B
004C67F3 |> 8D55 F8 LEA
EDX, [LOCAL.2]=============>跳到此處![LOCAL.2]存放經過處理後的8位機器碼!
004C67F6 |. 8B45 FC MOV EAX,
[LOCAL.1]
004C67F9 |. E8 BA36F4FF CALL MoneyHom.00409EB8
004C67FE |. 33C9 XOR
ECX, ECX
004C6800 |. 33F6 XOR
ESI, ESI
004C6802 |. B8 06000000 MOV EAX, 6=====================>把6送入EAX,即是說取6位機器碼運算!
004C6807 |> 8B55 F8 /MOV
EDX, [LOCAL.2]============>機器碼放入EDX!
004C680A |. 0FB65402 FF |MOVZX EDX, BYTE PTR DS:[EDX+EAX-1]
004C680F |. 83EA 30 |SUB EDX,
30
004C6812 |. 03F2 |ADD
ESI, EDX
004C6814 |. 03C9 |ADD
ECX, ECX
004C6816 |. 8D0C89 |LEA
ECX, DWORD PTR DS:[ECX+ECX*4]
004C6819 |. 03D1 |ADD
EDX, ECX
004C681B |. 8BCA |MOV
ECX, EDX
004C681D |. 48 |DEC
EAX
004C681E |. 85C0 |TEST
EAX, EAX
004C6820 |.^ 75 E5 \JNZ SHORT
MoneyHom.004C6807===>這裡是6次迴圈!對前6位機器碼處理!如何處理?取前6位機器碼,
======================================>把它反過來,即前6位機器碼是:922699,反過來是:996229,然後把它轉化為十六進位制數值,就
======================================>是:F3385,然後把它放入EDX和ECX當中!
004C6822 |. 33D2 XOR
EDX, EDX
004C6824 |. B8 08000000 MOV EAX, 8
004C6829 |> 03D2 /ADD
EDX, EDX
004C682B |. 8D1492 |LEA
EDX, DWORD PTR DS:[EDX+EDX*4]
004C682E |. 8B5D F8 |MOV EBX,
[LOCAL.2] ;
MoneyHom.004C69CA
004C6831 |. 0FB65C03 FF |MOVZX EBX, BYTE PTR DS:[EBX+EAX-1]
004C6836 |. 83EB 30 |SUB EBX,
30
004C6839 |. 03D3 |ADD
EDX, EBX
004C683B |. 48 |DEC
EAX
004C683C |. 83F8 06 |CMP EAX,
6
004C683F |.^ 75 E8 \JNZ SHORT
MoneyHom.004C6829======>這裡又是兩次迴圈,對最後兩位機器碼處理,同上!即73反過來
======================================>是37,轉化為十六進位制值是:25,放入EDX中!然後我們回到演算法CALL(1)當中去看!看上面!
004C6841 |. 3BF2 CMP
ESI, EDX
004C6843 |. 74 04 JE
SHORT MoneyHom.004C6849
004C6845 |. 33DB XOR
EBX, EBX
004C6847 |. EB 02 JMP
SHORT MoneyHom.004C684B
004C6849 |> 8BD9 MOV
EBX, ECX
004C684B |> 33C0 XOR
EAX, EAX
004C684D |. 5A POP
EDX
; MoneyHom.004C69FB
004C684E |. 59 POP
ECX
; MoneyHom.004C69FB
004C684F |. 59 POP
ECX
; MoneyHom.004C69FB
004C6850 |. 64:8910 MOV DWORD
PTR FS:[EAX], EDX
004C6853 |. 68 6D684C00 PUSH MoneyHom.004C686D
004C6858 |> 8D45 F8 LEA
EAX, [LOCAL.2]
004C685B |. BA 02000000 MOV EDX, 2
004C6860 |. E8 0FD8F3FF CALL MoneyHom.00404074
演算法基本搞清楚,下面進行總結:
1、機器碼的形式是:XXXX-YYYY,把中間的“-”去掉,連線成8位數,即:XXXXYYYY,只取前六位機器碼計算註冊碼,後兩位不參與。前6位
機器碼取反,轉換成十六進位制形式,減去常數:034B263C,得一十六進位制值,此值除1,再乘常數:0.9498864000000000,取整數,再除
1000000,取餘數,再取反得到前6位註冊碼,後兩位註冊碼是餘數逐位相加(注意餘數被視作是十六進位制值),然後轉化成十進位制值,取反
後,即為後兩位註冊碼,連線起來,四位一組,中間加“-”即為註冊碼!
計算公式如下:設機器碼的前6位取反後轉換成十六進值為A,前6位註冊碼是SN(1),後兩位註冊碼是sn(2),設六位餘數是:abcdef,餘數
逐位相加後轉化成十進位制的值為gh
SN(1)=[(A-034B263C)/1*0.9498864000000000]/1000000整除後餘數取反=fedcba
sn(2)=a+b+c+d+e+f 的十六進值轉化成十進值=gh取反=hg,註冊碼的形式是:fedc-bahg
2、例證:我的機器碼是:9226-9973,即:92269973,取前6位是:922699,取反是:996229,轉成十六進值是:F3385,
[(A-034B263C)/1*0.9498864000000000]/1000000=[(F3385-34B263C)/1*0.9498864000000000]/1000000=4028.189800,
sn(1)=008981.
1+8+9+8+0+0=1A(26)取反即為62,所以sn(2)=62,我的註冊碼是:0089-8162
註冊資訊存放在:HKEY_LOCAL_MACHINE\SOFTWARE\Moneywise\MoneyHome\RegisterCode
要變成未註冊版,先把未註冊的主程式備份,刪除登錄檔中的健值後,再把備份重新覆蓋,即可變為未註冊版!
相關文章
- 財智老闆通3.04註冊版---註冊演算法分析2003-03-16演算法
- 學習篇---用dede3.0破財智2001家庭理財加強版註冊版 (7千字)2002-03-11
- 財智證券結算軟體2.5 破解註冊碼分析!使用ollydbg 破解註冊動畫!高手莫入! (1千字)2001-11-20動畫
- 炒股理財演算法分析 (3千字)2001-03-31演算法
- 守財奴1.9註冊分析+序號產生器原始碼2015-11-15原始碼
- 炒股理財3.1 演算法分析(15千字)2015-11-15演算法
- 財務分析2007-06-22
- 讓他變成自己的序號產生器!財智家庭理財2001加強版(v3.2)的破解 (7千字)2001-11-05
- 經濟財務-投資理財知識2007-01-21
- supercleaner註冊演算法分析2015-11-15演算法
- 學習篇2----用dede3.0破財智老闆通2.0註冊版 (7千字)2002-03-12
- ITPUB投資理財2007-07-07
- 【投資理財】一起來探索金融理財世界啦2024-10-25
- 美雲智數財務雲共享模式,打破傳統財務模式2021-09-04模式
- SpeedFlash註冊演算法分析(VB)2015-11-15演算法
- 財智系列破解 (3千字)2001-07-22
- Instant Source 註冊演算法分析+註冊器原始碼2015-11-15演算法原始碼
- 財務報表分析2008-05-09
- 嘉倫諮詢:後疫情時代家庭投資理財策略分析及資產配置最佳化建議(附下載)2023-01-05
- 理財網站官網2019-05-11網站
- 免費IDC財務系統,智簡魔方財務系統功能介紹2020-01-03
- 基於BSN的財智聯盟鏈在財稅金融領域的應用2022-04-15
- Screen Demo Maker 3.0 註冊演算法分析2003-07-15演算法
- <<Anti-Hack>> 2.0註冊演算法分析2003-06-06演算法
- Personal Antispy 1.14 註冊演算法分析2015-11-15演算法
- 冰盾濾鏡註冊演算法分析2015-11-15演算法
- 財務分析常用指標2006-06-30指標
- 財務報表分析是在分析什麼?如何選擇財務報表分析工具2021-10-15
- SayMoney for Mac個人理財軟體2020-12-14Mac
- Tina的理財筆記(一)——財商建立和基金定投2020-10-12筆記
- 財務打理不再難:5個技巧幫你成為理財高手2024-07-17
- DLL Show V4.4 註冊演算法分析2015-11-15演算法
- Disk
Chief 1.2 簡單註冊演算法分析2015-11-15演算法
- 女人為什麼必須學習會家庭財富管理?2021-01-01
- 財務分析的基本要求2010-03-26
- 財務分析指標體系2010-04-14指標
- 中金貸投資理財平臺2019-05-11
- 個人理財軟體安裝教程2020-12-29