首页
社区
课程
招聘
[旧帖] RPME里面有句b=ip+len+(char)ibuf[ip+len-1]; 意义是什么 0.00雪花
发表于: 2010-11-9 11:00 2842

[旧帖] RPME里面有句b=ip+len+(char)ibuf[ip+len-1]; 意义是什么 0.00雪花

2010-11-9 11:00
2842
看RPME的源代码,卡在这个地方了,理解不了
    DWORD b=ip+len+(char)ibuf[ip+len-1];  // rel.arg, VA, 1-byte
      DWORD d=ip+len+*(long*)&ibuf[ip+len-4]; // ..., 4-byte
其中DWORD ip;                           // current address (relative)
     DWORD len=user_disasm(fp,&ibuf[ip]);      // get instruction length
       BYTE    ibuf[],         // input buffer   
DWORD nxt=ip+len;                 // default nxt-entry
      DWORD rel=NONE;                   // default jxx-entry
      BYTE  o=ibuf[ip];                 // opcode, 1 byte
      WORD  w=*(WORD*)&ibuf[ip];        // opcode, 2 bytes
      DWORD b=ip+len+(char)ibuf[ip+len-1];  // rel.arg, VA, 1-byte
      DWORD d=ip+len+*(long*)&ibuf[ip+len-4]; // ..., 4-byte
      if (((o&0xF0)==0x70)||((o&0xFC)==0xE0)) rel=b; // jcc,jcxz,loop/z/nz
      if ((w&0xF0FF)==0x800F) rel=d;    // jcc near
      if (o==0xE8) rel=d;               // call
      if (o==0xEB) { rel=b; nxt=NONE; };// jmp short
      if (o==0xE9) { rel=d; nxt=NONE; };// jmp

全部的源代码见附件

[课程]Linux pwn 探索篇!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
2
b = short offset
d = long offset
2010-11-9 11:06
0
游客
登录 | 注册 方可回帖
返回
//