= 25、roboword.exe is 249,360 bytes ========================================

roboword.exe is 249,360 bytes

Error Free wrote:
> 
> ROBOWORD .... my roboword.exe is 249,360 bytes
> 
>   有很多东西摆在你眼前时, 因为还不是很需要, 所以总是会把
>   它给忽略掉; 当某天需要时, 翻天地覆却又偏偏找不到; 最後
>   你以为它丢了, 只好自己做一个, 此时在房间角落内, 你才看
>   见蹦出好多个.
> 
>   "ROBOWORD 与我" 的故事, 刚好满足了以上的情节, 当我追到
>   手後的一两天, 才又看见版上, 挤出了一堆的破解档. 是有一
>   点不平衡! 目前对此软体还不是很需要的人, 注意了罗! 可不
>   要再重蹈覆辙了哦!
> 
>   好进入正题....
> 
>   首先我们要先谈一谈如何拦截本程式--其实只要 wice 在手,
>   你是可以随时中断进去 trace  的. 你就像一个潜水夫, 潜水
>   配备亦是一级棒, 若海底内没有任何指标, 你要如何找出海中
>   的一支银针呢? 很难吧! 除非踩到狗屎, 好运当头才找的到.
> 
>   像一般的注册号码拦截, 你在画面上会看到注册的窗子, 那个
>   窗子或你打的 78787878 , 就是在海中的 "显眼指标" , 只要
>   拼命的往 78787878 游过去, 若银针没有伪装的话, 通常是容
>   易找到银针的.
> 
>   像以前我讲的 bpx lockmytask 的收窗拦截, 也是把 "打x窗
>   子" 当成一个的指标, 然後再找进去. 故破解软体的第一指标
>   , 若能够预设的够适当, 那么以後的路子就会很好走.
> 
>   这之的目标主角 "ROBOWORD" , 既没有注册窗子、又不能让你
>   打 78787878 、亦没 "打x窗子" , 那你如何预设断点?
> 
>   说了一堆纸上谈兵的东西, 有一个很重要的 "前戏" , 我们却
>   还没做. 因为破了要有用才行, 我们要先检查一下, 破了到底
>   有没有用? 因为这是测试版, 依经验, 测试版是有很多东西不
>   存在的.
> 
>   重要资料不存在, 就算你破了比对核心, 依然没什么鸟用, 除
>   非你改写程式的功力一级   若要改写一大串的东西, 不如重
>   写还来得比较快, 写出来了, 你还可以光明正大的卖钱.
> 
>   前戏不是要你对女朋友怎样, 而是要你用 Ultraedit  把字典
>   档载进来观察. 一看! 这个测试版居然有 G-Z  的资料, 这下
>   子你女朋友完了, 不! 是金点完了...
> 
>   教了你们这么多堂课, 眼看著一学期又要过, 我想再看看你们
>   的樵夫触机 (hacker sense) 提升到那里, 看看你们有没有资
>   格脱离 hacker 断奶期.
> 
>   Ok! 我问你们, 在 ROBOWORD 的执行期间, 在画面上有什么东
>   西, 可以让你当成设断的参考指标? 想一想..... 有没有想到
>   ? 想到的举手..... 好! 你举手, 请说... 对! 画面有 "A to
>   F...demo version" 等字.
> 
>   这个 "demo version" 就是我们要攻进去的第一据点. 不过千
>   万不可以为这类的指标, 都很容易的就会被你找到. 也不可先
>   入为主以为就是找不到,  hacker 就是一想到方法, 就先 trace
>   再讲; trace 不到, 再想其它的...
> 
>   1.执行 roboword .
>   2.切入 wice .
>   3.用 s 30:0 L FFFFFFFF 'demo version'
> 
>   有一点爽了..因为搜到了一个位置 30:xxxxxxxx
> 
>   4.用 bpm 30:xxxxxxxx 设断.
>   5.按 F5 返回.
> 
>   好! 第一个猜试断点设好了, 接下怎么办? 当然就是想办法让
>   我们可爱的 "金点罗伯兄" 走到你预设的断点罗! 你就随便指
>   一个字看看, 要是条件成立就会被 wice 拦下来.
> 
>   什么? 拦不下来? 我看看..... 哎呀! 你这个死小子, 没事老
>   让字典程式查 "fuck" ! 不要查 "fuck" 啦!  "fuck" 它的字
>   头是在  A-F 之内! 旁边有个 "shit" 字你试试看..
> 
>   什么? 还是拦不下来? 我再看看... 哎哟! 你怎么用破解档在
>   练习破解呢? 快去找 "纯" 试用版的回来, 再 install  一次
>   试之.
> 
>   6.经过了一番努力, 你们总算给拦下来了. 如下:
> 
> xxxx:AA8D       REPNZ   SCASB           ; <- 被拦下的地方
>                 LDS     SI,[BP+06]
>                 LES     DI,[BP+0A]
>                 MOV     AX,DI
>                 :       :
> --- KERNEL(01) ---
> 
>   这下是更爽了, 因为预测的条件是成立的. 不过要爽太早, 因
>   为程式不是你写的, 好不好追, 还是个未知数.
> 
>   7.你先按一下 F12, 到 roboword 的领空观查看看. 如下
> 
> yyyy:06DE       CALL    KERNEL!LSYRCPY
>                 MOV     AX,0001         ; <- 返回至此...
>                 POP     SI
>                 :       :
> --- ROBOWORD(03) ---
> 
>   每到一个新地方时, 你就大略的分析一下附近的程式, 我们先
>   往上看, 因为这里是出现 'A TO F ..'  的地方, 我要了解一
>   下, 有那些条件会使 CPU  走到这里.
> 
>   8.你把游标往上移, 你会看到...如下:
> 
> yyyy:0D0C       CMP     AX,0064 ; 和 64 比较?
>                 JZ      0D74
>                 :       :
>      0D2E       CMP     AX,0065 ; 65?
>                 JZ      0D74
>                 :       :
>      0D50       CMP     AX,0066 ; 66?
>                 JZ      0D74
>                 INC     WORD PTR[...]
>                 :       :
>      0D69       CALL    KERNEL!...
>                 MOV     AX,0001         ; <- 刚刚返回的地方.
> 
> --- ROBOWORD(03) ---
> 
>   以上有 64,65,66 你们想一想, 比较这些数字有什么特殊的意
>   义? 你们再往上看时, 亦有 61,62,63 , 那倒底有什么意义?
>   若是常常玩电脑的人, 应该一看就知道那是小写的 a,b,c...f
>   的 ASCII  码. 这下子你们可爽翻了a!
> 
>   以上是给新生的第一个习题... 若搜到很多个 'demo version'
>   , 请从断电重开机. 或是用最後一个 30:8xxxxxxx .  
> 
>   等一等! 等一下再收拾书包, 因为还没下课. 假如你不喜欢它
>   的抬头的话... 怎样? 还想听下去吧!
> 
>   9.离开 roboword , 用 ldr  载入 roboword . 如下:
> 
> xxxx:3F3A       XOR     BP,BP           ; 用 F10  开始走
>                 PUSH    BP
>                 :       :
>      3FCF       CALL    yyyy:3FE4       ; 用 F8 进入
> 
>  10.进入  yyyy:3FE4 的地方如下, 用 F10  开始走.
> 
> yyyy:3FE4       MOV     AX,DS
>                 NOP
>                 :       :
>      4002       CALL    zzzz:0000       ; 用 F8 再深入
> 
>  11.进入  zzzz:0000 你会看如下, 亦是用 F10  继续走.
> 
> zzzz:0000       ENTER   ...
>                 CMP     WORD PTR[BP+0C...
>                 :       :
>      0197       CALL    KERNEL!GETPRI...
>       $$        PUSH    WORD PTR[2200]
>                 PUSH    7D
>                 PUSH    00
>                 PUSH    2C9F
>                 PUSH    0330
>       ##        CALL    USER!DIALOGBOX  ; <- 跑出抬头的 call .
>       @@        CALL    wwww:098E
> 
>   我们已经知道 ## 那个 call 是显示抬头的, 但你不可以进去
>   user! 的地盘改东西. 因为 user!  是系统的范围, 改它的程
>   式码, 你的系统会完蛋.
> 
>   当然你可以插 jmp  的指令, 使程式飞过 call user! 的上空
>   , 也就是直到达 @@ . 但是 jmp  不可以乱插. 因为那些 push
>   是一些引数, 是要给  dialogbox 用的, 但是 dialogbox  会
>   自动补回 sp 值, 所以 jmp  不可乱插.
> 
>   当执行光棒走到 @@ 时, 你就把 sp 值记下来; 你再重新执行
>    roboword 一次, 当到了走 0197 时就开始注意 sp 值哦! 慢
>   慢的一步一步走, 当 sp 和刚刚一样时, 光棒所停留的那一行
>    push , 也就是你要改成 jmp @@ 的地方.
> 
>   其它的就自行练习吧! 好! 下课.....
> --
> 喜欢破解注册资料者, 请接如下 Group, 保证让你一路爽到底
> alt.crackers  alt.cracks  alt.binaries.warez.ibm-pc