貼個教學,初學者請進! (11千字)
星期天在家無聊,很久沒有動過軟體了,就隨便找了個LeapFTP的軟體來實踐一下Debug.(我菜,當然不敢找那
些厲害的軟體下手。不然被搞的灰頭土臉的就慘,一天都不會有好心情...扯遠了還是回到程式中來)
Leap2.7程式下載地址:http://download.sohu.com/disk2/it/new/update/0212/lftp271.exe
作者:MachoMan[CCG]
註冊名:[CCG] (China Cracking Group)
註冊碼:CCG1-CC2A-C1GD-UPVE
後附序號產生器
工具 :
soft ice 4.05
dasm32
步驟:
我先在註冊名處輸入'CCG'
然後輸入假註冊碼'31415926'(Sunbird 的老辦法)
再用ice 中的bpx hmemcpy下斷點。再用F12進入程式空間。然後用
bd hmemcpy 遮蔽掉這個斷點
在ice下用 S 30:0 L ffffffff '31415926' 命令查詢我的註冊碼的位置
30:80607e02 30 31 34 31 35 39 32 36-00 00 00 00 00 00 00 00 31415926.............
接下來要做的就是對這個記憶體位置下斷點
bpm 30: 80607e02(不同機器是可能不同的)
然後你就會在下面的位置004875D2發現偽註冊碼被判斷,就是關鍵所在了。
* Referenced by a CALL at Addresses:
|:0048721F , :00487D85
|
:004875AC 55
push ebp
:004875AD 8BEC
mov ebp, esp
:004875AF 83C4F4
add esp, FFFFFFF4
:004875B2 53
push ebx
:004875B3 56
push esi
:004875B4 57
push edi
:004875B5 8955FC
mov dword ptr [ebp-04], edx
:004875B8 8B45FC
mov eax, dword ptr [ebp-04]
:004875BB E8F8CAF7FF call
004040B8
:004875C0 33C0
xor eax, eax
:004875C2 55
push ebp
:004875C3 6819774800 push
00487719
:004875C8 64FF30
push dword ptr fs:[eax]
:004875CB 648920
mov dword ptr fs:[eax], esp
:004875CE C645FB00
mov [ebp-05], 00
:004875D2 8B45FC
mov eax, dword ptr [ebp-04]//你可以發現註冊碼在[ebp-04]的地方'31415926'
:004875D5 E82AC9F7FF call
00403F04//這個函式是判斷註冊碼的個數
:004875DA 83F813
cmp eax, 00000013;註冊碼是0x13(16進位制)=19個字元
:004875DD 0F8520010000 jne 00487703;不是就洗白
:004875E3 8B45FC
mov eax, dword ptr [ebp-04]
:004875E6 8078042D
cmp byte ptr [eax+04], 2D;第5個字元為0x2D對應ASCII '-'
:004875EA 0F8513010000 jne 00487703;不是就洗白
:004875F0 8B45FC
mov eax, dword ptr [ebp-04]
:004875F3 8078092D
cmp byte ptr [eax+09], 2D;第10個字元為0x2D對應ASCII '-'
:004875F7 0F8506010000 jne 00487703;不是就洗白
:004875FD 8B45FC
mov eax, dword ptr [ebp-04]
:00487600 80780E2D
cmp byte ptr [eax+0E], 2D;第15個字元為0x2D對應ASCII '-'
:00487604 0F85F9000000 jne 00487703;不是就洗白,要想註冊就不能洗白!在這裡可以知道註冊碼的
;結構該是'****-****-****-****'這樣的結構*代表一個字元
:0048760A 33F6
xor esi, esi
:0048760C 33FF
xor edi, edi
:0048760E 33C0
xor eax, eax
:00487610 8945F4
mov dword ptr [ebp-0C], eax
:00487613 BB01000000 mov ebx,
00000001
/******************************************************************************************/
//這下面從487618開始就是一個迴圈,它把你輸入的註冊碼進行判斷是否符合要求,其要求是第一組註冊碼
//的最後一個字元為數字,其餘的3個為字元,第二組的倒數第2個為數字,其他三個為字元。第三組的倒數第
//3個為數字,其他三個為字元。如果符合其要求,則把前三組註冊碼分組求和,然後把這個3個和數,及3個
//和數的總和分別做一個這樣的運算 (X+0x41)/0x1a+0x4-5-->最後一組的4個字元,可以知道註冊碼跟使用者名稱
//無關
圖示如下
****-****-****-****
sum1 sum2 sum3||||
||||____________________(sum1+sum2+sum3+0x41)/0x1a+0x41
|||
|||____________________(sum3+0x41)/0x1a+0x41
||
||_____________________
(sum2+0x41)/0x1a+0x41
|
|_______________________(sum1+0x41)/0x1a+0x41
/******************************************************************************************/
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0048769E(C)
|
:00487618 8BC3
mov eax, ebx
:0048761A 2503000080 and eax,
80000003
:0048761F 7905
jns 00487626
:00487621 48
dec eax
:00487622 83C8FC
or eax, FFFFFFFC
:00487625 40
inc eax
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0048761F(C)
|
:00487626 85C0
test eax, eax
:00487628 7516
jne 00487640
:0048762A 8B45FC
mov eax, dword ptr [ebp-04]
:0048762D 8A4418FF
mov al, byte ptr [eax+ebx-01]
:00487631 E84EFFFFFF call
00487584//這個呼叫作用是把你的註冊碼的一個字元進行識別。要求
//其必須其必須是一個數字,在'0'-'9'之間
//
:00487636 84C0
test al, al //判斷返回值符合要求嗎?如果不是,al是置0的
:00487638 0F84C5000000 je 00487703//判斷返回值
:0048763E EB22
jmp 00487662//不能跳
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00487628(C)
|
:00487640 8BC3
mov eax, ebx
:00487642 B905000000 mov ecx,
00000005
:00487647 99
cdq
:00487648 F7F9
idiv ecx
:0048764A 85D2
test edx, edx
:0048764C 7414
je 00487662
:0048764E 8B45FC
mov eax, dword ptr [ebp-04]
:00487651 8A4418FF
mov al, byte ptr [eax+ebx-01]
:00487655 E83EFFFFFF call
00487598//這個呼叫的作用是把你的註冊碼的一個字元進行識別。要求
//其必須是字元,而且其必須在'A'-'Z'之間,你可以根據地址找到
:0048765A 84C0
test al, al//判斷返回值
:0048765C 0F84A1000000 je 00487703//不能跳!
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0048763E(U), :0048764C(C)
|
:00487662 8B45FC
mov eax, dword ptr [ebp-04]
:00487665 8A4418FF
mov al, byte ptr [eax+ebx-01]
:00487669 3C2D
cmp al, 2D //判斷是字元'-'嗎?
:0048766B 742D
je 0048769A//字元不參與計算,跳過迴圈
:0048766D 83FB05
cmp ebx, 00000005//
:00487670 7D0C
jge 0048767E
:00487672 8B55FC
mov edx, dword ptr [ebp-04]
:00487675 25FF000000 and eax,
000000FF
:0048767A 03F0
add esi, eax//esi 中放第一組註冊碼的和
:0048767C EB1C
jmp 0048769A
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00487670(C)
|
:0048767E 83FB0A
cmp ebx, 0000000A
:00487681 7D0C
jge 0048768F
:00487683 8B55FC
mov edx, dword ptr [ebp-04]//[ebp-04]
:00487686 25FF000000 and eax,
000000FF
:0048768B 03F8
add edi, eax//edi第二組註冊碼的和
:0048768D EB0B
jmp 0048769A
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00487681(C)
|
:0048768F 8B55FC
mov edx, dword ptr [ebp-04]
:00487692 25FF000000 and eax,
000000FF
:00487697 0145F4
add dword ptr [ebp-0C], eax//[ebp-0c]中放第三組註冊碼的和
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:0048766B(C), :0048767C(U), :0048768D(U)
|
:0048769A 43
inc ebx
:0048769B 83FB0F
cmp ebx, 0000000F//迴圈完了嗎?
:0048769E 0F8574FFFFFF jne 00487618//如果沒完繼續
:004876A4 8D0C37
lea ecx, dword ptr [edi+esi]//這下邊的就是生成註冊碼的最後4個字元
:004876A7 034DF4
add ecx, dword ptr [ebp-0C]
:004876AA 8BC6
mov eax, esi
:004876AC BB1A000000 mov ebx,
0000001A
:004876B1 99
cdq
:004876B2 F7FB
idiv ebx
:004876B4 83C241
add edx, 00000041
:004876B7 8B45FC
mov eax, dword ptr [ebp-04]
:004876BA 3A500F
cmp dl, byte ptr [eax+0F]
:004876BD 7544
jne 00487703
:004876BF 8BC7
mov eax, edi
:004876C1 BB1A000000 mov ebx,
0000001A
:004876C6 99
cdq
:004876C7 F7FB
idiv ebx
:004876C9 83C241
add edx, 00000041
:004876CC 8B45FC
mov eax, dword ptr [ebp-04]
:004876CF 3A5010
cmp dl, byte ptr [eax+10]
:004876D2 752F
jne 00487703
:004876D4 8B45F4
mov eax, dword ptr [ebp-0C]
:004876D7 BB1A000000 mov ebx,
0000001A
:004876DC 99
cdq
:004876DD F7FB
idiv ebx
:004876DF 83C241
add edx, 00000041
:004876E2 8B45FC
mov eax, dword ptr [ebp-04]
:004876E5 3A5011
cmp dl, byte ptr [eax+11]
:004876E8 7519
jne 00487703
:004876EA 8BC1
mov eax, ecx
:004876EC B91A000000 mov ecx,
0000001A
:004876F1 99
cdq
:004876F2 F7F9
idiv ecx
:004876F4 83C241
add edx, 00000041
:004876F7 8B45FC
mov eax, dword ptr [ebp-04]
:004876FA 3A5012
cmp dl, byte ptr [eax+12]
:004876FD 7504
jne 00487703
:004876FF C645FB01
mov [ebp-05], 01
* Referenced by a (U)nconditional or (C)onditional Jump at Addresses:
|:004875DD(C), :004875EA(C), :004875F7(C), :00487604(C), :00487638(C)
|:0048765C(C), :004876BD(C), :004876D2(C), :004876E8(C), :004876FD(C)
|
:00487703 33C0
xor eax, eax
:00487705 5A
pop edx
:00487706 59
pop ecx
:00487707 59
pop ecx
:00487708 648910
mov dword ptr fs:[eax], edx
:0048770B 6820774800 push
00487720
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0048771E(U)
|
:00487710 8D45FC
lea eax, dword ptr [ebp-04]
:00487713 E86CC5F7FF call
00403C84
:00487718 C3
ret
/*****************************************************************************************/
//判斷數字(ASCII)呼叫
Referenced by a CALL at Address:
|:00487631
|
:00487584 8BD0
mov edx, eax
:00487586 80FA2F
cmp dl, 2F
:00487589 7608
jbe 00487593
:0048758B 80FA3A
cmp dl, 3A
:0048758E 7303
jnb 00487593
:00487590 B001
mov al, 01
:00487592 C3
/****************************************************************************************/
//字元判斷呼叫
* Referenced by a CALL at Address:
|:00487655
|
:00487598 8BD0
mov edx, eax
:0048759A 80FA40
cmp dl, 40
:0048759D 7608
jbe 004875A7
:0048759F 80FA5B
cmp dl, 5B
:004875A2 7303
jnb 004875A7
:004875A4 B001
mov al, 01
:004875A6 C3
ret
//轉摘請保持完整 AllRight Reserved By: [CCG]
相關文章
- 初學者(11) (2千字)2000-05-18
- 初學者請看! (2千字)2000-12-28
- 初學者請進(一篇破解javagirl的心得) (2千字)2000-05-09Java
- 瘋狂單詞破解實錄(初學者請進!) (9千字)2000-08-24
- 初學者請教Jivejon3的問題2008-10-26
- 初學者救教2002-12-02
- 初學者請進,看far.exe的註冊碼! (7千字)2001-04-24
- 給初學者,因為我就是個初學者(1) (3千字)2000-05-03
- 給初學者,因為我就是個初學者(2) (1千字)2000-05-03
- 給初學者,因為我就是個初學者(4) (1千字)2000-05-03
- 初學Hibernate,請教高手2007-04-12
- jive初學者請教安裝問題(線上等!多謝!)2005-05-15
- 初學,一個關於RMI的問題請教!!!2003-09-08
- 【求助】請教一個初學java的小問題2005-07-19Java
- 初學者(7) (4千字)2000-05-05
- 初學者(8) (4千字)2000-05-07
- 初學者(9) (3千字)2000-05-07
- 初學者(10) (8千字)2000-05-14
- 初學者(12) (1千字)2000-06-09
- 初學者(13) (2千字)2000-06-09
- 初學者(14) (5千字)2000-06-10
- 初學者(15) (3千字)2000-07-04
- 初學者(16) (2千字)2000-07-04
- 初學者(17) (1千字)2000-07-04
- 初學者(18) (2千字)2000-07-05
- 初學者(19) (4千字)2000-07-10
- 初學者(20) (3千字)2000-07-15
- 初學者(20) (1千字)2000-08-08
- 初學者(22) (7千字)2000-08-09
- 初學者(23) (7千字)2000-08-13
- 初學者(26) (9千字)2000-08-17
- 初學者(27) (1千字)2000-08-25
- 我初學,請教幾個驅動的問題。(轉)2007-08-12
- 貼一個教程,Ace FTP 1.30 ,菜鳥請進! (13千字)2001-03-27FTP
- diy pe教學2 (11千字)2002-08-09
- 初學者作品(6) (1千字)2000-05-04
- HTML5初學者福利!11個線上學習網站推薦2015-03-05HTML學習網站
- 用NuMega SmartCheck 6.03獲取魔裝網神2.5的註冊碼(初學者請進)
(1千字)2001-02-24