Software 版 (精华区)

发信人: crystal (带来一车问号给你), 信区: software
标  题: Hacker入门教学之Psp412b破解过程
发信站: 紫 丁 香 (Thu Jun 12 15:51:06 1997)

【 在 life (★一梦如是★) 的大作中提到: 】
:   Paint Shop Pro 4.12 beta2
这是一个很典型的有30天时间限制的shareware,在使用30天之后启动程序
它就会pop出来个window告诉你时间到了然后就不能用了。
在30天之内使用的时侯会有延时的window.
psp不是那种要注册的shareware,没有所谓的注册码的,注册版和
shareware版是两码事。要破解程序得先搞清楚敌人要干什么。

:   先把系统的日期改一下, 通常我为了方便, 我会递增一年.
:   试著执行, 果然跑出了被打 X  的窗子..
然后启动windows95 with softice loaded.
用ldr装入psp的主执行文件。
:   用 ldr  载入後你会看见...
: 14F:4CF3F0      INVALID         ; <- 这是 Soft-ICE 奇怪的地方, 不过没关系
:                 :               ;    按一下 [F8] 就正常了. 如下
F8是单步执行,进入call, step into
F10是单步执行,但不进入call,step over
WIndows程序有很多call far ptr是到api里面去的,对破解没什么用
因为你总不能去改api吧。所以F10是经常要用的一个健。
:     4CF3F6      PUSH    EBP     ; <- 游标在此, 开始按 [F10]  追罗!
:                 MOV     ESP,ESP
:                 MOV     EBP,ESP
:                 :       :
:                 CALL    [.....]
:                 PUSH    EAX
:     4CF542      CALL    4CFB54  ; 追至此请按 [F8] 进入 CALL .
:                                 ; 再换 [F10]
:   我为什麽知道以上这个 call 要换 f8 进入? 因为我用 f10  带过
:   那个 call 时, 就跳出 "抬头主画面" 和 "过期告示" 了, 所以我
:   知道那个 call 有问题, 必须进入观查..
此处是关键,我的一般破解过程也是如此,现用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  之作用都一样, 都是单步执行. 
: ----                            
:   此时已经到了 MFC42!.TEXT 的范围了. 因没其它的线索, 只好用
MFC42这个名字一看就知道了两件事:这个程序(psp)是用visual C 4.2做的,
二,MFC42里面的东西是没必要也不能碰的,尽早出这个dll或者重新开始最好。
:   [F10] 继续追..
:                 PUSH    EBP
:                 MOV     EBP,ESP
:                 :       :
:   5F40A51B      CALL    [EBX+58] ; <- 最讨厌追到这个. 用 [F8] 再往里面伸.
我一般前几遍是不用F8的,一直到跟下去到了user或者freqasm了再说。
: ----
:     4031B6      INVALID         ; <- 又来了, 没关系再按一下 [F8]
:                 :               ;    就好了, 如下:
:   这个 invalid  我还是不知道会什麽会这样, 不过出现此东西时, 按
:    F8 大多不会有什麽问题, 但按 F10  会依不同的软体而定, 有时会
:   当掉.
: ----
:   Ya! 又回到了 psp!.text , 这下子你 psp  竟放我回来, 有你好看.  
呵呵,跟丢了不要紧,只要对话框没出来,就是没到地方呢,按F10,总能回到
该在的地方。
:     448420      MOV     EAX,FS[0....]
:                 :       :
:                 :       :               ; 哇! 这一条龙真长, 按了好久好久                
呵呵,手酸了吧,sice要能编程就好了,像zmud一样。
:                 MOV     EBX,[EAX]       
:                 PUSH    00000080
:     4487B4      CALL    [EBX+000000C0]  ; <- 用 F10 经过此, 主画面就出来了.     
如果是用C++的话,这个CALL很可能是函数
verfy_time(); 时间到了就exit(),没有就继续。我有时侯爱试试把这个call整个
给用90盖了,运气好了成。但多半在这个函数里还有些别的初始化程序,所以除非
确认没事儿,还是别轻易试。

----
记下刚才的那个开窗口call的地址4487b4,再启动ldr,bpx一下,在win95的32bit
程序都是有段地址137,所以两次启动这个地址是不会变的,这跟DOS不同。
还有,破解的时侯最好在手边弄一张白纸,随手记下重要的地址,像上面的那个。
因为存在sice里面很不保险,机器一当掉就什么都没有了。而用sice搞破解当机器
是太常见的事了。
下面就是进入那个 CALL [EBX + 000000C0]的程序,看看什么地方它判断到没有到期
然后试图跳一跳。
:                 TEST    EAX,EAX

:                 JZ      448...  ; Jz!?  别穷紧张, 你若强制让 eax为零时, 表
呵呵,这种时侯见到jz或者jnz可是要上紧革命的弦那。因为在C里面的
if(time_off) exit();多半就是用com ax,1 然后jz什么的来的。
所以见了jz就停下来看看,或者记下地址,回头如果就是这个,再回来改它。
:                 :       :       ; 示开窗不成功, 但是系统已经开成功了, 所以
:                 :       :       ; 会使程式错乱. 开窗一次, 会送一个旗号回来.
:                 :       :       ; 
:                 :       :       ; 又按 F10  按了好久.
:                 ;       :       ; 
:                 CALL    40280B  ; <- 这是要害 ..
:                 TEST    EAX,EAX
:                 JZ      ...     ; <- 有没有看见 'JZ' ? 
没有看见,SICE的屏幕看久了眼睛会变绿的。

:                 PUSH    00
:                 PUSH    10
:     44896A      CALL    4CE668  ; 哇! 被打  x 的窗子弹出来了.
呵呵,这个时侯怎末办呢?首先,把地址都记下来,然后试试:再运行一遍,停在
JZ上面,然后强迫转向,(改IP)到JZ所指的地方,跳过那个讨厌的call 4ce668.
注意,这个时侯程序很可能当掉或者psp说不能运行什么的。那就是因为这个call
还不是光打个window,肯定还干了些什么,那就得用F8进入那个CALL 4CE668。
看看丫到底干了些什么。如果进入发现到了什么API里面了,那就得从新跟了。
:                 :       :       ; 往上一看... Jz !!
:   想当 Hacker 的人, 自己进入要害的 call 内分析看看, 程式很短
:   , 所以我就不公布答案了! 其他的高手, 最好不要说答案, 我想训
:   练一下想入门 hacker 的人, 我希望他们没事就去啃组语.
:   当你追到手修改完成後, 别忘了把 "系统日期时间" 改回来, 再执
:   行 ScanDisk , 要把 "无效日期" 和 "无效档名" 两项的检查项目
:   打勾, 再来 Scan 所有的 Disk . 
:   因为 Win95  对日期很敏感, 日期矛盾时, Win95 的某些 Appz 会
:   当掉; 有的主机板异常会跳到 209x 年, 那就会不时的当.
这个问题我到没有碰到过,不过小心无大错,还是注意点好。


--

※ 来源:.紫 丁 香 pclinux.[FROM: robsn01.hit.edu]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.497毫秒