📄 siceg.txt
字号:
390A:00001A9C 660FB74624 MOVZX EAX,Word Ptr [BP+24]
390A:00001AA1 C606FC0300 MOV Byte Ptr [03FC],00
390A:00001AA6 B400 MOV AH,00
390A:00001AA8 660FB7C0 MOVZX EAX,AX
390A:00001AAC C606D10C00 MOV Byte Ptr [0CD1],00
390A:00001AB1 BB2000 MOV BX,0020
390A:00001AB4 8EC3 MOV ES,BX
390A:00001AB6 660FB75E36 MOVZX EBX,Word Ptr [BP+36]
390A:00001ABB 66C1E304 SHL EBX,04
390A:00001ABF 836E3206 SUB Word Ptr [BP+32],6
390A:00001AC3 660FB77E32 MOVZX EDI,Word Ptr [BP+32]
390A:00001AC8 2667668B148500000000 MOV EDX,ES:[EAX*4]
390A:00001AD2 875626 XCHG DX,[BP+26]
390A:00001AD5 89169101 MOV [0191],DX
390A:00001AD9 266789143B MOV ES:[EBX+EDI],DX
390A:00001ADE 66C1EA10 SHR EDX,10
390A:00001AE2 83C702 ADD DI,2
390A:00001AE5 87562A XCHG DX,[BP+2A]
390A:00001AE8 89168F01 MOV [018F],DX
390A:00001AEC 266789143B MOV ES:[EBX+EDI],DX
390A:00001AF1 83C702 ADD DI,2
390A:00001AF4 8B562E MOV DX,[BP+2E]
390A:00001AF7 6681662EFFFCFEFF AND Dword Ptr [BP+2E],FFFEFCFF
390A:00001AFF 803E570100 CMP Byte Ptr [0157],00 ┐
390A:00001B04 0F841100 JE 1B19 │
390A:00001B08 F7C20001 TEST DX,0100 │
390A:00001B0C 0F840900 JE 1B19 │就
390A:00001B10 800EFA0310 OR Byte Ptr [03FA],10 │这
390A:00001B15 81E2FFFE AND DX,FEFF │一
390A:00001B19 266789143B MOV ES:[EBX+EDI],DX │段
390A:00001B1E A38D01 MOV [018D],AX │
390A:00001B21 F606FA033F TEST Byte Ptr [03FA],3F │
390A:00001B26 0F851700 JNE 1B41 ┘
390A:00001B2A 665F POP EDI
390A:00001B2C 665E POP ESI
390A:00001B2E 665A POP EDX
390A:00001B30 6659 POP ECX
390A:00001B32 665B POP EBX
390A:00001B34 6658 POP EAX
390A:00001B36 1F POP DS
390A:00001B37 5D POP BP
390A:00001B38 07 POP ES
390A:00001B39 5D POP BP
390A:00001B3A 665D POP EBP
390A:00001B3C 83C402 ADD SP,2
390A:00001B3F 66CF IRETD
诈看之下好像没有位置可以塞进我们的程式码 ,其实你可以看到 1B04.1B0C.1B26
是用 80386 指令码去编的 ,换句话说你如果把它改成 74xx (JE xxx) 岂不是行行可
省 2 Bytes ,共可省 6 Bytes ,够不够你塞解锁的程式码呢 ? 最後建议各位两种改
法都改会比较稳当。
将来如果还有其它当萤幕、当键盘的方法 ,你是不是会闪了呢 ,若有机会的话 ,
咱们下次再见。
┌┐┌┐∞
【 S-ICE 修改密技第四集 】 软蛀 ┘└┘└┘
==========================================================================
前一阵子有朋友问到 ,当应用程式呼叫 INT_07 ,会造成电脑当机 ,虽然已知是
S-ICE 的 INT_07 处理程式写错所造成 ,无奈它的处理程式又臭又长 ,根本看不懂
它在写什麽 ,所以改起来很困难。
S-ICE 保护模式下的中断处理方式与一般保护模式处理方式一样 ,其方块图如下
所示:
┌—————┐┌—————┐ ┌—————┐┌—————┐
│PUSH 0000││PUSH 0001│ .............. │PUSH 00FE││PUSH 00FF│
└——┬——┘└——┬——┘ : └——┬——┘└——┬——┘
│ │ : │ │
│ │ 共256个中断 │ │
└——————┴——————┼———————┴——————┘
│
↓
┌—————————┐
│ 呼叫 V86 下的中断│
└—————————┘
下中断的处理程式 ,也就是说每个 PUSH 之後的 JMP 位址应该是相同的 ,不过S-ICE
在除错过程偶会用到单步追踪或硬体中断能力 ,而这个硬体中断的结果会触动 INT_1
,所以 S-ICE 对於 INT_1 有特别的处理程式 ,当然还有某些中断也有经过特别处理
过的 ,例如时间中断(8)、键盘中断(9)、一般保护异常(D) 都要加以处理 ,至於其它
没有特别用途的中断 ,当然就直接指向『呼叫 V86 下的中断』的程式 ,例如 INT_80
、INT_90.....知道了吗 ?
C:\>DXDEBUG S-ICE.EXE (v2.64)
DXDEBUG: 3.0 -- Copyright (C) 1986-91 Phar Lap Software, Inc.
Serial Number 1-17744
[80386 real mode]
-u ds:4377
3EEC:00004377 6A00 PUSH Word Ptr 0
3EEC:00004379 E9F4D6 JMP 1A70
3EEC:0000437C 6A01 PUSH Word Ptr 1
3EEC:0000437E E9C7D8 JMP 1C48
3EEC:00004381 6A02 PUSH Word Ptr 2
3EEC:00004383 E98ADC JMP 2010
3EEC:00004386 6A03 PUSH Word Ptr 3
3EEC:00004388 E9D6DC JMP 2061
3EEC:0000438B 6A04 PUSH Word Ptr 4
3EEC:0000438D E9E0D6 JMP 1A70
3EEC:00004390 6A05 PUSH Word Ptr 5
3EEC:00004392 E9DBD6 JMP 1A70
3EEC:00004395 6A06 PUSH Word Ptr 6
3EEC:00004397 E943DF JMP 22DD
3EEC:0000439A 6A07 PUSH Word Ptr 7
3EEC:0000439C E975E0 JMP 2414
3EEC:0000439F 6A08 PUSH Word Ptr 8
3EEC:000043A1 E97BE1 JMP 251F
3EEC:000043A4 6A09 PUSH Word Ptr 9
3EEC:000043A6 E91605 JMP 48BF
3EEC:000043A9 6A0A PUSH Word Ptr A
3EEC:000043AB E9C4D5 JMP 1972
3EEC:000043AE 6A0B PUSH Word Ptr B
3EEC:000043B0 E9BFD5 JMP 1972
3EEC:000043B3 6A0C PUSH Word Ptr C
3EEC:000043B5 E9EFE2 JMP 26A7
3EEC:000043B8 6A0D PUSH Word Ptr D
3EEC:000043BA E92FE3 JMP 26EC
3EEC:000043BD 6A0E PUSH Word Ptr E
3EEC:000043BF E9C5EA JMP 2E87
3EEC:000043C2 6A0F PUSH Word Ptr F
3EEC:000043C4 E9ABD5 JMP 1972
3EEC:000043C7 6A10 PUSH Word Ptr 10
3EEC:000043C9 E95BED JMP 3127
3EEC:000043CC 6A11 PUSH Word Ptr 11
3EEC:000043CE E99FD6 JMP 1A70
3EEC:000043D1 6A12 PUSH Word Ptr 12
3EEC:000043D3 E99AD6 JMP 1A70
3EEC:000043D6 6A13 PUSH Word Ptr 13
3EEC:000043D8 E9D3ED JMP 31AE
3EEC:000043DB 6A14 PUSH Word Ptr 14
3EEC:000043DD E990D6 JMP 1A70
3EEC:000043E0 6A15 PUSH Word Ptr 15
3EEC:000043E2 E9C5EE JMP 32AA
3EEC:000043E5 6A16 PUSH Word Ptr 16
3EEC:000043E7 E986D6 JMP 1A70
3EEC:000043EA 6A17 PUSH Word Ptr 17
3EEC:000043EC E981D6 JMP 1A70
3EEC:000043EF 6A18 PUSH Word Ptr 18
3EEC:000043F1 E97CD6 JMP 1A70
3EEC:000043F4 6A19 PUSH Word Ptr 19
3EEC:000043F6 E977D6 JMP 1A70
3EEC:000043F9 6A1A PUSH Word Ptr 1A
3EEC:000043FB E972D6 JMP 1A70
3EEC:000043FE 6A1B PUSH Word Ptr 1B
3EEC:00004400 E96DD6 JMP 1A70
3EEC:00004403 6A1C PUSH Word Ptr 1C
3EEC:00004405 E968D6 JMP 1A70
3EEC:00004408 6A1D PUSH Word Ptr 1D
3EEC:0000440A E963D6 JMP 1A70
3EEC:0000440D 6A1E PUSH Word Ptr 1E
3EEC:0000440F E95ED6 JMP 1A70
3EEC:00004412 6A1F PUSH Word Ptr 1F
3EEC:00004414 E959D6 JMP 1A70
3EEC:00004417 6A20 PUSH Word Ptr 20
3EEC:00004419 E954D6 JMP 1A70
3EEC:0000441C 6A21 PUSH Word Ptr 21
3EEC:0000441E E9C4EF JMP 33E5
3EEC:00004421 6A22 PUSH Word Ptr 22
3EEC:00004423 E94AD6 JMP 1A70
3EEC:00004426 6A23 PUSH Word Ptr 23
3EEC:00004428 E945D6 JMP 1A70
3EEC:0000442B 6A24 PUSH Word Ptr 24
3EEC:0000442D E940D6 JMP 1A70
3EEC:00004430 6A25 PUSH Word Ptr 25
3EEC:00004432 E93BD6 JMP 1A70
3EEC:00004435 6A26 PUSH Word Ptr 26
3EEC:00004437 E936D6 JMP 1A70
3EEC:0000443A 6A27 PUSH Word Ptr 27
3EEC:0000443C E931D6 JMP 1A70
3EEC:0000443F 6A28 PUSH Word Ptr 28
3EEC:00004441 E92CD6 JMP 1A70
3EEC:00004444 6A29 PUSH Word Ptr 29
3EEC:00004446 E927D6 JMP 1A70
3EEC:00004449 6A2A PUSH Word Ptr 2A
3EEC:0000444B E922D6 JMP 1A70
3EEC:0000444E 6A2B PUSH Word Ptr 2B
3EEC:00004450 E91DD6 JMP 1A70
3EEC:00004453 6A2C PUSH Word Ptr 2C
3EEC:00004455 E918D6 JMP 1A70
3EEC:00004458 6A2D PUSH Word Ptr 2D
3EEC:0000445A E913D6 JMP 1A70
3EEC:0000445D 6A2E PUSH Word Ptr 2E
3EEC:0000445F E90ED6 JMP 1A70
3EEC:00004462 6A2F PUSH Word Ptr 2F
3EEC:00004464 E909D6 JMP 1A70
3EEC:00004467 6A30 PUSH Word Ptr 30
3EEC:00004469 E904D6 JMP 1A70
3EEC:0000446C 6A31 PUSH Word Ptr 31
3EEC:0000446E E9FFD5 JMP 1A70
3EEC:00004471 6A32 PUSH Word Ptr 32
3EEC:00004473 E9FAD5 JMP 1A70
3EEC:00004476 6A33 PUSH Word Ptr 33
3EEC:00004478 E9F5D5 JMP 1A70
3EEC:0000447B 6A34 PUSH Word Ptr 34
3EEC:0000447D E9F0D5 JMP 1A70
3EEC:00004480 6A35 PUSH Word Ptr 35
3EEC:00004482 E9EBD5 JMP 1A70
3EEC:00004485 6A36 PUSH Word Ptr 36
3EEC:00004487 E9E6D5 JMP 1A70
3EEC:0000448A 6A37 PUSH Word Ptr 37
3EEC:0000448C E9E1D5 JMP 1A70
查过书本以後 ,我们已知道 INT_7 会触动的原因除了应用程式直接呼叫以外 ,
只有在未插入浮点运算器的情形下才会发生这个中断 ,平常是给模拟程式用的 ,例如
Q387即为一例 ,可是如果我们的电脑已安装有浮点运算器的话 ,这个中断就不再需要
其它的特殊处理了 ,於是我们就可以把它改成跳到『呼叫 V86 下的中断』。
讲了半天 ,笔者都没有提到如何改才能闪过 INT_07 的缺陷 ,其实只要您了解笔
者上面所写的文章 ,你应该知道要如何去改掉这个缺陷 ,笔者不想供布的原因是不想
让各位不劳而获 ,如果你不去动动头脑 ,你根本不会进步 ,同时也可以避免信又被引
来引去。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -