?? tech1.txt
字號:
【 在 life (★一夢如是★) 的大作中提到: 】
: Paint Shop Pro 4.12 beta2
它就會pop出來個window告訴你時間到了然后就不能用了。
在30天之內使用的時侯會有延時的window.
psp不是那種要注冊的shareware,沒有所謂的注冊碼的,注冊版和
shareware版是兩碼事。要破解程序得先搞清楚敵人要干什么。
: 先把系統(tǒng)的日期改一下, 通常我為了方便, 我會遞增一年.
: 試著執(zhí)行, 果然跑出了被打 X 的窗子..
然后啟動windows95 with softice loaded.
用ldr裝入psp的主執(zhí)行文件。
: 用 ldr 載入後你會看見...
: 14F:4CF3F0 INVALID ; <- 這是 Soft-ICE 奇怪的地方, 不過沒關系
: : ; 按一下 [F8] 就正常了. 如下
F8是單步執(zhí)行,進入call, step into
F10是單步執(zhí)行,但不進入call,step over
WIndows程序有很多call far ptr是到api里面去的,對破解沒什么用
因為你總不能去改api吧。所以F10是經(jīng)常要用的一個健。
: 4CF3F6 PUSH EBP ; <- 游標在此, 開始按 [F10] 追羅!
: MOV ESP,ESP
: MOV EBP,ESP
: : :
: CALL [.....]
: PUSH EAX
: 4CF542 CALL 4CFB54 ; 追至此請按 [F8] 進入 CALL .
: ; 再換 [F10]
: 我為什麼知道以上這個 call 要換 f8 進入? 因為我用 f10 帶過
: 那個 call 時, 就跳出 "抬頭主畫面" 和 "過期告示" 了, 所以我
: 知道那個 call 有問題, 必須進入觀查..
此處是關鍵,我的一般破解過程也是如此,現(xiàn)用f10過一遍,記住在哪個call里面
出的問題,下回就進這個call,再用F10,幾層之后基本上就到了程序判斷的部分了。
: ----
: : :
: PUSH DWORD PTR [EBP+..]
: 4CFB64 CALL 4CFBC2 ; 追至此再按 [F8] 進去看看.
: 這個 call 要用 f8 進入觀查的原由那還要問嗎? 因為我有用 f10
: 帶過那個 call 嘛! O.K ?
呵呵,就是這樣,一層一層下去,在Sice for win的最下方窗口的title是當前
modula的名字,記住別走到freqasm或者user里面去了。但DLL只要是屬于那個軟件的
都應該進去。因很多情況下判斷的section在dll里面。
: ----
: 4CFBC2 JMP [4F8748] ; 再按一次 [F8] (又追到別的檔案
: ; 去了! )
: 這里為什麼我要用 f8 ? 因為手剛好放在 F8 上面嘛! 除了 CALL
: 之外, F8 & F10 之作用都一樣, 都是單步執(zhí)行.
: ----
: 此時已經(jīng)到了 MFC42!.TEXT 的范圍了. 因沒其它的線索, 只好用
MFC42這個名字一看就知道了兩件事:這個程序(psp)是用visual C 4.2做的,
二,MFC42里面的東西是沒必要也不能碰的,盡早出這個dll或者重新開始最好。
: [F10] 繼續(xù)追..
: PUSH EBP
: MOV EBP,ESP
: : :
: 5F40A51B CALL [EBX+58] ; <- 最討厭追到這個. 用 [F8] 再往里面伸.
我一般前幾遍是不用F8的,一直到跟下去到了user或者freqasm了再說。
: ----
: 4031B6 INVALID ; <- 又來了, 沒關系再按一下 [F8]
: : ; 就好了, 如下:
: 這個 invalid 我還是不知道會什麼會這樣, 不過出現(xiàn)此東西時, 按
: F8 大多不會有什麼問題, 但按 F10 會依不同的軟體而定, 有時會
: 當?shù)?
: ----
: Ya! 又回到了 psp!.text , 這下子你 psp 竟放我回來, 有你好看.
呵呵,跟丟了不要緊,只要對話框沒出來,就是沒到地方呢,按F10,總能回到
該在的地方。
: 448420 MOV EAX,FS[0....]
: : :
: : : ; 哇! 這一條龍真長, 按了好久好久
呵呵,手酸了吧,sice要能編程就好了,像zmud一樣。
: MOV EBX,[EAX]
: PUSH 00000080
: 4487B4 CALL [EBX+000000C0] ; <- 用 F10 經(jīng)過此, 主畫面就出來了.
如果是用C++的話,這個CALL很可能是函數(shù)
verfy_time(); 時間到了就exit(),沒有就繼續(xù)。我有時侯愛試試把這個call整個
給用90蓋了,運氣好了成。但多半在這個函數(shù)里還有些別的初始化程序,所以除非
確認沒事兒,還是別輕易試。
----
記下剛才的那個開窗口call的地址4487b4,再啟動ldr,bpx一下,在win95的32bit
程序都是有段地址137,所以兩次啟動這個地址是不會變的,這跟DOS不同。
還有,破解的時侯最好在手邊弄一張白紙,隨手記下重要的地址,像上面的那個。
因為存在sice里面很不保險,機器一當?shù)艟褪裁炊紱]有了。而用sice搞破解當機器
是太常見的事了。
下面就是進入那個 CALL [EBX + 000000C0]的程序,看看什么地方它判斷到?jīng)]有到期
然后試圖跳一跳。
: TEST EAX,EAX
: JZ 448... ; Jz!? 別窮緊張, 你若強制讓 eax為零時, 表
呵呵,這種時侯見到jz或者jnz可是要上緊革命的弦那。因為在C里面的
if(time_off) exit();多半就是用com ax,1 然后jz什么的來的。
所以見了jz就停下來看看,或者記下地址,回頭如果就是這個,再回來改它。
: : : ; 示開窗不成功, 但是系統(tǒng)已經(jīng)開成功了, 所以
: : : ; 會使程式錯亂. 開窗一次, 會送一個旗號回來.
: : : ;
: : : ; 又按 F10 按了好久.
: ; : ;
: CALL 40280B ; <- 這是要害 ..
: TEST EAX,EAX
: JZ ... ; <- 有沒有看見 'JZ' ?
沒有看見,SICE的屏幕看久了眼睛會變綠的。
: PUSH 00
: PUSH 10
: 44896A CALL 4CE668 ; 哇! 被打 x 的窗子彈出來了.
呵呵,這個時侯怎末辦呢?首先,把地址都記下來,然后試試:再運行一遍,停在
JZ上面,然后強迫轉向,(改IP)到JZ所指的地方,跳過那個討厭的call 4ce668.
注意,這個時侯程序很可能當?shù)艋蛘遬sp說不能運行什么的。那就是因為這個call
還不是光打個window,肯定還干了些什么,那就得用F8進入那個CALL 4CE668。
看看丫到底干了些什么。如果進入發(fā)現(xiàn)到了什么API里面了,那就得從新跟了。
: : : ; 往上一看... Jz !!
: 想當 Hacker 的人, 自己進入要害的 call 內分析看看, 程式很短
: , 所以我就不公布答案了! 其他的高手, 最好不要說答案, 我想訓
: 練一下想入門 hacker 的人, 我希望他們沒事就去啃組語.
: 當你追到手修改完成後, 別忘了把 "系統(tǒng)日期時間" 改回來, 再執(zhí)
: 行 ScanDisk , 要把 "無效日期" 和 "無效檔名" 兩項的檢查項目
: 打勾, 再來 Scan 所有的 Disk .
: 因為 Win95 對日期很敏感, 日期矛盾時, Win95 的某些 Appz 會
: 當?shù)? 有的主機板異常會跳到 209x 年, 那就會不時的當.
這個問題我到?jīng)]有碰到過,不過小心無大錯,還是注意點好。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -