= 43、如何跳过ShellWizard V2.1 Pro For Win95 & Win NT检查 Soft-ICE 的存在 ======



     刚开始安装 ShellWizard v⒉.⒈ Pro 完後,

     一执行,当场傻眼了,出现什么[不能和 Soft-ICE 同时执行...]

     哇! 呐ㄟ安ㄋㄟ.....

      这是我第一个碰上会检查是否有 Soft-ICE/Win95 存在的软体,

     而且执行 WLDR 将程式读进来的话,它就直接执行,而不会先到

     Soft-ICE 主控权下,该如何按 [F10] 单步执行呢?

      正在那里想了半天,不晓得该用那个 API 来拦,突然灵机一动

     想到一个常常看到却从来没用过的 API ∶

          BPX GetStartupInfoA

      老实讲,我也不知道它有什么作用,只不过在 Trace 程式前面

     都会常常看到它,所以都背起来了... 想不到这次派上用场了!

     其实还有一个 API 可以用(BPX GetVersion)

     不过它被拦下的次数太多了,所以我就没用它了.....

     嗯~废话不多说了... 切入我们的主题吧!

 

     如何跳过 ShellWizard v⒉.⒈ Pro for Windows 95/NT

     检查 Soft-ICE 的存在.....

=========================================================================

 1>. 执行 WinICE 进入 Windows 95 画面後,按 [Ctrl] + D 切换到

     Soft-ICE , 下 BPX GetStartupInfoA ,

     再按 [F5] 回 Windows 95 控制权。

 

     P.S. 一般我们如果执行 WLDR 将程式读进来的话,会先在 Soft-ICE

          控制权下,但 ShellWizard.exe 如果用 WLDR

          读进来,你会发现它则是直接执行 ShellWizard,

          而不会先到 Soft-ICE 主控权下。

 

          它也算是特例之一,和我先前讲解的 More Than Word

          类似... 但 ShellWizard 找不到有被压缩过的讯息

          ,不知它的档案进入点被做过什么样的处理!?

 

 2>. 执行 ShellWizard.exe,会启动刚刚下的中断点,

     被 Soft-ICE 拦下,但第一次拦下来的,并不是我们想要的,因为

     它是拦到 MSVCRT.DLL ,所以 G [Enter] ,再跑一次.....

 

 3>. 嘿~嘿~第二次就中奖了,我可不是说统一发票中奖啊.....

     嗯... 先下 BD * (先关掉 BPX GetStartupInfoA)

 

 7>. 再来下 G @SS:ESP [Enter]  (可以快速回到 ShellWizard 主程)

                               (式,不必一直按 [F10] ,还要按老半天.....)

     P.S. 像我的 Soft-ICE/Win95 的 [F11] 键就是设定为 G @SS:ESP

          所以我是直接按 [F11] ,按一个键就回到主程式了。

 

 8>. 再来就要做苦工了..... 按 [F10] 一直走到下面∶

     CS:0042BFD2 CALL 0042FCEA          ;按 [F8] 追进去

       :                                ;

 

 9>. 然後继续按 [F10] ,走到下面.....

     CS:0042FCFA CALL 0042FD6A          ;按 [F8] 追进去

       :                                ;

 

10>. 然後继续按 [F10] ,走到下面.....

     CS:0042FD6A JMP  [00817C14]        ;按 [F8] 追进去

       :                                ;

 

11>. 然後继续按 [F10] ,走到下面.....

     CS:5F40A51B CALL [EBX+58]          ;按 [F8] 追进去

     CS:5F40A51E TEST EAX,EAX           ;

     CS:5F40A520 JZ   5F40A537          ;

       :                                ;

 

12>. 然後继续按 [F10] ,走到下面.....

     CS:00411B28 CALL 0042B560          ;← 这里是终点站了,按 [F8] 追进去

     CS:00411B2D MOV  ECX,[EBP-14]      ;

       :                                ;

       :                                ;

 

13>. 然後继续按 [F10] ,走到下面.....

     CS:0042B593 CMP  DWORD PTR [EDX-10],31303156  ;← 看到没? 这里有 Check!

     CS:0042B59A JNZ  0042B5E2                     ;← 这里跳过去,就闪过去了!

     CS:0042B59C PUSH 000050F7                     ;

       :                                           ;

       :                                           ;

     [後记] 我没有拿掉日期限制,就当作是给 Cracker 新生一个作业吧...

            至於注册码的部份,我还没找出来.....

            因为明明强迫注册成功了,但离开程式,再重新执行,又变成

            [未注册版],真是 !@#$%&*#$%.....