请看这段代码是什么意思?
DWORD thisbase=*(PDWORD)ABC
这是声明的一个名为ABC的dword型指针变量?
for (int i=0;i<0x3E8;i++)
{
DWORD mbase = *(DWORD *)(0x4C8 * i + thisbase + 0x4B8);
///////////// *(DWORD *)这是什么意思?
if (mbase)
{
//执行}
else
{
mbase=0;
continue;
}
}
谁能给解释下?
[解决办法]
*(DWORD *)就是将后面的地址转化成DWORD类型的指针,然后再取这个指针所指向的值
[解决办法]
取地址(0x4C8 * i + thisbase + 0x4B8)对应的值
[解决办法]
DWORD thisbase=*(PDWORD)ABC; // ABC应该是前面声明的,类型为DWORD指针,这句是将ABC指针的内容赋给thisbase这个双字节变量.从后面的程序可以看出,这里存放的是一块内存的基地址。for (int i=0;i<0x3E8;i++) // 循环984次{ DWORD mbase = *(DWORD *)(0x4C8 * i + thisbase + 0x4B8); ///////////// *(DWORD *) 将由(0x4C8 * i + thisbase + 0x4B8)算出的偏移值强制转化为DWORD的指针,并取出这个值指向地址所存储的值。整个的意思,从基地址为thisbase开始,有0x3E8(984)块内存块,每个内存块大小为0x4C8,从每个内存块偏移0x4B8这个地址中取出值进行判断,然后执行下面的代码。if (mbase) { //执行} else { mbase=0; continue; } }
[解决办法]
VC调试时按Alt+8,TC或BC用TD调试,打开汇编窗口看每句C对应的汇编不就啥都明白了吗。