⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 siceg.txt

📁 关于黑客的论坛的下载资料
💻 TXT
📖 第 1 页 / 共 4 页
字号:
0018:00002C4E E9C7D8                   JMP      0518
0018:00002C51 6A02                     PUSH     Word Ptr 2
0018:00002C53 E98ADC                   JMP      08E0
0018:00002C56 6A03                     PUSH     Word Ptr 3
0018:00002C58 E9D6DC                   JMP      0931
-U 18:2C29
0018:00002C29 50                       PUSH     AX
0018:00002C2A B400                     MOV      AH,00
0018:00002C2C 8BD8                     MOV      BX,AX
0018:00002C2E C1E302                   SHL      BX,02
0018:00002C31 03D8                     ADD      BX,AX
0018:00002C33 8BC3                     MOV      AX,BX
0018:00002C35 050500                   ADD      AX,0005
0018:00002C38 05472C                   ADD      AX,2C47
0018:00002C3B 2BF0                     SUB      SI,AX
0018:00002C3D 83C303                   ADD      BX,3
0018:00002C40 2689B7472C               MOV      ES:[BX+2C47],SI
0018:00002C45 58                       POP      AX
0018:00002C46 C3                       RET

最前面是 S-ICE 各中断的进入点 ,它用 PUSH 来取得中断表代号 ,然後
跳到其它处理程式去带动 REAL MODE 的程式 ,当遇到 RESET 8259 的时
候 ,就会执行下半段的程式 2C29~2C46 ,用以改掉中断进入点的 JMP
指令 ,使其跳到键盘处理程式 ,很不的S-ICE只写了"改"的程式 ,并没有
写"还原"的程式....问题出在那儿你知道了吗 ?

举例来说:
S-ICE 经过RESET 8259的洗礼後 ,S-ICE 的程式码变化如下所示:

0018:00002C4C 6A01                     PUSH     Word Ptr 1
0018:00002C4E E9C7D8                   JMP      0518
                          ↓变
0018:00002C4C 6A01                     PUSH     Word Ptr 1
0018:00002C4E E91605                   JMP      3167

┌———  测式程式  ———┐
│      CLI               │
│      OUT     20,11     │
│      OUT     21,00     │
│      OUT     21,04     │
│      OUT     21,01     │
│      OUT     21,11     │
│      OUT     21,08     │
│      OUT     21,04     │
│      OUT     21,01     │
└————————————┘

因此你有几种选择可做:

1. 将 2C40 涂成 NOP ,禁止修改 ,虽可承受上面那段测试程式的攻击 ,
   但如果遇到不改回原8259的 INT_8~INT_F 前 ,S-ICE 将永远取不到
   键盘控制权。(载入GB4就当机了)

2. 另辟一块记忆体帮它备份中断、还原中断...好难唷 ,我不会改.

3. 当遇到 RESET 8259 的手续时 ,产生硬体中断 ,你再决定要不要让执
   行修改的手断....效果不好

4. 第四种改法... 自己去想吧!!

--------------------------------------------------------------------------

【 S-ICE 修改密技二 】                                            - 软蛀 -
==========================================================================
    当应用程式触动 INT_1 的指令时 ,有时候 S-ICE 会发出 BEEP 声 ,并因此延迟
了一秒左右 ,这个问题将会造成使用者除错时的困扰 ,虽然可以使用 "Break ON" 的
命令来克服此问题 ,但是遇到 "DB  F1" 的指令时 ,一定会哔哔叫 ,没有办法解决 ,
除非修改指令码....嘿嘿嘿...不信可写个小程式试试看 !!

    本例是使用 386DEBUG 与 S-ICE v2.64 为例..


C:\>DXDEBUG S-ICE.EXE
-u DS:4377
382D:00004377 6A00                     PUSH     Word Ptr 0
382D:00004379 E9F4D6                   JMP      1A70
382D:0000437C 6A01                     PUSH     Word Ptr 1
382D:0000437E E9C7D8                   JMP      1C48
382D:00004381 6A02                     PUSH     Word Ptr 2
382D:00004383 E98ADC                   JMP      2010
382D:00004386 6A03                     PUSH     Word Ptr 3
382D:00004388 E9D6DC                   JMP      2061
382D:0000438B 6A04                     PUSH     Word Ptr 4
382D:0000438D E9E0D6                   JMP      1A70
382D:00004392 E9DBD6                   JMP      1A70
382D:00004395 6A06                     PUSH     Word Ptr 6
382D:00004397 E943DF                   JMP      22DD

-u DS:1c48 (观看 INT_1 的程式码)
382D:00001C48 6655                     PUSH     EBP
382D:00001C4A 06                       PUSH     ES
382D:00001C4B 06                       PUSH     ES
382D:00001C4C 1E                       PUSH     DS
382D:00001C4D 1E                       PUSH     DS
382D:00001C4E 6650                     PUSH     EAX
382D:00001C50 6653                     PUSH     EBX
382D:00001C52 6651                     PUSH     ECX
382D:00001C54 6652                     PUSH     EDX
382D:00001C56 6656                     PUSH     ESI
382D:00001C58 6657                     PUSH     EDI
382D:00001C5A 668BEC                   MOV      EBP,ESP
382D:00001C5D B80800                   MOV      AX,0008
382D:00001C60 8ED8                     MOV      DS,AX
382D:00001C62 8B462A                   MOV      AX,[BP+2A]
382D:00001C65 A33F02                   MOV      [023F],AX
382D:00001C68 8B4626                   MOV      AX,[BP+26]
382D:00001C6B A34102                   MOV      [0241],AX
382D:00001C6E 8B462E                   MOV      AX,[BP+2E]
382D:00001C71 A34302                   MOV      [0243],AX
382D:00001C74 B82000                   MOV      AX,0020
382D:00001C77 8EC0                     MOV      ES,AX
382D:00001C79 F746300200               TEST     Word Ptr [BP+30],0002
382D:00001C7E 0F850000                 JNE      1C82
382D:00001C82 0F21F0                   MOV      EAX,DR6             ;
382D:00001C85 6650                     PUSH     EAX                 ;
382D:00001C87 6633C0                   XOR      EAX,EAX             ;将DR6清0
382D:00001C8A 0F23F0                   MOV      DR6,EAX             ;
382D:00001C8D 6658                     POP      EAX                 ;
382D:00001C8F A26401                   MOV      [0164],AL
382D:00001C92 A90040                   TEST     AX,4000     ;是否因'T'产生中断
382D:00001C95 0F859700                 JNE      1D30        ;是则 JMP
382D:00001C99 A80F                     TEST     AL,0F      ;是否因DRx产生中断
382D:00001C9B 0F852B02                 JNE      1ECA       ;是则 JMP
382D:00001C9F 8D1EC20A                 LEA      BX,[0AC2]
382D:00001CA3 B90400                   MOV      CX,0004             ;四个断点
382D:00001CA6 807F1100                 CMP      Byte Ptr [BX+11],00 ;比较程式
382D:00001CAA 0F840800                 JE       1CB6                ;
382D:00001CAE 807F1104                 CMP      Byte Ptr [BX+11],04 ;
382D:00001CB2 0F851C00                 JNE      1CD2                ;
382D:00001CB6 668B7F05                 MOV      EDI,[BX+5]          ;
382D:00001CBA 660FB7462A               MOVZX    EAX,Word Ptr [BP+2A];
382D:00001CBF 66C1E004                 SHL      EAX,04              ;
382D:00001CC3 660FB77626               MOVZX    ESI,Word Ptr [BP+26];
382D:00001CC8 6603C6                   ADD      EAX,ESI             ;
382D:00001CCB 663BC7                   CMP      EAX,EDI             ;
382D:00001CCE 0F840503                 JE       1FD7                ;
382D:00001CD2 83C316                   ADD      BX,16               ;
382D:00001CD5 E2CF                     LOOP     1CA6                ;
382D:00001CD7 50                       PUSH     AX              ;都不是上面的
382D:00001CD8 51                       PUSH     CX              ;原因 ,就打开
382D:00001CD9 B90300                   MOV      CX,0003         ;喇叭叫几声
382D:00001CDC B003                     MOV      AL,03           ;
382D:00001CDE E661                     OUT      61,AL (喇叭ON)  ;
382D:00001CE0 51                       PUSH     CX              ;
382D:00001CE1 33C9                     XOR      CX,CX           ;
382D:00001CE3 E2FE                     LOOP     1CE3  (DELAY)   ;
382D:00001CE5 E2FE                     LOOP     1CE5            ;
382D:00001CE7 E2FE                     LOOP     1CE7            ;
382D:00001CE9 E2FE                     LOOP     1CE9            ;
382D:00001CEB E2FE                     LOOP     1CEB            ;
382D:00001CED E2FE                     LOOP     1CED            ;
382D:00001CEF E2FE                     LOOP     1CEF            ;
382D:00001CF1 E2FE                     LOOP     1CF1            ;
382D:00001CF3 E2FE                     LOOP     1CF3            ;
382D:00001CF5 E2FE                     LOOP     1CF5            ;
382D:00001CF7 E2FE                     LOOP     1CF7            ;
382D:00001CF9 E2FE                     LOOP     1CF9            ;
382D:00001CFB E2FE                     LOOP     1CFB            ;
382D:00001CFD E2FE                     LOOP     1CFD            ;
382D:00001CFF E2FE                     LOOP     1CFF            ;
382D:00001D01 B000                     MOV      AL,00           ;
382D:00001D03 E661                     OUT      61,AL (喇叭OFF) ;
382D:00001D05 E2FE                     LOOP     1D05            ;
382D:00001D07 E2FE                     LOOP     1D07  (DELAY)   ;
382D:00001D09 E2FE                     LOOP     1D09            ;
382D:00001D0B E2FE                     LOOP     1D0B            ;
382D:00001D0D E2FE                     LOOP     1D0D            ;
382D:00001D0F E2FE                     LOOP     1D0F            ;
382D:00001D11 E2FE                     LOOP     1D11            ;
382D:00001D13 E2FE                     LOOP     1D13            ;
382D:00001D15 E2FE                     LOOP     1D15            ;
382D:00001D17 59                       POP      CX              ;
382D:00001D18 E2C2                     LOOP     1CDC            ;
382D:00001D1A B80200                   MOV      AX,0002         ;
382D:00001D1D E2FE                     LOOP     1D1D            ;
382D:00001D1F 48                       DEC      AX              ;
382D:00001D20 75FB                     JNE      1D1D            ;
382D:00001D22 59                       POP      CX              ;
382D:00001D23 58                       POP      AX              ;
382D:00001D24 EB13                     JMP      1D39            ;

因此你必需想办法让 S-ICE 认识发生此中断的原因 ,或是叫它闭嘴...真残忍
---------------------------------------------------------------------------
有些烂程式会故意用一些 CPU 不认识的指令来产生 INT_6 ,例如 FFFF.FEF4 之类的
指令码 ,此时 S-ICE 会秀出 Gxxxxxx Pxxxxxx Exxxxx
                          (R)eturn (C)ountinue
万一程式大量使用此指令 ,你岂不是要按键按到爽 ,追究原因是 S-ICE 不认识它 ,
所以才会停下来让使用者确定是否写错程式啦 ,可惜就有保护故意使用它 ,使得它
反而是除错过程的困扰 ,因此我们得想办法让 S-ICE 认识它 ,或是让它的眼睛瞎掉
(让它没看到)....毒瞎它的眼睛啦....


-U DS:23F4
382D:000023F4 80FBF0                   CMP      BL,F0
382D:000023F7 0F841300                 JE       240E
382D:000023FB 26678B5FFE               MOV      BX,ES:[EDI-2] ;
382D:00002400 81FBCD06                 CMP      BX,06CD       ;是否因为INT_6
382D:00002404 0F840600                 JE       240E          ;产生中断
382D:00002408 B80006                   MOV      AX,0600       ;
382D:0000240B E8D712                   CALL     36E5          ;秀出视窗并请按
382D:0000240E B80600                   MOV      AX,0006       ;C.R.键
382D:00002411 E98DF6                   JMP      1AA1          ;
382D:00002414 6655                     PUSH     EBP           ;

-U DS:36E5
382D:000036E5 50                       PUSH     AX            ;打开视窗的副程式
382D:000036E6 56                       PUSH     SI            ;
382D:000036E7 51                       PUSH     CX            ;※注一
382D:000036E8 33C0                     XOR      AX,AX         ;
382D:000036EA B9AA00                   MOV      CX,00AA       ;
382D:000036ED 8D364A01                 LEA      SI,[014A]     ;
382D:000036F1 2E1304                   ADC      AX,CS:[SI]    ;
382D:000036F4 46                       INC      SI            ;
382D:000036F5 E2FA                     LOOP     36F1          ;
382D:000036F7 150000                   ADC      AX,0000       ;
382D:000036FA 2E3B06F501               CMP      AX,CS:[01F5]  ;
382D:000036FF 0F840200                 JE       3705          ;
382D:00003703 EBFE                     JMP      3703          ;
382D:00003705 59                       POP      CX            ;

注一: 打开视窗的程式开头刚好就是 S-ICE 检查序号是否被篡改的保护程式.
      若序号被篡改 ,则会当在 3703 的地方.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -