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毫秒