发信人: Reinhard.bbs@bbs.sjtu.edu.cn (摘星), 信区: cnhacker
标  题: 黑客心经(一) 破解入门 -- bigmouth 整理(转寄)
发信站: 饮水思源站 (Fri Apr 25 20:51:31 1997)
转信站: Lilac!ustcnews!ustcnews!sjtunews!sjtubbs
出  处: bbs.sjtu.edu.cn

Posted By: Godman (天地通) on 'hacker'
Title:     黑客心经(一) 破解入门
Date:      Sat Sep 23 07:53:32 1995

      一杆小猎枪

------ UHS 破解及 Hacker 入门

    如何学破解,的确是一言难尽。因为破解软件是一个很综合的技术,它不仅仅
需要掌握计算机软件硬件等各方面的知识,而且需要有极大的耐心。

    我不可能再从汇编语言讲起,只好认为大家已经有汇编语言的基本知识,至少
你大概能看懂寄存器,比较,跳转,调用等语句吧,还得知道有个 debug软件。另
外,知道最常用的几个汇编代码:
      90      ----->   NOP  (就是什么也不干啦!)
      75 xx   ----->   JNZ xx
      74 xx   ----->   JZ  xx
      EB xx   ----->   JMP xx
      E9 xx   ----->   JMP xx
      EA xx   ----->   JMP xx  
      (EA EB E9 是不同的跳转,长、短、中)

    这次先介绍软件保护的一般手法。下面是从 UHS (Universal Hint System)
软件中提取出来的部分片段:(我破解时使用的是 Turbo Debug,为了让大家看
清除,我只好使用 debug)

debug uhs.exe
-u
31A5:9229 9A00000C4C    CALL    4C0C:0000*
31A5:922E 9AE004BD4A    CALL    4ABD:04E0*
31A5:9233 9AC7091F4A    CALL    4A1F:09C7*
*
*
* 中间都无关紧要
*
*
31A5:938B BF321A        MOV     DI,1A32
31A5:938E 1E            PUSH    DS
31A5:938F 57            PUSH    DI
31A5:9390 B8FF00        MOV     AX,00FF
31A5:9393 50            PUSH    AX
31A5:9394 9AF60F0C4C    CALL    4C0C:0FF6
31A5:9399 E88676        CALL    0A22
31A5:939C A27B1D        MOV     [1D7B],AL
31A5:939F 803E7B1D00    CMP     BYTE PTR [1D7B],00
31A5:93A4 7503          JNZ     93A9
31A5:93A6 E868D7        CALL    6B11
31A5:93A9 C706002B0300  MOV     WORD PTR [2B00],0003
31A5:93AF B8EC07        MOV     AX,07EC


    你一步一步的 p,当行至 93A6 时,出现了让人“麻烦”的阻挠画面(程序随机
地产生一个字母让用户按),这说明CALL 6B11便是作者对非注册用户的“惩罚”。
如果按错,则出现:

Program aborted!
Program terminated normally (这是 debug 的)

按对时,将进入 93A9。
那么好,将这一句处理掉,修改 E868D7 为 909090。
于是进入时不会再有相应的“惩罚”画面了。
但是,
问题并不是那么简单:进入系统后,还会随机出现注册画面。为什么呢?
其实刚才的破解是有隐患的:
在调用惩罚画面之前,系统已经将是否注册标志设置为 NO,
所以那种修改就是事后诸葛亮了。
不难看出,这个标志以及放在了 [1D7B],
也不难看出,在 CALL 0A22后,该子程序的返回值 AX 放在了 [1D7B]。

结论就很简单了:
    9399 处的 CALL 0A22 就是判断系统是否注册的子程序,而[1D7B]处存放的
是系统是否注册的标志。

很幸运,只要把[1D7B]处的数改为非零就可以了。
选择   31A5:9399 E88676        CALL    0A22
修改为           B80100        MOV AX,1

和后面的         A27B1D        MOV     [1D7B],AL
相映成辉。
破解前,不要忘记拷贝一份备份;
破解后,不要忘记把破解的文件和备份的文件比较一下,产生 Crack99 的破解描述。

留两个课后作业:
1,本文破解是否很容易?
2,本文出现的判断注册与否的片段是:
   CALL    0A22
   MOV     [1D7B],AL
   CMP     BYTE PTR [1D7B],00
   JNZ     93A9
   CALL    6B11
如果是
   CALL    xxxx
   XOR     AX,AX
   JNZ     xxxx
   CALL    xxxx   (这几个 xxxx 并不相同,只是表示一个地址而已)
那么破解又应该如何进行?


--
/------   \ | | /  ------------odman 不 会 不 知 不 可 不 知 不 能 不 知 |
\--o000-----( )----OOOo-------| e-Mail: guoxm@tx6.dee.tsinghua.edu.cn   /
--


                                                    沉默的人
                                                 Reinhard Young

※ 来源:·饮水思源站 bbs.sjtu.edu.cn·[FROM: 202.96.212.29]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.963毫秒