• 标 题:dos就下的log用法 (7千字)
  • 作 者:peterchen
  • 时 间:2001-10-9 12:24:25
  • 链 接:http://bbs.pediy.com

原作者:不明
翻译者:PeterChen
破解对像:Ghost Demo (3.1d)
神兵利器:TR[Dos版]
软件介绍:系统硬件初始化,现在就是用来Back[备份]系统!
        ---------------------
1. 第一步脱壳:

    TR ghost.exe        ;TR加载ghost.exe
        getknl        ;到达kernel
                ;等待一会儿
    mkexe ghost.exe        ;生成mem.exe文件

  你可以测试一下,脱壳文件Mem.exe。
        ---------------------
2. 第二步破解15秒限制:
    TR mem.exe              ;再一次加载mem.exe
        g        ;退出TR界面

 
当“等待15分钟”之后,压Ctrl+D。然后再出现TR的界面,
  再压<F10>去看什么样循环。[也就是找出循环内容加以分析]
  很容易就找到延迟Proc_199f:
    汇编:                                偏移:代码:
    PUSHF                              ;3304:199F  9C             
    CLI                                ;3304:19A0  FA             
    MOV      AL,00                    ;3304:19A1  B000           
    OUT      43,AL                    ;3304:19A3  E643 <---         
    CALL      199E                    ;3304:19A5  E8F6FF         
    IN        AL,40                    ;3304:19A8  E440           
    MOV      BL,AL                    ;3304:19AA  8AD8           
    CALL      199E                    ;3304:19AC  E8EFFF         
    IN        AL,40                    ;3304:19AF  E440           
    MOV      BH,AL                    ;3304:19B1  8AF8           
    NOT      BX                      ;3304:19B3  F7D3           
    POPF                              ;3304:19B5  9D             
    MOV      AX,BX                    ;3304:19B6  8BC3           
    RET                                ;3304:19B8  C3             

 
  修改:

    a 199f                ;汇编内容
        MOV      AX,SI            ;3304:199F  8BC6
        DEC      AX              ;3304:19A1  48             
        RET                        ;3304:19A2  C3

  用十六进制工具修改Mem.exe:

    搜索  :    9c fa b0 00 46<-- 43
    修改  :    8b c6 48 c3
        本文有误:e6原作者写成了46!
        ---------------------
3. 破解评估限制:


    TR MEM.exe
        G        ;退出
 
  当"Connection type"(可能是当退出TR,不久快快)界面出来之时,
  压 <Ctrl+D>,
  和按 <Enter>,又返回TR领域。

        Logpro 1    ;log it [log是写日志]
        g

 
  当Ghost执行完,就会生成'logpro.dat'文件

      Lopro            ;在Dos会提示

 
  它会读取'logpro.dat'而且生成'logpro.txt'。

    Ren logpro.txt log1.txt    ;重名保存
    date
        10-22-98    ;产生最近时间
    TR mem.exe
        g
  当"Connection type"(可能是当退出TR,不久快快)界面出来之时,
  压 <Ctrl+D>,
  和按 <Enter>,又返回TR领域。
        Logpro 1    ;log it[log是写日志]
        g
    logpro
    ren logpro.txt log2.txt

 
  如今天有两个日志. log1.txt是执行时间,log2.txt过期时间。
  比较结果:

log1.txt
......
CALL 0fdb            ;40f5:04dd e8fb0a                     
  CALL FAR 32c4:0638  ;40f5:0ff5 9a3806c432                 
    RETF                ;32c4:064a cb                         
  CALL FAR 32c4:401d  ;40f5:10ac 9a1d40c432                 

log2.txt
......
CALL 0fdb            ;40f5:04dd e8fb0a                     
  CALL FAR 32c4:0638  ;40f5:0ff5 9a3806c432                 
    RETF                ;32c4:064a cb                         
  CALL FAR 32c4:27e7  ;40f5:1054 9ae727c432                 

  我首先发现不同之处proc_fdb. 我们推理:

CALL 0fdb            ;call check_if_timeout [测试过期时间]
  CALL FAR 32c4:0638  ;call get_time [当前时间]
    RETF               
  ...            ;compare [进行比较]
  j?? @@
  CALL FAR 32c4:27e7  ;call error [错误提示]
@@:

 
  让我们严密一些:
 
    TR mem.exe
        g fdb        ;direct go to proc_fdb [直接跳到proc_fdb]
        ....        ; some <enter>        [压enter]
TR界面:
        U $,105d>tem.txt [反汇编内容另存为Tem.txt]
'tem.txt'内容:

    ENTER    001C,00                  ;40F5:0FDB  C81C0000       
    CMP      [WORD 00B2],00          ;40F5:0FDF  833EB20000     
    JNE      0FF0                    ;40F5:0FE4  750A           
    CMP      [WORD 00AC],00          ;40F5:0FE6  833EAC0000     
    JNE      0FF0                    ;40F5:0FEB  7503           
    JMP      10D8                    ;40F5:0FED  E9E800         
    PUSH      SS                      ;40F5:0FF0  16             
    LEA      AX,[BP-04]              ;40F5:0FF1  8D46FC         
    PUSH      AX                      ;40F5:0FF4  50             
    CALL FAR  32C4:0638                ;40F5:0FF5  9A3806C432     
    ADD      SP,04                    ;40F5:0FFA  83C404         
    MOVSX    EAX,[WORD BP-04]        ;40F5:0FFD  660FBF46FC     
    MOV      [BP-10],EAX              ;40F5:1002  668946F0       
    MOVZX    EAX,[BYTE BP-01]        ;40F5:1006  660FB646FF     
    MOV      [BP-14],EAX              ;40F5:100B  668946EC       
    MOVZX    EAX,[BYTE BP-02]        ;40F5:100F  660FB646FE     
    MOV      [BP-18],EAX              ;40F5:1014  668946E8       
    MOV      EAX,[BP-10]              ;40F5:1018  668B46F0       
    ADD      EAX,FFFFF894            ;40F5:101C  660594F8FFFF   
    IMUL      EAX,EAX,00002710        ;40F5:1022  6669C010270000 
    MOV      EDX,[BP-14]              ;40F5:1029  668B56EC       
    IMUL      EDX,EDX,64              ;40F5:102D  666BD264       
    ADD      EAX,EDX                  ;40F5:1031  6603C2         
    ADD      EAX,[BP-18]              ;40F5:1034  660346E8       
    MOV      [BP-0C],EAX              ;40F5:1038  668946F4       
    MOV      AX,7A18                  ;40F5:103C  B8187A         
    MOV      ES,AX                    ;40F5:103F  8EC0           
    MOV      EAX,[ES:0A18]            ;40F5:1041  6626A1180A     
    CMP      EAX,[BP-0C]              ;40F5:1046  663B46F4       
                                            <<<-----
    JGE      105C                    ;40F5:104A  7D10           
    PUSH      01                      ;40F5:104C  6A01           
    PUSH      7A18                    ;40F5:104E  68187A         
    PUSH      0FFA                    ;40F5:1051  68FA0F         
    CALL FAR  32C4:27E7                ;40F5:1054  9AE727C432     
    ADD      SP,06                    ;40F5:1059  83C406         
    MOV      AX,7A18                  ;40F5:105C  B8187A         

    到此我们要如何做了?
    a 1046
        jmp 105c    ;eb 14
    G

 
  它能运行!我们开始用十六进制工具修改Mem.exe:

    搜索  :    66 3b 46 f4 7d 10
    修改  :    eb 14

 
  至此,脱壳,破解,都完成了!

        ---------------------
4. 把Mem.exe拷贝到Ghost.exe的同目录下运行。

  I think we can make the MEM.EXE run without ghost.exe:
  我想应该制造一个脱离ghost.exe的Mem:

    a. make MEM.EXE as follow:
          制造Mem.exe过程:
        mkexe        ;不开参数
    b. If MEM.exe large than ghost.exe's main part,
      compress it.
          如果Mem.exe比ghost.exe主要部分时可以压缩:
        pklite mem.exe
        copy /b mem.exe+dummy    ;制造合适长度
    c. 覆盖ghost.exe
    d. 追加mem.exe
        copy /b mem.exe+overlay

  If you have done it, Please put it to
    ftp://ftp.nease.net/incoming/tr
  and tell me.

Thank You!

--------------------------------------------------------------
一个朋友告诉我:


这里,我想告诉你关我破解Ghost31d的方法。因为你的方法有一些不全
'Load Disk/Partition to Image'.[这个是ghost的功能,是加载或保存映象文件]
After MKEXE Ghost.exe
之后Mkexe ghost.exe

重名mem.exe为GGGGG.exe


  TR GGGGG.exe -#e=g.env
    bp ip=5497
    g
    a cs:ip
      cs:5497 jmp 550E
    bp ip=1386
    g
    a cs:ip
      cs:1386 jmp 13A1
    g
    q

运行GGGGG.exe时已经是注册版了!

PeterChen:
不是别人不全而是别人方法比反锁而已,破解就好像数学一样条条大路通罗马!