书香门第 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
相关视频
相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么
热门文章 去除winrar注册框方法
最新文章
比特币病毒怎么破解 比去除winrar注册框方法
华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)通过Access破解MSSQL获得数据
人气排行 华为无线路由器HG522-C破解教程(附超级密码JEB格式文件京东电子书下载和阅读限制破解教UltraISO注册码全集(最新)qq相册密码破解方法去除winrar注册框方法(适应任何版本)怎么用手机破解收费游戏华为无线猫HG522破解如何给软件脱壳基础教程
查看所有1条评论>>