eax里面当前放的是一个按位的flag,类似0x1|0x10|0x1000这样得出的结果,每个二进制位代表一个flag,这段程序再用test和需要做测试的位做与运算,如果那个位是0,就跳转到相应的后续语句,否则作相应的处理,然后跳转到最后的0x00517DA6
具体反汇编出来是(从图里第一个jmp开始,上面肯定还有一个跳到0x00517D5A的语句你没截到)
if(eax&0x100)
[ecx+0xEC9308] = 0x1;
else if(eax&0x4000)
[ecx+0xEC9308] = 0x3;
else if(eax&0x12040011)
[ecx+0xEC9308] = 0x0;
else if(eax&0x1000)
[ecx+0xEC9308] = 0x0;
else if(eax)
[ecx+0xEC9308] = dl;
else
[ecx+0xEC9308] = al;
之所以汇编是al,我写的是eax,原理因为只对一位做与,其他位就不受波及,你捉摸捉摸就能懂
这个太专业了,回答不了啊