首页
社区
课程
招聘
[求助]这样复制中断表是否正确
发表于: 2010-8-10 23:06 3652

[求助]这样复制中断表是否正确

2010-8-10 23:06
3652
typedef struct
{
  //中断执行代码偏移量的底16位;      
  unsigned short LowOffset;
  //选择器,也就是寄存器;
  unsigned short selector;
  //保留位,始终为零;
  unsigned char Reserved;
  //IDT中的门的类型:包括中断门,陷阱门和任务门;
  unsigned char Type:4;   //0x0E是一个中断门
  //段标识位;
  unsigned char SegmentFlag:1;
  //中断门的权限等级,0表示内核级,3表示用户级;
  unsigned char DPL:2;          // 描述符特权级
  //呈现标志位;
  unsigned char Present:1;     
  //中断执行代码偏移量的高16位;         
  unsigned short HiOffset;
} IDTENTRY,*PIDTENTRY;

typedef struct
{
  //定义中断描述符表的限制,长度两字节;      
  unsigned short IDTLimit;
  unsigned short LowIDTbase;
  unsigned short HiIDTbase;
} IDTINFO;

//******************************************************************************
//功能:重新构建IDT
//******************************************************************************
VOID GetSaveIDT()
{
      IDTINFO    idt_Base;            
      ULONG      i=0;
      
      __asm  sidt  idt_Base
      IdtEntry = (PIDTENTRY) MAKELONG(idt_Base.LowIDTbase,idt_Base.HiIDTbase);//原始表地址
      DbgPrint("IdtEntry地址: 0x%X",IdtEntry);
      IdtEntryVMX = MmAllocateNonCachedMemory(sizeof(IDTENTRY)*256);//分配内存
      for(i = 0;i < 256;i++)
         {
              IdtEntryVMX[i].HiOffset = IdtEntry[i].HiOffset;
              IdtEntryVMX[i].LowOffset = IdtEntry[i].LowOffset;
              DbgPrint("IDT-ID:%-3d 地址: 0x%X", i, ((unsigned int)IdtEntryVMX[i].HiOffset << 16) | (IdtEntryVMX[i].LowOffset));

         }
      DbgPrint("IdtEntryVMX: 0x%X",IdtEntryVMX);                                                    
}
这样打印显示的也是IDT 各个中断函数地址,我也无法测试是否正确,望大家指点下 多谢

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 998
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
copy向量地址的时候没有保证原子性,如果正巧有其他模块在改写向量地址的话,有可能导致你取到的HiOffset和LowOffset是broken的。
2010-8-11 00:07
0
雪    币: 773
活跃值: (442)
能力值: ( LV9,RANK:200 )
在线值:
发帖
回帖
粉丝
3
打印出来的地址都是正确的,你说这样不行,是不是要重定位,从文件中复制地址一般不大现实,因为如果作为替换的话,IDT有些中断已经被使用,有啥好办法呢。。。。有谁帮帮我 我准备试验个东西,找不到原因,也没法试验我上面的准确性。大家帮帮我。
2010-8-11 08:24
0
雪    币: 998
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
你没理解我说的。这和重定位有什么关系。我说的是取l32与h32时候的原子性。
2010-8-11 13:49
0
游客
登录 | 注册 方可回帖
返回
//