= 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 新生一个作业吧... 至於注册码的部份,我还没找出来..... 因为明明强迫注册成功了,但离开程式,再重新执行,又变成 [未注册版],真是 !@#$%&*#$%.....