[原創]簡單演算法――函式影像大師V 4.5
下載頁面:http://www.380000.com/download/show.asp?id=fgm
軟體分類:數學研究
執行平臺:Win98/ME/2000/XP
軟體大小:359KB
軟體授權:共享軟體
註冊方式:使用者名稱-註冊碼
軟體作者:Moonsoft
出品日期:2003-1-21
【軟體簡介】:函式影像大師V4.5是一款基於函式、方程和不等式(組)的開放式數學研究平臺。它能畫出任意函式(Y=型函式、X=型函式)、方程(一般方程、自由方程、引數方程)和不等式(組)的影像,支援輔助工具、程式外掛和軟體換膚。
函式影像大師V4.5中:可以繪製任意方程和任意不等式(組)的影像;新增了大量實用的標準函式,包括高斯函式[]和{};重寫了3.x版本的核心,使計算更加穩定;每一個函式、方程和不等式都有自己的名字,這使得你可以在運算中就想呼叫標準函式一樣呼叫自己定義的函式;隨時可以改變當前座標的極限;可以自己定義參加運算的常量;可以利用輔助工具和程式外掛新增功能,而你所需要做的,只是從作者網站上免費下載最新的部件複製到主程式所在資料夾;支援軟體換膚更能適合你的口味和習慣。
函式影像大師V4.5必將成為你的數學得力助手
。
【軟體限制】:試用30天。
【作者宣告】:初學Crack,只是感興趣,沒有其它目的。失誤之處敬請諸位大俠賜教!
【破解工具】:TRW2000娃娃修改版、Ollydbg1.09、PEiD、W32Dasm 10修改版
―――――――――――――――――――――――――――――――――
【過 程】:
既然已經分析了它的同門軟體,索性再看看這個吧。趁著還沒忘記演算法流程,方便點。呵呵。
雖然註冊碼很長,但演算法基本的流程是一樣的,變換了引數而得到其它幾組註冊碼,所以我只是記錄了第一組的演算法過程。
函式影像大師IV.exe
無殼。VC++ 6.0編寫。
使用者名稱:fly
試煉碼:12345-67890-ABCDE-FGHIJ-KLMNO
反彙編,看看參考,很容易就能找到下面的核心。
―――――――――――――――――――――――――――――――――
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040A657(C)
|
:0040A66B
8B8E08010000 mov ecx, dword ptr [esi+00000108]
:0040A671
8D54240C lea edx, dword
ptr [esp+0C]
====>EDX=12345-67890-ABCDE-FGHIJ-KLMNO
:0040A675
8D44242C lea eax, dword
ptr [esp+2C]
====>EAX=fly
使用者名稱
:0040A679
52 push
edx
:0040A67A 50
push eax
:0040A67B E81070FFFF
call 00401690
:0040A680 8B8E08010000
mov ecx, dword ptr [esi+00000108]
:0040A686 E8456EFFFF
call 004014D0
====>關鍵CALL!進入!
:0040A68B
84C0 test
al, al
:0040A68D 6A40
push 00000040
:0040A68F 7410
je 0040A6A1
====>跳則OVER!
:0040A691 8B4E0C mov ecx, dword ptr [esi+0C]
*
Possible Reference to Dialog:
|
:0040A694
687CC54100 push 0041C57C
*
Possible StringData Ref from Data Obj ->"註冊將在程式重啟後生效。"
====>呵呵,勝利女神!
:0040A699
6860C54100 push 0041C560
:0040A69E
51 push
ecx
:0040A69F EB0E
jmp 0040A6AF
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0040A68F(C)
|
*
Possible StringData Ref from Data Obj ->"失敗"
|
:0040A6A1 6858C54100
push 0041C558
*
Possible StringData Ref from Data Obj ->"非法註冊碼!"
====>BAD BOY!
:0040A6A6 6848C54100 push 0041C548
―――――――――――――――――――――――――――――――――
進入關鍵CALL:40A686
call 004014D0
*
Referenced by a CALL at Addresses:
|:00405A69 , :00407C6E , :0040876D
, :0040907B , :0040A553
|:0040A650 , :0040A686
…… ……省 略…… ……
:00401583
8A4C2425 mov cl, byte ptr
[esp+25]
:00401587 B02D
mov al, 2D
====>AL=2D
即:-
:00401589
3AC8 cmp
cl, al
====>比較註冊碼第6個字元是否是 -
:0040158B
7572 jne
004015FF
:0040158D 3844242B
cmp byte ptr [esp+2B], al
====>比較註冊碼第12個字元是否是
-
:00401591 756C
jne 004015FF
:00401593
38442431 cmp byte ptr [esp+31],
al
====>比較註冊碼第18個字元是否是 -
:00401597
7566 jne
004015FF
:00401599 38442437
cmp byte ptr [esp+37], al
====>比較註冊碼第24個字元是否是
-
:0040159D 7560
jne 004015FF
:0040159F
33FF xor
edi, edi
:004015A1 8D742422
lea esi, dword ptr [esp+22]
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004015F4(C)
|
:004015A5
8D4C2418 lea ecx, dword
ptr [esp+18]
:004015A9 8D542440
lea edx, dword ptr [esp+40]
====>EDX=fly
:004015AD
51 push
ecx
:004015AE 57
push edi
:004015AF 52
push edx
:004015B0 8BCD
mov ecx, ebp
:004015B2 E859000000
call 00401610
====>演算法CALL!進入!
====>下面是逐位比較!有一處不同就OVER了!
:004015B7 8A46FE
mov al, byte ptr [esi-02]
====>[esi-02]=12345
:004015BA
8A4C2418 mov cl, byte ptr
[esp+18]
====>[esp+18]=SKI00
第一個大迴圈得出:SKI00
第二個大迴圈得出:A3000
第三個大迴圈得出:3D000
第四個大迴圈得出:10000
第五個大迴圈得出:1Z13G
至此得出我的完整的5部分註冊碼:SKI00-A3000-3D000-10000-1Z13G
:004015BE
3AC1 cmp
al, cl
:004015C0 753D
jne 004015FF
:004015C2 8A4EFF
mov cl, byte ptr [esi-01]
:004015C5 8A442419
mov al, byte ptr [esp+19]
:004015C9
3AC8 cmp
cl, al
:004015CB 7532
jne 004015FF
:004015CD 8A16
mov dl, byte ptr [esi]
:004015CF 8A44241A
mov al, byte ptr [esp+1A]
:004015D3
3AD0 cmp
dl, al
:004015D5 7528
jne 004015FF
:004015D7 8A4601
mov al, byte ptr [esi+01]
:004015DA 8A4C241B
mov cl, byte ptr [esp+1B]
:004015DE
3AC1 cmp
al, cl
:004015E0 751D
jne 004015FF
:004015E2 8A4E02
mov cl, byte ptr [esi+02]
:004015E5 8A44241C
mov al, byte ptr [esp+1C]
:004015E9
3AC8 cmp
cl, al
:004015EB 7512
jne 004015FF
:004015ED 47
inc edi
:004015EE 83C606
add esi, 00000006
:004015F1 83FF05
cmp edi, 00000005
:004015F4
7CAF jl 004015A5
:004015F6
5F pop
edi
:004015F7 5E
pop esi
:004015F8 B001
mov al, 01
====>置1則OK!
:004015FA
5D pop
ebp
:004015FB 83C454
add esp, 00000054
:004015FE C3
ret
*
Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:00401581(C),
:0040158B(C), :00401591(C), :00401597(C), :0040159D(C)
|:004015C0(C), :004015CB(C),
:004015D5(C), :004015E0(C), :004015EB(C)
|
:004015FF 5F
pop edi
:00401600 5E
pop
esi
:00401601 32C0
xor al, al
====>清0則OVER!
:00401603
5D pop
ebp
:00401604 83C454
add esp, 00000054
:00401607 C3
ret
―――――――――――――――――――――――――――――――――
進入演算法CALL:4015B2
call 00401610
*
Referenced by a CALL at Address:
|:004015B2
|
:00401610 8B442404
mov eax, dword ptr [esp+04]
====>EAX=fly
:00401614
8B542408 mov edx, dword
ptr [esp+08]
====>EDX=00000000
:00401618
03D0 add
edx, eax
:0040161A 83EC0C
sub esp, 0000000C
:0040161D B901000000
mov ecx, 00000001
:00401622 8A02
mov al, byte ptr [edx]
:00401624 84C0
test al,
al
:00401626 740E
je 00401636
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401634(C)
|
:00401628
0FBEC0 movsx eax,
al
:0040162B 0FAFC8
imul ecx, eax
1、 ====>ECX=66 * 01=66
2、 ====>ECX=66 * 6C=2B08
3、
====>ECX=2B08 * 79=1456C8
:0040162E
8A4201 mov al, byte
ptr [edx+01]
====>依次取fly字元的HEX值
:00401631
42 inc
edx
:00401632 84C0
test al, al
:00401634 75F2
jne 00401628
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401626(C)
|
:00401636
56 push
esi
:00401637 8B74241C mov
esi, dword ptr [esp+1C]
:0040163B 8BC6
mov eax, esi
:0040163D 33D2
xor edx, edx
:0040163F 6A24
push 00000024
:00401641
8910 mov
dword ptr [eax], edx
:00401643 66895004
mov word ptr [eax+04], dx
:00401647 8D542408
lea edx, dword ptr [esp+08]
:0040164B
52 push
edx
:0040164C 51
push ecx
:0040164D E83D680100
call 00417E8F
====>又是一個子運算CALL!得出下面[esp+10]處的值。進入!
:00401652
8D442410 lea eax, dword
ptr [esp+10]
====>EAX=[esp+10]=ski0
:00401656 50 push eax
* Possible Reference
to Dialog:
|
:00401657 687CC04100
push 0041C07C
:0040165C 56
push
esi
:0040165D E859C70000 call
0040DDBB
====>此CALL將上面所得字元擷取前5位!
====>ESI=ski0
:00401662
83C418 add esp,
00000018
:00401665 33C9
xor ecx, ecx
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00401685(C)
|
:00401667
8A0431 mov al, byte
ptr [ecx+esi]
:0040166A 3C61
cmp al, 61
:0040166C 7C0B
jl 00401679
:0040166E 3C7A
cmp al, 7A
:00401670
7F07 jg 00401679
:00401672
2C20 sub
al, 20
:00401674 880431
mov byte ptr [ecx+esi], al
:00401677 EB08
jmp 00401681
*
Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0040166C(C),
:00401670(C)
|
:00401679 84C0
test al, al
:0040167B 7504
jne 00401681
:0040167D C6043130
mov byte ptr [ecx+esi],
30
* Referenced by a
(U)nconditional or (C)onditional Jump at Addresses:
|:00401677(U), :0040167B(C)
|
:00401681
41 inc
ecx
:00401682 83F905
cmp ecx, 00000005
:00401685 7CE0
jl 00401667
====>上面這個小迴圈是將1e9tt中的小寫字母轉換為大寫字母!
====>ESI=ski00 轉換為 SKI00
不夠5位的後面補0!
:00401687
5E pop
esi
:00401688 83C40C
add esp, 0000000C
:0040168B C20C00
ret 000C
―――――――――――――――――――――――――――――――――
進入子運算CALL:0040164D
call 00417E8F
再進入:00417EAC call 00417E33
*
Referenced by a CALL at Addresses:
|:00417E26 , :00417EAC
|
:00417E33
55 push
ebp
:00417E34 8BEC
mov ebp, esp
:00417E36 837D1400
cmp dword ptr [ebp+14], 00000000
:00417E3A 8B4D0C
mov ecx, dword ptr [ebp+0C]
:00417E3D
53 push
ebx
:00417E3E 56
push esi
:00417E3F 57
push edi
:00417E40 740B
je 00417E4D
:00417E42 8B7508
mov esi, dword ptr
[ebp+08]
:00417E45 C6012D
mov byte ptr [ecx], 2D
:00417E48 41
inc ecx
:00417E49 F7DE
neg esi
:00417E4B
EB03 jmp
00417E50
* Referenced
by a (U)nconditional or (C)onditional Jump at Address:
|:00417E40(C)
|
:00417E4D
8B7508 mov esi,
dword ptr [ebp+08]
====>ESI=001456C8
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00417E4B(U)
|
:00417E50
8BF9 mov
edi, ecx
* Referenced
by a (U)nconditional or (C)onditional Jump at Address:
|:00417E76(C)
|
:00417E52
8BC6 mov
eax, esi
:00417E54 33D2
xor edx, edx
:00417E56 F77510
div [ebp+10]
====>[ebp+10]=24
1、 ====>EDX=001456C8 % 24=00
2、
====>EDX=000090A2 % 24=12
3、
====>EDX=00000404 % 24=14
4、 ====>EDX=0000001C
% 24=1C
:00417E59
8BC6 mov
eax, esi
:00417E5B 8BDA
mov ebx, edx
:00417E5D 33D2
xor edx, edx
:00417E5F F77510
div [ebp+10]
1、
====>EAX=001456C8 / 24=000090A2
2、
====>EAX=000090A2 / 24=00000404
3、
====>EAX=00000404 / 24=0000001C
4、
====>EAX=0000001C / 24=00000000
:00417E62
83FB09 cmp ebx,
00000009
:00417E65 8BF0
mov esi, eax
:00417E67 7605
jbe 00417E6E
:00417E69 80C357
add bl, 57
2、
====>BL=12 + 57=69 即字元:i
3、
====>BL=14 + 57=6B 即字元:k
4、
====>BL=1C + 57=73 即字元:s
:00417E6C EB03 jmp 00417E71
* Referenced
by a (U)nconditional or (C)onditional Jump at Address:
|:00417E67(C)
|
:00417E6E
80C330 add bl, 30
1、 ====>BL=00 + 30=30 即字元:0
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00417E6C(U)
|
:00417E71
8819 mov
byte ptr [ecx], bl
:00417E73 41
inc ecx
:00417E74 85F6
test esi, esi
:00417E76 77DA
ja 00417E52
====>迴圈!
:00417E78
802100 and byte
ptr [ecx], 00
:00417E7B 49
dec ecx
*
Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00417E88(C)
|
:00417E7C
8A17 mov
dl, byte ptr [edi]
:00417E7E 8A01
mov al, byte ptr [ecx]
:00417E80 8811
mov byte ptr [ecx], dl
:00417E82
8807 mov
byte ptr [edi], al
:00417E84 49
dec ecx
:00417E85 47
inc edi
:00417E86 3BF9
cmp edi, ecx
:00417E88
72F2 jb 00417E7C
====>這個小迴圈是將0iks倒序為:ski0
:00417E8A
5F pop
edi
:00417E8B 5E
pop esi
:00417E8C 5B
pop ebx
:00417E8D 5D
pop ebp
:00417E8E C3
ret
―――――――――――――――――――――――――――――――――
【完 美 爆 破】:
呵呵,完美爆破很簡單。
00401601
32C0 xor
al, al
改為: B001
mov al, 01 就OK了!與4015F8處相映成趣!
―――――――――――――――――――――――――――――――――
【註冊資訊儲存】:
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\FgmIV]
"User
Name"=hex:66,6c,79,00,34,fb,6d,00,68,fb,6d,00,62,00,00,00,86,01,00,00,7d,\
03,00,00,d0,01,00,00,d7,03
"Register Code"=hex:53,4b,49,30,30,2d,41,33,30,30,30,2d,33,44,30,30,30,2d,31,\
30,30,30,30,2d,31,5a,31,33,47,00
―――――――――――――――――――――――――――――――――
【整 理】:
使用者名稱:fly
註冊碼:SKI00-A3000-3D000-10000-1Z13G
―――――――――――――――――――――――――――――――――
Cracked By 巢水工作坊――fly【OCN】
2003-4-12 2:00
相關文章
- 簡單演算法――熱鍵大師1.132003-03-06演算法
- 【原創】簡單替換加密2015-11-15加密
- 【原創】星空視訊俱樂部 V1.75註冊演算法簡析2015-11-15演算法
- 原創:oracle聚合函式介紹2020-04-06Oracle函式
- 【原創】cast() 函式的用處2008-06-01AST函式
- 原創-XNview v1.65演算法分析2015-11-15View演算法
- 簡單演算法――Windows設定大師 2003 V2.0 Build
04202015-11-15演算法WindowsUI
- 簡單的printf函式與scnaf函式2016-12-15函式
- 簡單演算法――古今大戰80分 V3.0 Beta2015-11-15演算法
- 函式表示式和函式宣告簡單介紹2017-03-20函式
- Python函式簡單示例2016-10-25Python函式
- vue tendet函式簡單分享2017-09-04Vue函式
- atoi函式簡單實現2016-07-10函式
- jquery函式$.proxy簡單示例2013-12-23jQuery函式
- 【原創】淺談指標(十一)alloca函式2022-03-26指標函式
- 【原創】SYS_CONTEXT函式的用法2008-05-07Context函式
- 檔案管理軟體管理大師演算法簡析!(簡單浮點)2015-11-15演算法
- 快取函式的簡單使用2021-08-20快取函式
- $.ajax()函式用法簡單例項2017-03-15函式單例
- javascript匿名函式簡單介紹2017-03-21JavaScript函式
- 一些簡單的函式2017-07-27函式
- 函式指標簡單的列子2016-05-12函式指標
- [原創]演算法淺探――OpenCanvas
V2.24 漢化版2015-11-15演算法Canvas
- 簡單介紹JS函式防抖和函式節流2021-05-28JS函式
- DeTitle V1.33簡單演算法分析2003-08-06演算法
- 簡單演算法――小護士 V1.22015-11-15演算法
- 簡單演算法――文字反斗星 V4.1.0.52015-11-15演算法
- [原創]Focus
Magic V3.01 註冊演算法分析2015-11-15演算法
- 【原創】Ubuntu安裝和簡單使用初感2020-04-05Ubuntu
- 簡單的檔案快取函式2019-02-16快取函式
- javascript call()函式用法簡單介紹2017-03-16JavaScript函式
- javascript trim()函式用法簡單介紹2017-03-24JavaScript函式
- getFullYear()函式用法簡單介紹2017-03-23函式
- document.close()函式簡單介紹2017-03-23函式
- js isPrototypeOf()函式用法簡單介紹2017-03-20JS函式
- javascript高階函式簡單介紹2017-04-10JavaScript函式
- jQuery建構函式簡單介紹2017-04-06jQuery函式
- javascript函式呼叫方式簡單介紹2017-04-15JavaScript函式