hustluzhichun
驱动牛犊
驱动牛犊
  • 注册日期2002-11-12
  • 最后登录2009-07-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2039回复:5

CIH中的地址计算疑问

楼主#
更多 发布于:2002-12-01 21:19
我是新手
疑问:cih计算地址是为什么不用统一的相同的
基址ebx,
而是很多不同的
StopToRunVirusCode-@0[ebx]
MyExceptionHook-@1[ecx]
....
有什么原因么?换来换去我头都大了

最新喜欢:

okincnokincn
archim
驱动牛犊
驱动牛犊
  • 注册日期2001-08-18
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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频繁的更换基址寄存器的主要原因吧。
archim
imafool
驱动牛犊
驱动牛犊
  • 注册日期2002-11-25
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-12-15 20:04
我这阵常听人讨论CIH的技巧,听说有注解过的源代码,哪位有的话麻烦给我一份好吗?object@etang.com
谢谢。
请。
cardic
驱动牛犊
驱动牛犊
  • 注册日期2002-11-15
  • 最后登录2006-06-11
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-01-19 19:04
真的有我也要一份
想和你一起开发驱动E_MAIL:CARDIC@163.COM
chen001
驱动小牛
驱动小牛
  • 注册日期2001-12-24
  • 最后登录2005-05-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-02-19 14:46
CIH的源代码很久以前就有了
市面上一本《VXD开发进阶》的书里就有源代码
???
tacone
驱动牛犊
驱动牛犊
  • 注册日期2003-01-06
  • 最后登录2005-01-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-02-21 17:18
VXD开发进阶 一书把最关键代码K掉了
游客

返回顶部