按下F8继续,这里是跳转不成立,然后出现在EAX-4位置,我们在数据窗口中跟随内容。 换句话说,这段代码中的[eax-4]就是eax所指向的文件长度,字符串长度就是EC00,这条语句就是将EC00保存在寄存器里面。于是可以将sub_403ECC重命名。
01246a7f 8b85acfcffff mov eax,dword ptr [ebp-354h]001b:01246a85 83e804 sub eax,4 //eax
text:6E4F38CC jz short loc_6E4F38D1 .text:6E4F38CE mov eax, [eax 仍然存放在这里就是0061e78c ,代码更改了它的类型为vbstring,那么这个值就变成了BSTR 字符串指针 ,然后使用LenB求它的长度; 但是在 cbLengthBstr 内部的执行是将mov eax, [eax 但是我们这个原本不是 BSTR 字符串类型,当[eax-4] 的时候得到仍然是类对象地址中的内容; 0:005> dd [0061e78c-4] 0061e788 6e654934 00000001