修改指標法破解VB程式-Fast PC Linker-III (8千字)
修改指標法破解VB程式
Fast PC Linker-III
作者: 囚童
課題: 解除Fast PC Linker-III傳送量限制,清NAG
背景: VB3.0程式設計
下載:
工具: TRW2000
Ultra Edit 32
FC
Fast PC Linker-III支援基於不同平臺(Windows 3.1, 95, 98 和 NT4 WorkStation)的兩臺PC
之間透過串並口進行高速檔案傳送.支援全目錄和全盤複製.支援長檔名.也支援網路裝置及
光碟機.Fast PC Linker-III具有自動搜尋和最佳化配置I/O口的功能,又十分小巧,一張軟盤就可以
帶走.對於那些沒有光碟機的老式機器和筆記本機,想安裝執行大一點的程式有了它可就方便多了.
特別在它之前,由於NT不支援直接電纜連線,從辦公室向家裡傳送MP3之類的大檔案,要是其中一
臺機不能上網,那可就慘了.有了Fast PC Linker-III,找一臺筆記本機,在列印電纜上裝一個轉
換接頭(有關轉換接頭另文介紹),兩下搞定.
Fast PC Linker-III試用版採用傳送量限制,試用完規定的傳送量(大約25x300MB),程式就停止
工作.倘若正在傳送一個大硬碟,剛傳了一半就死翹翹,確實讓人惱火.
由於必須支援Windows 3.1,Fast PC Linker-III選擇VB3.0程式設計.大家知道,VB程式的特點是既難
跟又難改,這就給破解帶來相當的難度.
下面給出用修改指標法破解VB程式的例子,供參考.
將C:\WINDOWS\WIN.INI以1.INI為名做一個備份.
安裝Fast PC Linker-III,將安裝後的WIN.INI以2.INI為名再做一個備份.
在C:\WINDOWS\COMMAND目錄下找到fc.exe,在DOS提示符下鍵入:
fc 1.ini 2.ini > comp.txt
fc將對安裝前後的兩個ini檔案進行比較,並把比較結果存入comp.txt中.
開啟comp.txt,可以看到:
Comparing files 1.INI and 2.ini
****** 1.INI
****** 2.ini
[Disk Safety Info] ┐
Protection FL3= 25 > FastPCL安裝後向WIN.INI中加入的兩行
┘
******
新加入的兩行即試用版賦予使用者的初始傳送量,其最大值為25節,每節大約300MB.當這一數值用
盡時,即使重新安裝,也不能恢復.
啟動TRW2000,點OK,TRW2000在螢幕右下角生成一個小圖示.右擊這個圖示,選TRmewTCB.
雙擊Fast PC Linker-III圖示,TRW截獲這一新執行緒.
WIN.INI是WINDOWS啟動時調入記憶體常駐的.
下指令: S 30:0 LFFFFFFFF 3D 32 35 ;=25
TRW給出: 9B0B6
下指令: BPM 30:9B0B6+1 R
按F5,程式被TRW截獲.
下指令: BD* ;清中斷.
按F5數次,程式來到:
014F:5A96 CLD
014F:5A97 PUSH DS
014F:5A98 PUSH ES
014F:5A99 POP DS
014F:5A9A MOV SI,DI
014F:5A9C LES DI,[BP+06]
014F:5A9F MOV AX,CX
014F:5AA1 REP MOVSB ;游標停在這裡
014F:5AA3 MOV BYTE [ES:DI],00
014F:5AA7 POP DS
下指令: D DS:SI-1
TRW給出:
00CF:25D7 32 35 0D 0A 0D 0A 0D 0A-0D 0A 00 00 00 00 00 00 25..............
此時若連續下指令: BPM ES:DI-1,透過88C0、96E5可以跟蹤這個"25"一直來到:
1B2F:0B43 LODSB
1B2F:0B44 CMP BYTE [0FB9],00 ;游標停在這裡
1B2F:0B49 JZ 0B5B
1B2F:0B4B CMP AL,20
1B2F:0B4D JZ 0B3D
1B2F:0B4F CMP AL,09
1B2F:0B51 JZ 0B3D
下指令: D DS:SI-1
TRW給出:
0F1F:779A 32 35 00 FF 9C 00 C0 77-A8 91 47 35 04 00 2A 00 25.?wG5..*.
如果有耐心繼續跟蹤,將會發現程式將ASCII碼"25"轉換為16進位制碼H19後,又將16進位制碼轉換為
80Bit的浮點數,自76A2送入浮點系統進行繁雜的浮點運算,然後來到:
372F:0F67 SUB SP,BYTE +02
372F:0F6A MOV BX,SP
372F:0F6C NOP
372F:0F6D FISTP WORD [SS:BX] ;關鍵!
372F:0F70 INT 3D
372F:0F72 LODSW
372F:0F74 JMP AX
利用F6D處的指令FISTP,將預放在浮點堆疊內的80Bit運算結果,恢復成16進位制碼H19壓入當前堆
棧內.接著透過F74處的跳轉指令,來到:
3DC7:2D55 LODSW
3DC7:2D57 XCHG AX,BX
3DC7:2D58 MOV BX,[BX]
3DC7:2D5A MOV DS,[SS:1CFA]
3DC7:2D5F POP WORD [BX] ;關鍵!
3DC7:2D61 MOV DS,[SS:1CF2]
3DC7:2D66 LODSW
3DC7:2D68 JMP AX
利用2D5F處的彈出指令,將16進位制碼H19從棧頂彈出到變數暫存器中.
下指令: ? BX
TRW給出:
DEC = 32106
HEX = 7D6A
試著用E命令修改DS:7D6A.
置入0,程式在後面的執行中將彈出程式失效的提示視窗;置入H63(D99),試用版傳輸量將大大提
升.
但是,上面提到的全部資料傳輸和處理過程都是在vbrun300.dll中完成的,無法將f6d處改寫為例
如MOV [SS:BX],H63 這樣的指令.
分析上面給出的F67和2D55兩節指令,可以看出VB程式碼結構的明顯特徵:指標ES:SI指向一個混合
裝有指令入口和資料的指標列表,節首的裝載指令透過指標列表下載資料;節尾的裝載指令透過
指標列表下載新的指令入口.這樣就將事先按死順序編好在VB執行庫裡的指令程式碼和使用者資料通
過指標列表盤活了.
把上面的過程整理一下,如下表:
節序 ① ② ③ ④
指令指標 6080 6084 6086 6088
指令入口 3234 76A2 F67 2D55
資料指標 6082 - - -
資料內容 0380 - - -
功能 傳送資料 浮點處理 浮點棧>當前棧 當前棧>變數暫存器
如果能捨去浮點處理,將資料如H63(D99)在節①處直接壓入當前堆疊內,在節④處從棧頂彈出到
變數暫存器中,試用版傳輸量將提高到可以認為是沒有限制了.
在當前指令程式碼段中找了一下,有下面3節大約可用:
⑴
1C2F:2A86 LODSW
1C2F:2A88 XCHG AX,BX
1C2F:2A89 MOV BX,[BX]
1C2F:2A8B MOV DS,[SS:1CFA]
1C2F:2A90 PUSH WORD [BX]
1C2F:2A92 MOV DS,[SS:1CF2]
1C2F:2A97 LODSW
1C2F:2A99 JMP AX
⑵
1C2F:2B50 LODSW
1C2F:2B52 XCHG AX,BX
1C2F:2B53 PUSH WORD [BX]
1C2F:2B55 LODSW
1C2F:2B57 JMP AX
⑶
1C2F:3834 LODSW
1C2F:3836 PUSH AX
1C2F:3837 LODSW
1C2F:3839 JMP AX
試選⑶,做一個新的指標方案:
節序 ① ② ③ ④
指令指標 6080 6084 6086 6088
指令入口 3834 3837 3837 2D55
資料指標 6082 - - -
資料內容 0063 - - -
功能 資料>當前棧 空運轉 空運轉 當前棧>變數暫存器
選定TRW的TRnewTCB,重新啟用FastPCL,TRW截獲它.
下指令: BPM 30:9B0B7 R
按F5,程式被TRW截獲.
下指令: BD* ;清中斷.
按F12三次,F10六次,來到:
342F:650E PUSH AX ;游標停在這裡
342F:650F CMP CL,FF
342F:6512 JZ 6515
342F:6514 PUSH CX
342F:6515 OR SI,SI
342F:6517 JZ 651D
342F:6519 LODSW
342F:651B JMP AX
可以看到TRW反彙編視窗下面的橫線中央標有VBRUN300(xx)+xxx,指出當前模組名是vbrun300,
括號中是子模組序號,加號後是在模組中的偏移量.
這就是VB3的指標控制域.所謂VB難追,也是指在這個域裡.
下指令: E ES:6080 34 38 63 00 37 38 37 38
按F5.
修改成功.FastPCL右上角的試用版視窗顯示剩餘傳輸量為99節.左上角是定購資訊窗.
這麼大的傳輸量對於一般使用者來講可以說已經沒有什麼限制了,故可以進一步嘗試將試用版窗
口和定購資訊窗去掉.
選定TRW的TRnewTCB,重新啟用FastPCL,TRW截獲它.
下指令: BPX ACCESSRESOURCE
按F5十七次,按F12兩次,F10一直來到:
3FEF:010D CALL 063C
3FEF:0112 MOV SI,AX ;游標停在這裡
3FEF:0114 OR SI,AX
3FEF:0116 JZ 0120
3FEF:0118 MOV AX,SI
3FEF:011A POP SI
3FEF:011B POP DI
3FEF:011C LEAVE
3FEF:011D RET 0A
3FEF:0120 LEA AX,[BP-04]
3FEF:0123 PUSH SS
3FEF:0124 PUSH AX
3FEF:0125 MOV ES,[1F3A]
3FEF:0129 LEA BX,[DI+19]
3FEF:012C PUSH WORD [ES:BX]
3FEF:012F CALL 0482 ;按F8跟進去
3FEF:0134 MOV SI,AX
下指令: BD* ;清中斷.
接著一直按F10,來到:
1BD7:0493 CALL 07C0 ;按F8跟進去
1BD7:0498 MOV SI,AX
1BD7:049A OR SI,AX
1BD7:049C JZ 04A6
1BD7:049E MOV AX,SI
1BD7:04A0 POP SI
1BD7:04A1 POP DI
1BD7:04A2 LEAVE
1BD7:04A3 RETF 06
接著一直按F10,來到:
35C7:08F8 CALL `KERNEL!_LREAD`
35C7:08FD MOV [BP-06],AX ;游標停在這裡
35C7:0900 CMP AX,FFFF
35C7:0903 JNZ 0908
35C7:0905 JMP 09A8
35C7:0908 MOV ES,[1F42]
下指令: DW ES:26A
獲得段地址①.
下指令: DB 段地址①:B19
資料視窗顯示:
35AF:0B19 04 00 00 00 00 05 2D 00-DE 03 9E 07 85 02 12 07 ......-.???..
35AF:0B29 00 14 02 1E FF FF 00 03-65 00 00 80 0A 12 00 00 ......e......
35AF:0B39 01 FF 00 22 41 6C 73 6F-20 4C 6F 67 20 4E 65 74 .."Also Log Net
這是定購視窗的VB顯示引數,包括視窗位置、字型、字型尺寸、前景、背景、效果等.
在它的前面是將要顯示的字串.
下指令: DB 段地址①:CB8
資料視窗顯示:
35AF:0CB8 03 00 00 FF 00 04 FF FF-FF 00 05 BB 17 DE 03 EA .......???
35AF:0CC8 06 85 02 0C 0D 4D 53 20-53 61 6E 73 20 53 65 72 .?..MS Sans Ser
這是試用版視窗的VB顯示引數.
下指令: E 段地址①:B21 0 0 0 0 A 0
下指令: E 段地址①:CBE 0 0 0 0 5 2D 0 0 0 0 0 A 0
按F5.
修改成功.兩個視窗均被清除.
使用Ultra Edit 32,按下面的方法做最後的修改:
34 32 80 03 A2 76 67 0F 55
-- 38 63 00 37 38 37 38 --
17 DE 03 EA 06 85 02 OC
-- 00 00 00 00 0A 00 --
00 DE 03 9E 07 85 02 12
-- 00 00 00 00 0A 00 --
試執行.哇,成功!
VB是可以修改的!
忙了半天,只是為了說明VB是可以修改的.
其實按下面的方法修改,只要修改一處,效果是一樣的:
34 32 80 03 A2 76 67 0F 55
-- 38 FF FF 37 38 37 38 --
儼然一個正版.
倘若只是想用一用軟體,或想偷個懶,或者缺少工具,只要用Notepad開啟Win.ini,在Protection
FL3= 25一行的前面加上一個分號";",然後存檔,就萬事大吉了.
相關文章
- 修改指標法破解VB程式 騰圖影視'97 (14千字)2001-07-25指標
- 利用VB的函式快速破解VB程式! (2千字)2001-11-03函式
- 談談VB程式的破解 (5千字)2002-10-28
- 關於ARM的PC指標(什麼時候PC+8,PC+4,PC-4,PC-8)2015-10-29指標
- Java 程式的破解方法 (8千字)2002-08-15Java
- VB真是想不到系列之三:VB指標葵花寶典之函式指標 (轉)2008-05-28指標函式
- VB黑客程式的暴破(修改)一例 (9千字)2003-02-06黑客
- winimage完全破解 (8千字)2001-07-04
- VB Pcode破解方法及例項 (5千字)2001-06-16
- 彩神悠悠1.0---用winHEX破解VB程式之例三 (1千字)2001-09-17
- 雙指標法2024-04-02指標
- VB輸入限制的記憶體破解 (2千字)2003-04-28記憶體
- 極速登入3.6---用winHEX破解VB程式之例二 (1千字)2001-09-02
- PC 控制檯(PC Controler) V1.5.75 破解過程
(5千字)2015-11-15
- 標誌位法破解----美萍反黃衛士2.26 (4千字)2001-07-27
- 破解:Fast Email Searcher V1.0 (價值580元!) (2千字)2001-08-17ASTAI
- 我的破解心得(8) (2千字)2001-03-13
- 軟體破解初體驗之 MacroClip 2000.2.7 程式碼修改破解 (15千字)2001-10-09Mac
- 《VB PCODE程式破解綱要》 (987字)2001-12-30
- 關於破解以p-code方式編譯的VB程式一例 (2千字)2002-04-01編譯
- VB真是想不到系列之四:VB指標葵花寶典之SafeArray (轉)2007-12-12指標
- ThemeFreak V1.6破解 (8千字)2001-03-07
- 炒股理財1.65破解方法 (8千字)2001-04-13
- Trojan Remover 4.3.0破解手記 (8千字)2001-08-31REM
- 破解GIF Movie Gear 3.01 (8千字)2002-03-13
- 第 10 節:複合型別-5. 指標 -- 指標與指標變數 -8. 多級指標2019-12-09型別指標變數
- Floyd 迴圈檢測演算法(快慢指標法/龜兔指標法)2022-01-28演算法指標
- 破解:Fast Email Spider V1.06 (價值580元!) (2千字)2001-08-17ASTAIIDE
- 8.空指標異常2017-11-01指標
- 用VB“破解”有時間限制的程式 (轉)2007-12-04
- winxp總管破解筆記(一) (8千字)2002-10-07筆記
- 破解WS_FTP Pro 7.02 (8千字)2001-10-28FTP
- SeaMoon Pic Hunter 1.2破解手記 (8千字)2015-11-15
- 破解 程式獵人 1.2 (2千字)2000-08-10
- 批量解壓縮(Batch UnZip)1.0.5破解紀錄(VB6) (1千字)2001-04-27BAT
- Password Keeper v6.3破解過程 (8千字)2002-04-12
- 破解華琦庫管精靈1.2.4 (8千字)2000-09-11
- PwlTool的功能限制的破解---DDXia[CCG] (8千字)2001-03-10