個人學習SMC的一點體會--回答dREAMhTEATER兄
以下這一段是給那些經常在論壇中點播軟體的人看的。
我學習破解約10個月,開始是從看了D版光碟中OSCAR10.1中的HELP開始的,後來就是YHQ,ERRORFREE等的文章。真正的學習主要來自於看雪論壇上諸君文章的教誨,以及後來從FRAVIA等處得到的教學文章。所以我也將自己所得回報給論壇各位,希望能有所助益。因為我是透過自學來獲得知識,同時我相信別人也是基本如此,所以我遵循傳統,除非你對破解中的具體問題有疑問,我才會盡我所能來回答。
下面是關於學習SMC的一點體會。
至今我嘗試了2次SMC破解,感覺這是一個PERFECT IDEA,但可能只在去除NAG等單一方面比較有用。
第一次是嘗試《有聲有色3.10》,參考的是《iNLiNE pATCHiNG A pROGRAM pACKED WiTH ASProtect》作者是Predator
[PC/MFD], April 26, 2000 ,這時對SMC還不瞭解,只是照樣畫葫蘆。補丁:
1. 用PRODUMP載入主程式MUSREA.EXE, 知道基地址為00400000,為了找程式入口點, 用上D.BOY的衝擊波2000,
找到為0048A410. 所以offset = 0048a410-00400000 = 0008a410. 用ULTRAEDIT搜尋 10 a4 08,
找到惟一地址0004c49d. 因為我準備讓她先執行我的PATCH CODE, 所以準備在000003d0處修補,所以在0004c49d處將10 a4
08改為d0 03 00.
2. patch code.
首先感謝十三少與dREAMtHEATER的工作, 我知道要在
cs:0048A4E1 0F8498000000 je
0048A57F 改為
eb74
jmp 0048A761
9090
nop
9090
nop
3. 在000003d0處: 用hiew寫上如下程式碼
000003d0: 0000
我發現跳到這裡後不能直接寫patch code,
必須過渡一下.
000003d2: 66c705e1a44800e9eb patch code 1
000003db: 66c705e3a448000200 patch code 2
000003e4: 66c705e5a448000090 patch code 3
000003ed: 6810e44800
放入真實的入口點
000003f2: c3
返回
第二次就是破解《有聲有色3.16》,參考的是臺灣陳正穎的《破ASPACK2000》及Varroa原著,Winter Lee翻譯的《The
Bat! 1.32破解方法》,用了一個下午。由此對SMC有了些初步的瞭解。具體文章請看論壇中的前作。
對於補丁程式碼要放在程式中何處,我的理解是要在程式中的“空地”,同時這段程式碼在程式對映入記憶體後不能被覆蓋。所以在處理《有聲有色3.10》時我就沒有想到用TOPO來幫忙。而在《有聲有色3.16》版中我找到的空地結果證實是不能使用的,所以才有TOPO的出場。
程式“空地”的使用與否,我是用以下方法知道的,可能很苯,誰用更好的方法還請指教。
在《有聲有色3.16》中發現只有程式的頭部有空,所以用ULTRAEDIT在這個空地中寫了些標記“AAAAABBBBCCCDDE”,在程式執行後設個斷點將程式攔截,並在記憶體中進行搜尋,結果發現其在這個程式中的位置是cs:C2145D34,而不是在常規的cs:00400000節段內,所以就沒有用。我想dREAMhTEATER兄可能也是同樣問題。
我將文中提到的文章及我的陋文打包為mercury.zip檔案,會請看雪兄提供下載,誰若有興趣歡迎交流。
希望能有機會與dREAMhTEATER兄交流。
最後感謝曾經幫助過我的朋友們,謝謝你們!!!