能力值:
( LV12,RANK:210 )
|
-
-
2 楼
这让我如何回答
|
能力值:
( LV9,RANK:610 )
|
-
-
3 楼
e37d7030 e911223344 jmp 27b09246 e37d7030 是本条指令的地址
e911223344 是本条指令的机器码
e9可以翻译成 jmp(这样不太准确,但是容易理解)
11223344 就应该翻译成 27b09246了
如何翻译?
当前指令的地址(0xe37d7030) + 当前指令长度(0x5)+ 偏移(0x44332211) = 0x27b09246
至于为什么是 0x44332211 而不是 0x11223344 那是因为我们常用的window平台都是小端模式
即 低字节在低地址 高字节在高地址
下面是之前写的反汇编引擎的解析 0xe9部分的代码
//jmp
case 0xE9:
pInstruction->opcode[0] = 1;
pInstruction->opcode[1] = *pCurCode;
lstrcpy(pInstruction->szAsm, "JMP ");
pCurCode++;
if (pInstruction->bPrefixes66)
{
pInstruction->immediate[0] = 2;
memcpy(pInstruction->immediate+1, pCurCode, 2);
wsprintf(pTemp1, _T("%.8X"), ((dwCurrentAddress + 4)&0x0000FFFF) + *(short int *)pCurCode);
}
else
{
pInstruction->immediate[0] = 4;
memcpy(pInstruction->immediate+1, pCurCode, 4);
[COLOR="Blue"] wsprintf(pTemp1, _T("%.8X"), (dwCurrentAddress + 5) + *(int *)pCurCode); [/COLOR]
}
break;
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
谢谢指导...
|
|
|