書香門第 V1.23 Build 1638
書香門第 V1.23 Build 1638
軟體大小:
665 KB
軟體語言: 簡體中文
軟體類別: 國產軟體 / 共享版 / 電子閱讀
應用平臺: Win9x/NT/2000/XP
介面預覽:
加入時間: 2003-03-13 08:28:43
下載次數: 7419
推薦等級:
聯
系 人: gentlebreeze@vip.163.com
開 發 商: http://www.gentle-breeze.com
軟體介紹:
《書香門第》是一款適合於真正讀書迷的電子小說、文字閱讀軟體,它外表並不花哨,但對於長時間、大量閱讀的讀書迷,
卻最舒適、體貼、細緻,因為它具有十二個鮮明特點:1.
多達27種各種質感的視窗背景、頁面背景可供選擇,總共超過700種
背景組合,為讀書迷提供最高舒適度和最大程度的視力保護。2. 強大、智慧化的自動排版功能,並可以隨意設定字型大小、顏
色、行距、標題行。3.
極其高速的排版速度:目前主流機器上排版速度超過一萬頁/秒,所以通常你根本無法感覺到排版過程。
4. 高速的DirectDraw圖形引擎,翻頁尋跡流暢自如。5.附帶的html轉換、合成工具能夠迅速依次將一批html檔案轉換且合併
為一個大的文字檔案,方便閱讀。6.寬廣的平臺適用性:從486/win95到最新P4/XP都能從容應對。7.體貼的左手鍵操作,使你
從此擺脫長期右手操作滑鼠、鍵盤帶來的疲勞。8.與頁面字數成正比的自動翻頁間隔,自然優於呆板的固定翻頁間隔。9.可以
選擇使用視窗模式(尋跡方便)或全螢幕模式(閱讀效果更好)。10.全書遍歷/測試功能,保護你的計算機,節約能源。
11.搜尋功能方便讀者在書中查詢。12.
具有強於word和IE的漢字亂碼糾錯功能。
【作者宣告】:本人是個初學者,只是感興趣,沒有其它目的。失誤之處敬請諸位大俠賜教!
本人感謝軟體作者,請見諒了.
【破解工具】:0llydbg v1.09cn
W32Dasm8.93黃金版
―――――――――――――――――――――――――――――――――
【過 程】:
W32Dasm8.93黃金版反彙編,查詢關鍵提示。
0040373C
E81A6C0100 call 0041A35B
:00403741
83F818 cmp eax,
00000018
====>註冊碼是否24位
:00403744
0F85C0000000 jne 0040380A
:0040374A A1280E4500
mov eax, dword ptr [00450E28]
:0040374F 83F804
cmp eax, 00000004
====>E-mail不能少於4位
:00403752
0F8CB2000000 jl 0040380A
:00403758
8364241000 and dword ptr [esp+10],
00000000
:0040375D EB05
jmp 00403764
*
Reference To: USER32.SendMessageA, Ord:0214h
|
:004037B0
FF15F4444200 Call dword ptr [004244F4]
:004037B6
80BEC000000000 cmp byte ptr [esi+000000C0],
00
:004037BD 742F
je 004037EE
*
Possible StringData Ref from Data Obj ->" 祝賀你
<=== 關鍵詞,在上面中斷
->"
你已經成為了《書香門第》註冊使用者!"
:004037BF 6898C64200
push 0042C698
以下是用0llydbg
v1.09cn跟蹤的:
填e_mail : fxyang@163.com
試驗碼 : 789456123012345678901234
00403712
PUSH EDI
00403713 MOV EDI, zbook.00452268
; ASCII "fxyang@163.com"
00403718
LEA EBP, DWORD PTR DS:[ESI+13C]
0040371E PUSH
20
00403720 PUSH EDI
; EDI=00452268
,ASCII "fxyang@163.com"
00403721 MOV ECX, EBP
00403723
CALL zbook.0041A35B
00403728 LEA EBX,
DWORD PTR DS:[ESI+100]
0040372E PUSH 20
00403730 PUSH
zbook.00451A48 ;
ASCII "789456123012345678901234"
00403735 MOV
ECX, EBX
00403737 MOV DWORD PTR DS:[450E28], EAX
0040373C
CALL zbook.0041A35B
00403741 CMP EAX,
18
00403744 JNZ zbook.0040380A
0040374A MOV
EAX, DWORD PTR DS:[450E28]
0040374F CMP EAX, 4
00403752
JL zbook.0040380A
00403758 AND
DWORD PTR SS:[ESP+10], 0
0040375D JMP SHORT zbook.00403764
0040375F
MOV EAX, DWORD PTR DS:[450E28]
00403764 PUSH
EAX
; EAX=E
00403765 IMUL EAX,
DWORD PTR SS:[ESP+14] ; EAX=EAX*SS:[12F454]=E*0=0||EAX*SS:[12F454]=E*01=E
0040376A
ADD EAX, zbook.00451A68 ;
ASCII "fxyang@163.comfxyang@163.com.......
0040376F PUSH
EDI
; EDI=00452268 ,ASCII "fxyang@163.com"
00403770
PUSH EAX
; EAX=00451A76
00403771 CALL
zbook.004083E0 ;
把e_mail傳送到451A68開始的地址中一共40h組
00403776 ESP, 0C
00403779 INC
DWORD PTR SS:[ESP+10] ; SS:[12F454]=0
++
0040377D CMP DWORD PTR SS:[ESP+10], 40 ;
SS:[12F454]=1 ++
00403782 JL SHORT zbook.0040375F
; 把e_mail傳送到451A68開始的地址中一共40h組連線起來
00403784
MOV EDI, zbook.00451248 ;
ASCII "789456123012345678901234"
00403789 PUSH
20
0040378B PUSH zbook.00451A48
; ASCII "789456123012345678901234"
00403790
PUSH EDI
00403791 CALL zbook.004083E0
00403796
ADD EDI, 20
00403799 ADD ESP, 0C
0040379C
CMP EDI, zbook.00451A48 ;
ASCII "789456123012345678901234"
004037A2 JL
SHORT zbook.00403789 ; 把試驗碼傳送到451248-451A48開始的記憶體中
004037A4
XOR EDI, EDI
004037A6 PUSH EDI
; /lParam => 0
004037A7 PUSH
EDI
; |wParam => 0
004037A8
PUSH 1501
; |Message
= MSG(1501)
004037AD PUSH DWORD PTR DS:[ESI+1C]
; ||hWnd = B025C
004037B0
CALL DWORD PTR DS:[<&USER32.SendMessageA>] ;
\這個api是轉移到計算註冊碼地址的call
004037B6 CMP BYTE PTR DS:[ESI+C0],
0 ; DS:[ESI+C0]=DS:[12FAF4]註冊標記
004037BD
JE SHORT zbook.004037EE
; 這裡跳到錯誤的提示框
004037BF PUSH
zbook.0042C698
; 到這裡就成功
004037C4 MOV
DWORD PTR DS:[452A68], EDI
004037CA CALL zbook.00405666
//因為上面的跳轉是透過API的方式,所以太難找到核心
=============================================================================
CALL
DWORD PTR DS:[<&USER32.SendMessageA>] ; \這個api是轉移到計算註冊碼地址的call
|
|
77DF1D07
CALL DWORD PTR SS:[EBP+8]
|
CALL DWORD PTR SS:[EBP+8]
|
00403860
MOV EBP, ESP
00403862 SUB ESP, 100
00403868
PUSH ESI
00403869 PUSH 20
0040386B
CALL zbook.004088FB
00403870 PUSH 40
00403872
MOV ESI, zbook.00451148
00403877 CDQ
00403878
POP ECX
; ECX=40
00403879 IDIV ECX
; EAX=13CA IDIV
ECX=40 ==>EAX=4F EDX=A
0040387B SHL EDX,
5 ; EDX=A SHL 5=140
0040387E
ADD EDX, zbook.00451248 ; EDX=EDX+451248(
ASCII "789456123012345678901234")=
00403884 PUSH EDX
; EDX=zbook.00451388,ASCII
"789456123012345678901234")
00403885 PUSH ESI
; //經過上面的漫長的轉折終於來到試驗碼的地址
00403886
CALL zbook.004083E0 ; 00451148
<==ASCII "789456123012345678901234")
0040388B PUSH
0FF
00403890 LEA EAX, [LOCAL.64]
00403896 PUSH
0
00403898 PUSH EAX
00403899 CALL
zbook.004087A0
0040389E ADD ESP, 18
004038A1
PUSH DWORD PTR DS:[450E28] ; DS:[450E28]=0E (e_mail的長度)
004038A7
CALL zbook.004088FB ; 這個CALL是取EAX=69F9
(常數)
004038AC PUSH 40
004038AE CDQ
004038AF
POP ECX
004038B0 IDIV ECX
; EAX=69F9 IDIV
ECX=40 ==>EAX=1A7 EDX=39
004038B2 LEA EAX,
[LOCAL.64]
004038B8 IMUL EDX, DWORD PTR DS:[450E28] ;
EDX=EDX*DS:[450E28]=39*0E=31E
004038BF ADD EDX, zbook.00451A68
; ASCII "fxyang@163.comfxyang@163.com
004038C5
PUSH EDX
; zbook.00451D86
004038C6 PUSH
EAX
; //用上面的方法取計算的引數從451D86處做基數
004038C7 CALL zbook.004083E0
004038CC
PUSH 0C
004038CE PUSH ESI
; ESI=00451148
,ASCII "789456123012345678901234")
004038CF PUSH zbook.004510C8
; ASCII "驤溻潷憮纊祧"
004038D4
CALL zbook.004083E0 ;
取試驗碼的前12位==>004510C8
004038D9 PUSH 0C
004038DB
PUSH zbook.00451154
004038E0 PUSH zbook.00451048
004038E5
CALL zbook.004083E0 ;
取試驗碼的後12位==>00451048
004038EA MOV EAX, DWORD PTR
DS:[450E28]; EAX=E
004038EF AND BYTE PTR DS:[451054],
0
004038F6 AND BYTE PTR DS:[4510D4], 0
004038FD ADD
ESP, 24
00403900 XOR EDX, EDX
00403902
TEST EAX, EAX
00403904 JLE SHORT zbook.00403934
00403906
PUSH EBX
00403907 PUSH EDI
00403908
LEA EBX, DWORD PTR DS:[EAX-1] ; EBX=E-1=D
0040390B
/LEA EDI, DWORD PTR SS:[EBP+EDX-100] ; EDI<==0012F21C,(ASCII
"fxyang@163.com")
00403912 |MOV CL, BYTE PTR DS:[EDI]
; CL=DS:[12F21C]=66 ('f')
00403914
|CMP CL, 40
00403917 |JE SHORT zbook.0040391E
00403919
|CMP CL, 2E
0040391C |JNZ SHORT zbook.0040392D
0040391E
|CMP EDX, EBX
00403920 |JGE SHORT zbook.0040392B
00403922
|MOV ECX, EBX
00403924 |LEA ESI, DWORD PTR DS:[EDI+1]
00403927
|SUB ECX, EDX
00403929 |REP MOVS BYTE PTR ES:[EDI],
BYTE PTR DS:[ESI]
0040392B |DEC EAX
0040392C |DEC
EBX
0040392D |INC EDX
0040392E |CMP EDX, EAX
00403930
\JL SHORT zbook.0040390B ;
這一段迴圈把e_mail中的@和.取出
00403932 POP EDI
//只取e_mail的前12位
00403933
POP EBX
00403934 CMP EAX, 0C
00403937
POP ESI
00403938 JGE SHORT zbook.00403952
0040393A
PUSH 0C
0040393C POP ECX
0040393D
SUB ECX, EAX
0040393F LEA EAX, DWORD
PTR SS:[EBP+EAX-100]
00403946 PUSH ECX
00403947 PUSH
30
00403949 PUSH EAX
0040394A CALL
zbook.004087A0
0040394F ADD ESP, 0C
00403952
AND BYTE PTR SS:[EBP-F4], 0
00403959 CALL
zbook.004039A5 ; 關鍵的計算部分
0040395E
PUSH 0C
00403960 LEA EAX, [LOCAL.64]
; EAX<==0012F21C,(ASCII
"fxyang163com")
00403966 PUSH zbook.004511C8
; 004511C8<== E6 E4 E4 E2 E6 EC
F7 F5 F1 FD F5 FF
0040396B PUSH EAX
; EAX<==0012F21C,(ASCII
"fxyang163com")
0040396C CALL zbook.00408E10
; 應該是比較部分
00403971 ADD
ESP, 0C
00403974 TEST EAX, EAX
; 關鍵的比較
00403976 JNZ
SHORT zbook.00403993 ; 關鍵的跳轉
00403978
AND BYTE PTR DS:[450C23], AL
0040397E AND BYTE PTR DS:[450C22],
AL
00403984 AND BYTE PTR DS:[450C21], AL
0040398A AND
BYTE PTR DS:[450C20], AL
00403990 INC EAX
00403991
LEAVE
00403992 RETN
00403993 MOV BYTE PTR
DS:[450C22], 78
; 標記
0040399A >MOV BYTE PTR DS:[450C23], 79
004039A1
XOR EAX, EAX
004039A3 LEAVE
---------------------------------------------------------------
CALL
zbook.004039A5 ; 關鍵的計算部分
|
004039A5
PUSH 0C
004039A7 CALL zbook.004039AE
004039AC
POP ECX
004039AD RETN
---------------------------------------------------------------
CALL
zbook.004039AE 終於來到計算的地方,頭髮炸了
|
|
004039AE
PUSH ESI
004039AF MOV ESI, DWORD PTR
SS:[ESP+8] ; ESI=0C (e_mail去掉@和.後的長度)
004039B3 XOR
ECX, ECX
004039B5 PUSH EDI
004039B6 TEST
ESI, ESI
004039B8 JLE SHORT zbook.004039DA
//第一次的關鍵計算
004039BA /LEA EAX,
DWORD PTR DS:[ECX+ESI] ; EAX=ECX+ESI=0 ++ C=C++
004039BD |PUSH
9
004039BF |CDQ
004039C0 |POP EDI
; EDI=9
004039C1 |IDIV EDI
;
EAX=C IDIV EDI=9 ==>EAX=1 EDX=3
004039C3 |MOV
AL, 8
004039C5 |SUB AL, DL
; AL=8-3=5
004039C7
|MOV BYTE PTR DS:[ECX*2+451148], DL ; 00451148=03
004039CE
|MOV BYTE PTR DS:[ECX*2+451149], AL ; AL=05
004039D5
|INC ECX
004039D6 |CMP ECX, ESI
; 計算的次數=12
004039D8 \JL
SHORT zbook.004039BA
004039DA AND
BYTE PTR DS:[ESI*2+451148], 0
004039E2 PUSH EBX
004039E3
PUSH EBP
004039E4 LEA EDI, DWORD PTR
DS:[ESI+451148]
004039EA PUSH ESI
; ESI=0C
004039EB MOV
EBP, zbook.00450F48
004039F0 PUSH EDI
; zbook.00451154
004039F1 PUSH
EBP
004039F2 CALL zbook.004083E0
; 把後12位==>00450F48 (00 08 01 07 02 06 03 05 04 04 05 03)
004039F7
MOV EBX, zbook.00451148
004039FC PUSH ESI
004039FD
PUSH EBX
004039FE PUSH EDI
004039FF
CALL zbook.004083E0
; 把前12位==>00451145 (03 05 04 04 05 03 06 02 07 01 08 00)
00403A04
PUSH ESI
00403A05 PUSH EBP
00403A06
PUSH EBX
00403A07 CALL zbook.004083E0
; 把前12位倒置後==>00451148 (00 08 01 07 02 06 03 05 04 04 05 03)
00403A0C
ADD ESP, 24
00403A0F XOR EBX, EBX
00403A11
TEST ESI, ESI
****************************************************************
第一次計算的總結:
1.計算的引數是一個固定值C
2.這段計算是C MOD 9 的值設M 然後用8-M得到值設N,再把C++繼續
3.取得到的陣列的後12位與前12位值倒置後的陣列連線成24位的陣列
4.得到一組值==>00451148,
N=00 08 01 07 02 06 03 05 04 04 05 03 03 05
04 04 05 03 06 02 07 01 08 00
5.就是說上面的陣列是固定的.
004039DA
AND BYTE PTR DS:[ESI*2+451148], 0
004039E2 PUSH
EBX
004039E3 PUSH EBP
004039E4 LEA
EDI, DWORD PTR DS:[ESI+451148]
004039EA PUSH ESI
; ESI=0C
004039EB MOV EBP, zbook.00450F48
004039F0
PUSH EDI
; zbook.00451154
004039F1
PUSH EBP
004039F2 CALL zbook.004083E0
; 把後12位==>00450F48
(00 08 01 07 02 06 03 05 04 04 05 03)
004039F7 MOV EBX,
zbook.00451148
004039FC PUSH ESI
004039FD PUSH
EBX
004039FE PUSH EDI
004039FF CALL
zbook.004083E0 ;
把前12位==>00451145 (03 05 04 04 05 03 06 02 07 01 08 00)
00403A04 PUSH
ESI
00403A05 PUSH EBP
00403A06 PUSH
EBX
00403A07 CALL zbook.004083E0
; 把前12位倒置後==>00451148 (00 08 01
07 02 06 03 05 04 04 05 03)
00403A0C ADD ESP, 24
00403A0F
XOR EBX, EBX
00403A11 TEST ESI, ESI
00403A13
JLE SHORT zbook.00403A66 //第二次的關鍵計算:
00403A15
/MOV AL, BL
00403A17 |MOV CL, BYTE PTR DS:[EBX+4510C8]
; CL <==DS:[EBX+4510C8]=37 ('7') 試驗碼的前12位"789456123012"
00403A1D
|INC AL
00403A1F |MOV DL, BYTE PTR DS:[EBX+451048]
; DL <==DS:[EBX+451048]=33 ('3') 試驗碼的後12位"345678901234"
00403A25
|IMUL BL
; BL=0
00403A27 |LEA
EDI, DWORD PTR DS:[EBX+EBX]
00403A2A |INC AL
00403A2C |AND
AL, 0F
00403A2E |SUB CL, BYTE PTR DS:[EDI+451148]
; CL=CL-DS:[451148]=37-00=37||=38-01(第一次計算的第三位)=37
00403A34 |SUB
DL, BYTE PTR DS:[EDI+451149] ; DL=DL-DS:[451149]=33-08=2B
00403A3A
|MOV BYTE PTR DS:[450F40], AL
00403A3F |SUB CL,
41
; CL=CL-41=37-41=F6
00403A42 |SUB DL, 41
; DL=DL-41=2B-41=EA
00403A45
|XOR CL, AL
; CL=CL XOR AL=F6 XOR 01=F7
00403A47 |XOR
DL, AL
; DL=DL XOR AL=EA XOR 01=EB
00403A49 |MOV BYTE
PTR DS:[EBX+4510C8], CL ; //得到新值DS:[4510C8]<==( F7 F5 F1 FD F5 FF
E6 E4 E4 E2 E6 EC )
00403A4F |MOV BYTE PTR DS:[EBX+451048], DL
; //得到新值DS:[451048]<==( EB EF E9 FD F7 FB F8 E2 E4 E4 FE F6 )
00403A55
|INC EBX
; EBX++
00403A56 |MOV
BYTE PTR DS:[EDI+450F48], CL ; CL =F7
00403A5C |CMP
EBX, ESI
; 計算的次數=C (12D)
00403A5E |MOV BYTE PTR DS:[EDI+450F49],
DL ; //把試驗碼的前12位
00403A64 \JL SHORT zbook.00403A15
00403A66 PUSH ESI
; ESI=C
00403A67
PUSH EBP
; 上面的新值地址
00403A68 PUSH
zbook.00451048 ; 上面的新值的第二部分地址
00403A6D
CALL zbook.004083E0
; 第一部分的值==>00451048
00403A72 LEA EDI,
DWORD PTR DS:[ESI+450F48]; EDI=00450F54,後12位地址
00403A78 PUSH
ESI
00403A79 MOV EBX, zbook.004510C8
; ASCII "驤溻潷憮纊祧"
00403A7E PUSH
EDI
00403A7F PUSH EBX
; 第一部分的值==>004510C8
00403A80
CALL zbook.004083E0
; 後12組==>004510C8
00403A85 PUSH ESI
00403A86
PUSH EBX
00403A87 PUSH EBP
00403A88
CALL zbook.004083E0
; 連線後的後12位==>00450F48
00403A8D PUSH
ESI
00403A8E PUSH zbook.00451048
; 連線後的後12位==>00450F48
00403A93
PUSH EDI
00403A94 CALL zbook.004083E0
; 連線後的前12位==>00450F54
00403A99
ADD ESP, 30
00403A9C XOR EAX, EAX
00403A9E
TEST ESI, ESI
00403AA0 POP EBP
00403AA1
POP EBX
00403AA2 JLE SHORT zbook.00403AC0
00403AA4
/MOV CL, BYTE PTR DS:[EAX*2+450F49] ; CL<==DS:[450F49]=F8
00403AAB
|SHL CL, 4
; CL=CL SHL 4=F8 SHL 4 =80
00403AAE
|OR CL, BYTE PTR DS:[EAX*2+450F48] ; CL= CL OR DS:[450F48]=80
OR E6=E6
00403AB5 |INC EAX
; EAX++
00403AB6
|CMP EAX, ESI
; ESI=C
00403AB8 |MOV BYTE PTR DS:[EAX+4511C7],
CL ; CL==>DS:[4511C8]=E6
00403ABE \JL SHORT
zbook.00403AA4 //迴圈取值
00403AC0 AND
BYTE PTR DS:[ESI+4511C8], 0
; 004511C8<== E6 E4 E4 E2 E6 EC F7 F5 F1 FD F5 FF
00403AC7
POP EDI
00403AC8 POP ESI
00403AC9
RETN
---------------------------------------------
CALL zbook.00408E10 ; 應該是比較部分
00408E10
MOV EAX, DWORD PTR SS:[ESP+C]
00408E14 TEST
EAX, EAX
; EAX=C
00408E16 JE SHORT zbook.00408E5C
00408E18
MOV EDX, DWORD PTR SS:[ESP+4]
; EDX<==0012F21C,(ASCII "fxyang163com")
00408E1C
PUSH ESI
00408E1D PUSH EDI
00408E1E
MOV ESI, EDX
; ESI<==0012F21C,(ASCII "fxyang163com")
00408E20 MOV EDI, DWORD PTR SS:[ESP+10]
; EDI<==004511C8== E6 E4 E4 E2 E6 EC F7 F5 F1 FD F5 FF
00408E24
OR EDX, EDI
00408E26 AND EDX,
3
00408E29 JE SHORT zbook.00408E5D
00408E2B TEST
EAX, 1
00408E30 JE SHORT zbook.00408E3D
00408E32 MOV CL, BYTE PTR DS:[ESI]
00408E34
CMP CL, BYTE PTR DS:[EDI]
00408E36 JNZ
SHORT zbook.00408E8A
00408E38 INC ESI
00408E39 INC
EDI
00408E3A DEC EAX
00408E3B JE
SHORT zbook.00408E5A
00408E3D /MOV
CL, BYTE PTR DS:[ESI] ; 逐位比較,相同就成功(可能嗎?)
00408E3F
|MOV DL, BYTE PTR DS:[EDI]
00408E41 |CMP CL, DL
00408E43
|JNZ SHORT zbook.00408E8A
00408E45 |MOV CL, BYTE
PTR DS:[ESI+1]
00408E48 |MOV DL, BYTE PTR DS:[EDI+1]
00408E4B
|CMP CL, DL
00408E4D |JNZ SHORT zbook.00408E8A
00408E4F
|ADD EDI, 2
00408E52 |ADD ESI, 2
00408E55 |SUB
EAX, 2
00408E58 \JNZ SHORT zbook.00408E3D
00408E5A
POP EDI
00408E5B POP ESI
00408E5C
RETN
00408E5D MOV ECX, EAX
;EAX=C
00408E5F AND
EAX, 3
00408E62 SHR ECX, 2
00408E65 JE
SHORT zbook.00408E92 ; 上面不成立就到這裡
00408E67
REPE CMPS DWORD PTR ES:[EDI], DWORD PTR DS:[ESI>
; 比較fxya和"E6E4E4E2"-前四位相同
00408E69 JE SHORT zbook.00408E92
; 關鍵的跳轉,相同就註冊成功.完美暴破點
00408E6B
MOV ECX, DWORD PTR DS:[ESI-4] ; ECX<==DS:[12F21C]=61797866
00408E6E
MOV EDX, DWORD PTR DS:[EDI-4] ; EDX<==DS:[4511C8]=E2E4E4E6
00408E71
CMP CL, DL
00408E73 JNZ SHORT zbook.00408E85
00408E75
CMP CH, DH
00408E77 JNZ SHORT zbook.00408E85
00408E79
SHR ECX, 10
00408E7C SHR EDX, 10
00408E7F
CMP CL, DL
00408E81 JNZ SHORT zbook.00408E85
00408E83
CMP CH, DH
00408E85 MOV EAX, 0
00408E8A
SBB EAX, EAX
00408E8C POP EDI
00408E8D
SBB EAX, -1
00408E90 POP ESI
00408E91
RETN
================================================================================
第二次的關鍵計算的總結:
1.先把試驗碼--789456123012345678901234 分成二組每組12位
1>.第一組: 前12位--789456123012
設為M0
2>.第二組: 後12位--345678901234 設為N0
2.第一組的hex值-第一次計算值的奇數位的值設為K0
;第二組的hex值-第一次計算值的偶數位的值設為L0
3.把(K0-41)XOR{次數*(次數-1)+1}的個位設為P
;(L0-41)XOR{次數*(次數-1)+1}的個位設為Q 然後把這個值按P Q P1 Q1 ..P12 Q12 放在以00450F48開始的地址中
;{次數*(次數-1)+1}的個位這個值是一組固定值設位H:1 3 7 D 5 F B 9 9 B F 5 D 7 1
//得到新值DS:[450F48]<==( F7 EB F5 EF F1 E9 FD FD F5 F7 FF FB E6 F8 E4 E2
E4 E4 E2 E4 E6 FE EC F6 )
4.把後12位與前12位對換==>E6 F8 E4 E2 E4 E4 E2 E4
E6 FE EC F6 F7 EB F5 EF F1 E9 FD FD F5 F7 FF FB
5.然後取奇數位得到一個12位的新陣列==>E6
E4 E4 E2 E6 EC F7 F5 F1 FD F5 FF
實際上就是把P組的前六位與後六位對換就是需要的陣列
6.取得到的陣列的後12位與輸入e_mail的前12位比較,相同就註冊成功.
7.如果不成功,就取陣列的前四位和e_mail 的前四位比較,相同就註冊成功
特別說明:上面的註冊嗎我沒有辦法可逆,可能我很菜.請大俠們幫忙了.
fxyang
2003.3.15
相關文章
- 書香門第 V1.30 Build 1732 演算法分析 + 無序號產生器 (18千字)2015-11-15UI演算法
- 新書定稿終落成,期待手中留書香2016-06-24新書
- Python基礎教程(第2版) 入門好書~~~2011-08-26Python
- 香道入門 25種沉香的分類2024-03-19
- P1638 逛畫展2024-07-23
- Webots入門(一)-build up a world2014-12-16WebUI
- 洛谷P1638逛畫展2024-10-14
- Webots入門(二)-build up a controller2014-12-17WebUIController
- 【CSDN程式設計周賽第12期】贏熱門作者簽名實體書、證書和周邊2022-11-29程式設計
- 用費曼技巧學程式設計,香不香?2020-06-12程式設計
- HTML與CSS入門經典(第7版)電子書pdf下載2019-03-01HTMLCSS
- 推薦JS入門書:JavaScript DOM程式設計藝術(第2版)2019-08-18JSJavaScript程式設計
- C語言入門經典(第4版)電子書pdf下載2019-01-19C語言
- 蘋果下架iPhone 8全系 iPhone SE到底香不香?2020-04-17蘋果iPhone
- 【CSDN競賽第25期】贏熱門圖書《千腦智慧》和定製周邊2023-01-12
- SQL SERVER 從入門到精通 第5版 第二篇 第9章 檢視的使用 讀書筆記2024-04-10SQLServer筆記
- 第2周專案4-圖書館的書2015-03-16
- 第 12 章 CSS 入門2016-04-28CSS
- SQL SERVER 從入門到精通 第5版 第二篇 第6章 SQL函式的使用 讀書筆記2024-04-01SQLServer函式筆記
- 【圓圓的日語教室】日語入門第2課-平假名的書寫+瞭解日本2024-11-18
- 伊吹萃香 題解2024-10-07
- 【CSDN競賽第24期】贏熱門圖書《演算法競賽》和定製周邊2023-01-10演算法
- OpenGL入門第4課--深度2019-05-25
- 第1章 pytest入門2018-10-30
- 第7天:CSS入門(轉)2007-08-12CSS
- 第 8 場 小白入門賽2024-03-23
- SQL SERVER 從入門到精通 第5版 第三篇 高階應用 第12章 遊標的使用 讀書筆記2024-04-30SQLServer筆記
- 【圖靈贈書】《精通Linux(第2版)》點評贈書2015-07-27圖靈Linux
- 【第5波贈書】贈敏捷開發類圖書25本2011-07-22敏捷
- 讀書筆記之《現代軟體工程》第5.5章、第6章、第7章2015-04-22筆記軟體工程
- 安利 GitHub action - 挺香的2020-05-02Github
- 【JS 口袋書】第 3 章:JavaScript 函式2019-10-08JSJavaScript函式
- CSDN周賽第36期:贏熱門實體圖書《演算法競賽》和定製周邊2023-03-10演算法
- 【CSDN程式設計周賽第22期】贏熱門作者簽名實體書和定製周邊2023-01-05程式設計
- SQL SERVER 從入門到精通 第5版 第三篇 高階應用 第10章 儲存過程 讀書筆記2024-04-12SQLServer儲存過程筆記
- Open-Channel SSD平臺上實現高效能KV到底香不香?2020-08-07
- Gradle for Android 第二篇( Build.gradle入門 )2016-01-06GradleAndroidUI
- Pygame第1-1課:入門2019-02-11GAM