轉載一篇破解教程(vrv2000) 作者:飛刀浪子 (14千字)
嗨,大家好,我是飛刀浪子。“什麼飛刀浪子,聽都沒聽說過。”我~!@#$#$#$#$$%&^&**&^$倒,(一個小時後)從桌下爬起。
好,聽好了,我乃中原人士,今年該21了,進的時男衛生間。好,廢話少說,切入正題!今天我講的是VRV2000 9.E(2000.11.22)版破解全攻略.
作案工具:TR ,HIEW 先用TR 載VRV2000 BPINT 13 AH=2
. .
2779:30F7 80E1C0 AND
CL,C0
2779:30FA 024E0E ADD
CL,[BP+000E]
2779:30FD 8A6E0C MOV
CH,[BP+000C]
2779:3100 8A760A MOV
DH,[BP+000A]
2779:3103 8A5608 MOV
DL,[BP+0008]
2779:3106 CD13 INT
13 ;在此處攔下 CX=5011,DX=0100
2779:3108 807E0608 CMP
[BYTE BP+0006],08
2779:310C 750A JNE
3118
2779:310E C45E12 LES
BX,[BP+0012]
2779:3111 26890F MOV
[ES:BX],CX
2779:3114 26895702 MOV
[ES:BX+0002],DX
2779:3118 8AC4 MOV
AL,AH ;!注
2779:311A B400 MOV
AH,00 ;!意
2779:311C 5D POP
BP
2779:311D CB RETF
;返回
3616:1612 6A02 PUSH
02
3616:1614 9AE4307927 CALL FAR 2779:30E4
;讀盤過程,讀1面50H道11H扇區
3616:1619 83C410 ADD
SP,10 ;返回到此
3616:161C 0BC0 OR
AX,AX ;必須為0,因它為額外的正常扇區
3616:161E 7520 JNE
1640
3616:1620 1E PUSH
DS
3616:1621 6818B8 PUSH
B818
3616:1624 6A01 PUSH
01
3616:1626 6A12 PUSH
12
3616:1628 6A50 PUSH
50
3616:162A 6A01 PUSH
01
3616:162C 6A00 PUSH
00
3616:162E 6A02 PUSH
02
3616:1630 9AE4307927 CALL FAR 2779:30E4
;讀盤過程,讀1面50H道12H扇區
3616:1635 83C410 ADD
SP,10
3616:1638 0BC0 OR
AX,AX ;此扇區為壞區或沒有,所以應該不為0
3616:163A 7404 JE
1640
3616:163C B001 MOV
AL,01 ;此處將AL=1 就OK了
3616:163E EB08 JMP
1648
3616:1640 46 INC
SI
3616:1641 83FE02 CMP
SI,02
3616:1644 7CBE JL
1604
3616:1646 B000 MOV
AL,00
3616:1648 5E POP
SI
3616:1649 CB RETF
.
.避開此兩處判斷點,就OK 了。不過,VRV會說記憶體不夠,這一次它說的是真的。好,我們搜尋程式碼,咦,找不到,看來被壓過了。
UNP 試試看,還是不行。那就手脫吧。 TR載入VRV2000 EXE1 RELOAD BPREG
G G
;此時出現 MOV DX,XXXX
; MOV [CS:0291],DX
; MOV AH,30
; INT 21
WEXE1 EXE2 RELOAD G
;直到剛才哪個地方 WEXE2 Q MAKEXE
好了,當前目錄下就有了一個MEM.EXE的程式,找到剛才的判斷點改掉,就OK了。不行,不行,怎麼用了第一次就不能用第二次,原來它還回寫了自己。
再次TR 設BPINT 21 AH=3D 透過堆疊 STACK 看它是什麼地方 CALL 此處,有好幾個耶,一個一個 U 看看,
分析一下前後程式碼,可疑就把這個 CALL 幹掉試試看(最好是用JMP 飛過去,但注意平衡堆疊)。
(透過STACK 看堆疊有時是很有用的,早期的VRV 追到後面的INT 13 會當機,我就是透過堆疊來解的)
另外,若用PKLITE將解壓過後的程式壓一偏也可以不用改。下面我們講一下用DEBUG脫殼,雖然有些煩,但可以增加功力啦。DEBUG VRV2000.EXE-U
3D96:001C FC CLD
3D96:001D 2E806C1310 SUB [BYTE
CS:SI+0013],10
3D96:0022 73E8 JAE
000C
3D96:0024 6619ED SBB
EBP,EBP
3D96:0027 AF SCASW
3D96:0028 AD LODSW
3D96:0029 0E PUSH
CS
3D96:002A 0E PUSH
CS
3D96:002B 0E PUSH
CS
3D96:002C 06 PUSH
ES
3D96:002D 1F POP
DS
3D96:002E 07 POP
ES
3D96:002F 16 PUSH
SS
3D96:0030 680500 PUSH
0005
3D96:0033 6631DB XOR
EBX,EBX
3D96:0036 CB RETF-G36-T-P912E:0004
A4 MOVSB
912E:0005 E86D00 CALL
0075 ;解碼過程
912E:0008 72FA JB
0004 ;迴圈
912E:000A 6631C0 XOR
EAX,EAX
912E:000D 40 INC
AX
912E:000E E86400 CALL
0075
912E:0011 6611C0 ADC
EAX,EAX
912E:0014 E85E00 CALL
0075
912E:0017 73F5 JAE
000E
912E:0019 6683E803 SUB
EAX,03
912E:001D 720D JB
002C
912E:001F 66C1E008 SHL
EAX,08
912E:0023 AC LODSB
912E:0024 6683F0FF XOR
EAX,-01
912E:0028 7469 JE
0093
912E:002A 6695 XCHG
EAX,EBP
912E:002C E84100 CALL
0070
912E:002F 11C9 ADC
CX,CX
912E:0031 7508 JNE
003B
912E:0033 41 INC
CX
912E:0034 E83900 CALL
0070
912E:0037 73FB JAE
0034
912E:0039 41 INC
CX
912E:003A 41 INC
CX
912E:003B 6681FD00F3FFFF CMP EBP,FFFFF300
912E:0042 81D10100 ADC
CX,0001
912E:0046 89FA MOV
DX,DI
912E:0048 8CC0 MOV
AX,ES
912E:004A C1EA04 SHR
DX,04
912E:004D 83E70F AND
DI,0F
912E:0050 01D0 ADD
AX,DX
912E:0052 1E PUSH
DS
912E:0053 8EC0 MOV
ES,AX
912E:0055 56 PUSH
SI
912E:0056 66C1E004 SHL
EAX,04
912E:005A 01F8 ADD
AX,DI
912E:005C 6601E8 ADD
EAX,EBP
912E:005F 89C6 MOV
SI,AX
912E:0061 66C1E804 SHR
EAX,04
912E:0065 83E60F AND
SI,0F
912E:0068 8ED8 MOV
DS,AX
912E:006A F3 REPZ
912E:006B A4 MOVSB
912E:006C 5E POP
SI
912E:006D 1F POP
DS
912E:006E EB95 JMP
0005 ;繼續迴圈
912E:0070 E80200 CALL
0075
912E:0073 11C9 ADC
CX,CX
912E:0075 6601DB ADD
EBX,EBX
912E:0078 7518 JNE
0092
912E:007A B7B0 MOV
BH,B0
912E:007C 39DE CMP
SI,BX
912E:007E 7609 JBE
0089
912E:0080 29DE SUB
SI,BX
912E:0082 8CDB MOV
BX,DS
912E:0084 80C70B ADD
BH,0B
912E:0087 8EDB MOV
DS,BX
912E:0089 668B1C MOV
EBX,[SI]
912E:008C 83EEFC SUB
SI,-04
912E:008F 6611DB ADC
EBX,EBX
912E:0092 C3 RET
912E:0093 59 POP
CX
912E:0094 8CC0 MOV
AX,ES ;!!!!(ES-CX) SHL 4 + DI=檔案長 設為X
912E:0096 80EC04 SUB
AH,04
912E:0099 8ED8 MOV
DS,AX
912E:009B 2BBDFE3F SUB
DI,[DI+3FFE]
912E:009F 8DB50040 LEA
SI,[DI+4000]
912E:00A3 5D POP
BP ;!!!BP值指向了程式的起始段
912E:00A4 31DB XOR
BX,BX
912E:00A6 8EC1 MOV
ES,CX
912E:00A8 AC LODSB
; !!!重定位開始
912E:00A9 25FF00 AND
AX,00FF
912E:00AC 7405 JE
00B3
912E:00AE 3CEF CMP
AL,EF
912E:00B0 7710 JA
00C2
912E:00B2 A8AD TEST
AL,AD
912E:00B4 01C3 ADD
BX,AX
912E:00B6 7305 JAE
00BD
912E:00B8 80C510 ADD
CH,10
912E:00BB 8EC1 MOV
ES,CX ;!!!
912E:00BD 26012F ADD
[ES:BX],BP ;!!重定位
912E:00C0 EBE6 JMP
00A8
912E:00C2 88C4 MOV
AH,AL
912E:00C4 AC LODSB
912E:00C5 25FF0F AND
AX,0FFF
912E:00C8 75EA JNE
00B4
912E:00CA AD LODSW
912E:00CB 01C1 ADD
CX,AX
912E:00CD 73D5 JAE
00A4
912E:00CF 07 POP
ES
912E:00D0 AD LODSW
;取原SP ,記下AX等一下會用到。
912E:00D1 012C ADD
[SI],BP ;定位SS,記下SI的值
912E:00D3 8E14 MOV
SS,[SI]
912E:00D5 94 XCHG
AX,SP
912E:00D6 06 PUSH
ES
912E:00D7 1F POP
DS
912E:00D8 EA0000963D JMP FAR 3D96:0000
;解碼完畢,進入程式-gd8-t-nvrv.dat-RBX
X 的高位 ---->X 看前面RCXX 的低位WCS:0 ;回寫程式的執行程式碼Q;下面寫重定位資料DEBUG
VRV2000.EXE-G36-T
-GA8-R DI ;將DI指向一個不影響我們工作的任意地址500-FES:500 L 1000 FF
;為了方便找最後一個重定位
;將BB處的兩位元組NOP掉,將BD處的三位元組改為CALL 200 然後在200處寫我們的指令。-A200
MOV AX,BX STOSW
MOV AX,CX SUB AX,BP ;BP值指向了程式的起始段 STOSW RET-G D8
;搜尋ES:500後什麼地方出現連續的FF,找到的第一個FF的地址-500 假設結果為
Y
;將 Y/4 的結果記下,等一下要用。-NRELOCAL.DAT-RCXY
;若Y不是16的整倍數,將它補為16的整倍數。-RBX0
-WES:500 ;寫RELOCAL.DAT-N HEADER.DAT-FDS:100 L 20 0-RCX
-20
-WDS:100 ;寫HEADER.DAT-QCOPY /B HEADER.DAT+RELOCAL.DAT+VRV.DAT
VRV.EXE
此時,我們已經得到了一個程式,但他還不能執行,下面修補檔頭,用HIEW開啟
4D 5A XX XX XX XX XX XX XX XX 00 00 FF FF XX XX XX XX
---- ---- ---- ----
---- ----
|_____|_____|_____|_________________|_____|___________VRV.EXE
的長度除以200H的餘數
|_____|_____|_________________|_____|___________商,若餘數不為0,還應再加1
|_____|_________________|_____|___________剛才Y/4的結果
|_________________|_____|___________(HEADER.DAT+RELOCAL.DAT)長度/10H
|_____|___________剛才記的SS值
|___________剛才記的SP值
00 00 XX XX 00 00 20 00 00 00 00 00 00 00 -----
|________HEADER.DAT+RELOCAL.DAT 的長度注:上面都是十六進位制,且是字方式,所以請注意儲存的反向問題。
好了,大功告成,親個嘴兒。注:若我們將任意盤格式化一個正常的1面50H道11H扇區,就可以做它的加密盤。
若有原版加密盤,可將其所讀資料寫入我們自做的加密盤中,這樣更好。 不過,我解的加密盤都沒有原盤,所以只有這樣啦。
飛刀浪子 留
相關文章
- 轉載一篇破解教程(LeapFTP) (10千字)2001-03-29FTP
- 轉載:“亂刀”破解手記 (1千字)2000-09-03
- 一篇破解教程-----面向初學者 (15千字)2001-04-01
- 一篇破解入門 (7千字)2000-09-04
- 靜動兩把刀,破解省時又省力 (4千字)2001-10-02
- 小李飛刀 之 程式設計師版 (轉)2007-08-17程式設計師
- 轉一篇比較簡單的installshiled的破解 (2千字)2001-05-14
- 破解webclaw――全憑眼力 (14千字)2001-05-21Web
- 轉載:InstallShield Password 破解一例 (1千字)2001-02-09
- 《Diablo 2 暗黑破壞神 》破解(轉載) (1千字)2001-10-07
- Flash8教程5:飛入飛出(作者司徒子瑄10歲)2016-03-24
- Soundnailsd的破解教程(一) (9千字)2001-10-17AI
- Delphi元件破解教程(一)
(3千字)2015-11-15元件
- WebTimeSync 5.2.0 破解過程 (14千字)2001-10-05Web
- 菜鳥破解一篇:vcrkme01 (11千字)2001-10-19
- 轉貼一篇文章 作者的功力絕對不亞於任何高手 (37千字)2001-11-19
- 萬能五筆2000a+破解《作者:BanhouseMaster》 (3千字)2000-09-12AST
- Navicat 破解版下載,Navicat破解教程2021-10-12
- crackme破解教程(續) (高手莫入) (2千字)2001-03-17
- 【浪子男孩】TensorFlow-GPU版本安裝教程2020-12-04GPU
- 轉帖--對付幾個特殊加密的破解方法以fox程式為主---作者:diaojf
(2千字)2001-04-15加密
- 轉貼一篇:FlashFXP v1.4.1 build 823 的脫殼與破解 (16千字)2001-12-30UI
- 初學者請進(一篇破解javagirl的心得) (2千字)2000-05-09Java
- 再貼一篇cd-chcek破解譯文 (4千字)2000-08-27
- 方正飛騰3.1加密狗破解過程-----淺談Sentinel Super Pro的加密演算法 (14千字)2015-11-15加密演算法
- peter,交一篇FCG的作業:破解NetCaptor最新版6.5.0 Final的限制 (14千字)2001-10-01APT
- Tmaster6.0 破解(我的第一篇灌水) (4千字)2001-10-04AST
- 來一篇:暴力破解Crystal Button 1.31A (7千字)2015-11-15
- [翻譯]用dede破解-另一篇~請大家指正~~ (5千字)2015-11-15
- 一篇SMC補丁方法的教程
(7千字)2015-11-15
- 破解 Zelix KlassMaster 的字串加密 在java遊戲中作弊(轉載文章) (7千字)2001-07-24SSMAST字串加密Java遊戲
- 交一篇作業---破解Hedit 2.0的註冊碼 (7千字)2001-09-30
- 菜鳥破解vis_ddr v1.11 (14千字)2001-12-08
- 控制元件破解指南(轉貼) (4千字)2002-06-27控制元件
- 硬碟保護卡的破解 (轉)~~~~ (2千字)2001-11-23硬碟
- 有聲有色 v3.16破解教程 (6千字)2000-10-03
- 來一篇VB的破解教程,看看作者的斷點下到了什麼地方,得好好消化消化了,嘿嘿,喜歡VB的和痛恨VB的都來看看...
(9千字)2001-12-30斷點
- 用VC和自制工具VCDEBUG助手進行跟蹤破解[轉載] (3千字)2001-11-10