-
-
看不懂的代码
-
发表于:
2011-7-26 21:48
2690
-
egogg大牛的教程
http://bbs.pediy.com/showthread.php?t=75094
他的立即数解析全部代码如下
if(!bBitS) {
if(bPfx66)
{
/* 16 bits immediate value */
memcpy(&(Instruction->Immediate), currentCode, 2);
sprintf(OperandImmediate, "%X%X%X%X", (*(currentCode + 1) >> 4) & 0xF,
(*(currentCode + 1) & 0xF), (*currentCode >> 4) & 0xF, (*currentCode) & 0xF);
currentCode += 2;
}
else
{
/* 32 bits immediate value */
Instruction->Immediate = *((unsigned int *)currentCode);
sprintf(OperandImmediate, "%X", *((unsigned int *)currentCode));
currentCode += 4;
}
}
else
{
/* 8 bits immediate value */
Instruction->Immediate = *currentCode;
sprintf(OperandImmediate, "%X%X", (*currentCode >> 4) & 0xF, (*currentCode) & 0xF);
currentCode++;
}
如图w位(蓝色)容易得出,那么立即数大小(红色)作者在哪一部分得到了,也没有相关的参数传进来啊?
没看出符号宽展前对立即数大小做了判断啊
[课程]Linux pwn 探索篇!