阅读:2133回复:5
CIH中的地址计算疑问
我是新手
疑问:cih计算地址是为什么不用统一的相同的 基址ebx, 而是很多不同的 StopToRunVirusCode-@0[ebx] MyExceptionHook-@1[ecx] .... 有什么原因么?换来换去我头都大了 |
|
最新喜欢:okincn |
沙发#
发布于:2002-12-03 13:20
当CPU用 基址寄存器+偏移 来寻址的时候,
如果 -128<= 偏移量 <= 127,那么偏移量使用1个字节。 如果 偏移量>127或者 <-128,那么偏移量将使用4个字节来表示。 考虑下面2条指令 A: mov eax, Lable1-@0[ebx] B: mov eax, Lable1-@1[ecx] 假设它们在实际运行的时候CPU计算出来的绝对地址都是相同的。那么如果Lable1-@0的值 <-128 或者 >127,那么指令A的长度是6个字节,但是如果 -128<= Lable1-@1 <=127,那么指令B的长度只有3个字节。 你可以在编译的时候加上/l参数产生列表文件,看看是不是这样。 我想这就是CIH频繁的更换基址寄存器的主要原因吧。 |
|
|
板凳#
发布于:2002-12-15 20:04
我这阵常听人讨论CIH的技巧,听说有注解过的源代码,哪位有的话麻烦给我一份好吗?object@etang.com
谢谢。 |
|
|
地板#
发布于:2003-01-19 19:04
真的有我也要一份
|
|
|
地下室#
发布于:2003-02-19 14:46
CIH的源代码很久以前就有了
市面上一本《VXD开发进阶》的书里就有源代码 |
|
|
5楼#
发布于:2003-02-21 17:18
VXD开发进阶 一书把最关键代码K掉了
|
|