#2
雪影辰风2020-02-23 14:08
|
程序代码:
int addr;
char *p = NULL;
char b[5]={0};
int k;
_asm
{
mov eax, 0xEEF5EC
mov eax, [eax]
add eax, 0x80
fld [eax]
mov ecx, 0xDA0ED8
fdiv [ecx]
mov eax, 0xB42D10
call eax
mov ebx, eax
mov edi, 0xa8
lea ecx, [edi + edi*2 - 0x195]
shl ecx, 6
sub ecx, ebx
mov eax, ecx
mov addr, eax
xor edi, edi
}
while (TRUE)
{
_asm
{
xor edx, edx
mov eax, addr
mov ebx, eax
mov ecx, 0xa
div ecx
mov addr, eax
mul ecx
sub eax, ebx
neg eax
mov ecx, eax
add ecx, 0x30
lea esi, b
mov[esi + edi], ecx
inc edi
mov edx, 0
mov ebx, edx
mov eax, addr
or eax, ebx
mov k, eax
}
if (k == 0)
break;
}
p = &b[0];
_strrev(p);
CString s;
//s.Format(L"%s", p);
AfxMessageBox(p);
代码如上
该代码在VC6.0编译可以正确执行,VS2017编译的版本则会导致程序崩溃。
请问可能的原因是什么? 谢谢!
注:
VS2017下需取消//s.Format(L"%s", p);的注释,
另外,确认汇编代码正确。