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

📄 siceg.txt

📁 关于黑客的论坛的下载资料
💻 TXT
📖 第 1 页 / 共 4 页
字号:
---------------------------------------------------------------------------
追踪程式後 ,发现应用程式也会使用除错暂存器来解码....怎麽办 ?
或许各位有听过在V86下的应用程式是无权读写系统暂存器(CRx.DRx) ,所以当V86下
的程式尝试读写这些暂存器 ,会被 S-ICE 拦下 ,经由内部指令翻译的方式 ,让使用者
能够改到系统暂存器 ,不过万一 S-ICE 不做此命令翻译 ,则 V86 下的程式就取不到
控制权 ,因此首先你要知道被除错的程式用了那些除错暂存器 ,或是你打算开放那些
给使用者 ,那些不开放...甚至做出适当回应..

底下是 S-ICE 对於指令翻译的程式码..

-U DS:2D42
3994:00002D42 668B4614                 MOV      EAX,[BP+14]
3994:00002D46 0F23C0                   MOV      DR0,EAX
3994:00002D49 E9D600                   JMP      2E22
3994:00002D4C 0F21C0                   MOV      EAX,DR0
3994:00002D4F 66894614                 MOV      [BP+14],EAX
3994:00002D53 E9CC00                   JMP      2E22
3994:00002D56 80FC23                   CMP      AH,23
3994:00002D59 0F850A00                 JNE      2D67
3994:00002D5D 668B4614                 MOV      EAX,[BP+14]
3994:00002D61 0F23C8                   MOV      DR1,EAX
3994:00002D64 E9BB00                   JMP      2E22
3994:00002D67 0F21C8                   MOV      EAX,DR1
3994:00002D6A 66894614                 MOV      [BP+14],EAX
3994:00002D6E E9B100                   JMP      2E22
3994:00002D71 80FC23                   CMP      AH,23
3994:00002D74 0F850A00                 JNE      2D82
3994:00002D78 668B4614                 MOV      EAX,[BP+14]
3994:00002D7C 0F23D0                   MOV      DR2,EAX
3994:00002D7F E9A000                   JMP      2E22
3994:00002D82 0F21D0                   MOV      EAX,DR2
3994:00002D85 66894614                 MOV      [BP+14],EAX
3994:00002D89 E99600                   JMP      2E22
3994:00002D8C 80FC23                   CMP      AH,23
3994:00002D8F 0F850A00                 JNE      2D9D
3994:00002D93 668B4614                 MOV      EAX,[BP+14]
3994:00002D97 0F23D8                   MOV      DR3,EAX
3994:00002D9A E98500                   JMP      2E22
3994:00002D9D 0F21D8                   MOV      EAX,DR3
3994:00002DA0 66894614                 MOV      [BP+14],EAX
3994:00002DA4 EB7C                     JMP      2E22
3994:00002DA6 90                       NOP
3994:00002DA7 80FC23                   CMP      AH,23
3994:00002DAA 0F850A00                 JNE      2DB8
3994:00002DAE 668B4614                 MOV      EAX,[BP+14]
3994:00002DB2 0F23F0                   MOV      DR6,EAX
3994:00002DB5 EB6B                     JMP      2E22
3994:00002DB7 90                       NOP
3994:00002DB8 0F21F0                   MOV      EAX,DR6
3994:00002DBB 66894614                 MOV      [BP+14],EAX
3994:00002DBF EB61                     JMP      2E22
3994:00002DC1 90                       NOP
3994:00002DC2 80FC23                   CMP      AH,23
3994:00002DC5 0F850A00                 JNE      2DD3
3994:00002DC9 668B4614                 MOV      EAX,[BP+14]
3994:00002DCD 0F23F8                   MOV      DR7,EAX
3994:00002DD0 EB50                     JMP      2E22
3994:00002DD2 90                       NOP
3994:00002DD3 0F21F8                   MOV      EAX,DR7
3994:00002DD6 66894614                 MOV      [BP+14],EAX
3994:00002DDA EB46                     JMP      2E22
3994:00002DDC 90                       NOP
3994:00002DDD 80FC22                   CMP      AH,22
3994:00002DE0 0F850700                 JNE      2DEB
3994:00002DE4 668B4614                 MOV      EAX,[BP+14]
3994:00002DE8 EB38                     JMP      2E22
3994:00002DEA 90                       NOP
3994:00002DEB 0F20C0                   MOV      EAX,CR0
3994:00002DEE 66894614                 MOV      [BP+14],EAX
3994:00002DF2 EB2E                     JMP      2E22
3994:00002DF4 90                       NOP
3994:00002DF5 80FC22                   CMP      AH,22
3994:00002DF8 0F850700                 JNE      2E03
3994:00002DFC 668B4614                 MOV      EAX,[BP+14]
3994:00002E00 EB20                     JMP      2E22
3994:00002E02 90                       NOP
3994:00002E03 0F20D0                   MOV      EAX,CR2
3994:00002E06 66894614                 MOV      [BP+14],EAX
3994:00002E0A EB16                     JMP      2E22
3994:00002E0C 90                       NOP
3994:00002E0D 80FC22                   CMP      AH,22
3994:00002E10 0F850700                 JNE      2E1B
3994:00002E14 668B4614                 MOV      EAX,[BP+14]
3994:00002E18 EB08                     JMP      2E22
3994:00002E1A 90                       NOP
3994:00002E1B 0F20D8                   MOV      EAX,CR3
3994:00002E1E 66894614                 MOV      [BP+14],EAX

举例来说 ,如果你不想使用者的程式写入 DR2 ,但允许读取 ,那你就把写入 DR2 的
指令干掉就行了....又举例来说 ,有个GA的外壳会用 DR0 做解码 ,并涂掉其它 DRx
那麽我们就开放 DR0 ,其它的写入动作忽略 ,并於写入 DR7 时做适当回应 ,於是两
者皆可和平使用 DRx ,它用 DR0.DR7 ,S-ICE 用 DR3.DR7 ,还有一种情形是 PPIP
这套外壳只是涂掉 DRx ,因此你只要不要让 S-ICE 去翻译这些断手断脚的指令 ,追
起来形同没有防破能力哩......还有其它玩法吗 ,当然有...自己去找吧.

至於你要怎麽知道应用程式用了那些除错暂存器 ,那就得凭个人的功力了 ,笔者有自
己的「系统资源分析」程式 ,你呢....哈哈哈....自己想办法吧 ,我是不会流出来害
人的。又如果应用程式把所有的除错暂存器用完了呢 ,那麽你就只好放弃使用它 ,改
用其它类似的硬体中断能力 ,例如 BPX.BPINT.'T' 等等 ,或用P5新增加的 CR4.DR4.
DR5 暂存器啦 !!

有关於 V86 下读取系统暂存器的问题与技巧 ,请参阅笔者保护模式的电子刊物第三
集。
---------------------------------------------------------------------------
上次提到在倚天中文下叫出 S-ICE 的密技改法又有新版的改法了:
(因为我没有未改过的版本 ,所以列出改过的程式码给各为参"拷"一下吧)

-u DS:3127 (INT_10h 进入点)
3736:00003127 6655                     PUSH     EBP
3736:00003129 06                       PUSH     ES
3736:0000312A 06                       PUSH     ES
3736:0000312B 1E                       PUSH     DS
3736:0000312C 1E                       PUSH     DS
3736:0000312D 6650                     PUSH     EAX
3736:0000312F 6653                     PUSH     EBX
3736:00003131 6651                     PUSH     ECX
3736:00003133 6652                     PUSH     EDX
3736:00003135 6656                     PUSH     ESI
3736:00003137 6657                     PUSH     EDI
3736:00003139 668BEC                   MOV      EBP,ESP
3736:0000313C B80800                   MOV      AX,0008
3736:0000313F 8ED8                     MOV      DS,AX
3736:00003141 8B462A                   MOV      AX,[BP+2A]
3736:00003144 A33F02                   MOV      [023F],AX
3736:00003147 8B4626                   MOV      AX,[BP+26]
3736:0000314A A34102                   MOV      [0241],AX
3736:0000314D 8B462E                   MOV      AX,[BP+2E]
3736:00003150 A34302                   MOV      [0243],AX
3736:00003153 807E1500                 CMP      Byte Ptr [BP+15],00
3736:00003157 0F854D00                 JNE      31A8
3736:0000315B 8A4614                   MOV      AL,[BP+14]
3736:0000315E B012                     MOV      AL,12               ;改
3736:00003160 A2EE01                   MOV      [01EE],AL           ;的
3736:00003163 8026FB03FE               AND      Byte Ptr [03FB],FE  ;地
3736:00003168 EB3E                     JMP      31A8                ;方
3736:0000316A 90                       NOP
3736:0000316B 90                       NOP


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

                                                             ┌┐┌┐∞
【 S-ICE 修改密技第三集 】                                   ┘└┘└┘
==========================================================================
    在拨陈明志写的 Decoder.COM 壳 ,萤幕常常会被保护给关掉 ,造成 S-ICE 看不
到画面 ,无法继续追纵....怎麽办呢 ?

    很简单 ,因为它使用 "IN 3DA" 、"OUT 3C0,0" 的方式当掉萤幕 ,所以就可以用
"IN 3DA" 、"OUT 3C0,23" 还原画面 ,但是它不停的重复执行关掉萤幕的动作 ,如果
它一直关萤幕 ,而你一直开萤幕 ,拼命键入此命令岂不麻烦 ,所以笔者修改了 S-ICE
的部份程式码 ,让它在每次打开除错视窗时 ,自动执行上面两行指令 ,以後就不怕别
人当掉萤幕了。

    很幸运的 S-ICE  每次在打开视窗的时候 ,会去检查序号的检查码 ,如果不正确
便会当机 ,既然已知每次打开视窗前就一定会检查序号保护 ,那麽你就可以修改此段
程式码 ,让它不但可以不检查序号的检查码 ,又可以帮你键入上面还原萤幕的按键动
作 ,岂不一举数得。

C:\>DXDEBUG S-ICE.EXE  (以网路上的 2.64 为例)
-u ds:36e5
390A:000036E5 50                       PUSH     AX
390A:000036E6 56                       PUSH     SI
390A:000036E7 51                       PUSH     CX              ┐
390A:000036EA B9AA00                   MOV      CX,00AA         │ 检
390A:000036ED 8D364A01                 LEA      SI,[014A]       │ 查
390A:000036F1 2E1304                   ADC      AX,CS:[SI]      │ 序
390A:000036F4 46                       INC      SI              ├ 号
390A:000036F5 E2FA                     LOOP     36F1            │ 的
390A:000036F7 150000                   ADC      AX,0000         │ 程
390A:000036FA 2E3B06F501               CMP      AX,CS:[01F5]    │ 式
390A:000036FF 0F840200                 JE       3705            │
390A:00003703 EBFE                     JMP      3703            │
390A:00003705 59                       POP      CX              ┘
390A:00003706 5E                       POP      SI
390A:00003707 E81B00                   CALL     3725
390A:0000370A 58                       POP      AX
390A:0000370B E85045                   CALL     7C5E
390A:0000370E 33C9                     XOR      CX,CX
390A:00003710 BB0300                   MOV      BX,0003
    (上面这段程式码如何找到 ,已在第二集叙述过 ,不再重复)


--------------------------------------------------------------------------
    某些保护程式会使用失去相容性的方法去锁死键盘 ,其方法为 "OUT 60,F5"
解锁键盘的方法为 "OUT 60,F4" ,不过这种方法对於非 AMI KeyBoard BIOS 会产生
键盘锁死 ,也就是上锁有效、解锁无效 ,不过已有部份 PD/SW 外壳采用此法去防破
解 ,所以笔者也提出来讨论一下好了。

    既然知道解锁法则 ,那麽你也可以用上面提到的方法去闪地雷 ,不过这种改法并
不是最好的选择 ,因为只要你没有下断点 ,就无法在在程式未执行完叫出 S-ICE ,这
是因为此时键盘还是被锁死 ,任何按键皆无效。所以还有其它更贱的改法 ,就是在每
次产生中断时执行本程式。

    理论上如果保护程式锁死键盘後没有再使用任何中断 ,则键盘一样被锁死 ,其实
只要下 "BREAK ON" 则可以保证热键有效 ,因为程式只要执行 CLI.STI.CALL.....等
等命令就会触发保护模式下的中断 ,这个原因很难解释 ,只能说这是保护模式等级游
戏的规则 ,各位可以不去管它。

    我想後者的程式码改法各位可能不知道要夹在那儿 ,我就随便列一段好了

C:\>DXDEBUG S-ICE.EXE
-u ds:1a70              (笔者随便举例列出 INT_90h 的中断处理程式)
                        (其实所有中断皆呼叫此段程式码)
390A:00001A70 6655                     PUSH     EBP
390A:00001A72 06                       PUSH     ES
390A:00001A73 06                       PUSH     ES
390A:00001A74 1E                       PUSH     DS
390A:00001A75 1E                       PUSH     DS
390A:00001A76 6650                     PUSH     EAX
390A:00001A78 6653                     PUSH     EBX
390A:00001A7A 6651                     PUSH     ECX
390A:00001A7C 6652                     PUSH     EDX
390A:00001A7E 6656                     PUSH     ESI
390A:00001A80 6657                     PUSH     EDI
390A:00001A82 668BEC                   MOV      EBP,ESP
390A:00001A85 B80800                   MOV      AX,0008
390A:00001A88 8ED8                     MOV      DS,AX
390A:00001A8A 8B462A                   MOV      AX,[BP+2A]
390A:00001A8D A33F02                   MOV      [023F],AX
390A:00001A90 8B4626                   MOV      AX,[BP+26]
390A:00001A93 A34102                   MOV      [0241],AX
390A:00001A96 8B462E                   MOV      AX,[BP+2E]
390A:00001A99 A34302                   MOV      [0243],AX

⌨️ 快捷键说明

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