首页
社区
课程
招聘
看不懂的代码
发表于: 2011-7-26 21:48 2690

看不懂的代码

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 探索篇!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 120
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
又下载了一遍,这次源码里立即数解析部分判断了Instruction->ImmediateSize
作者第(一)部分里供下载里的ParseImmediate()比起第(七)部分里供下载的ParseImmediate()好像有遗漏
2011-7-28 20:52
0
游客
登录 | 注册 方可回帖
返回
//