![]() |
#2
rjsp2019-10-14 08:33
|

#include "stdafx.h"
#include "SROLibrary.h"
#include "SL_FORM.h"
#include "afxdialogex.h"
#include <string.h>
#include <map>
void SL_FORM::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
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);
AfxMessageBox(p);
}
代码如上
在VC6.0下可以正常编译和执行,结果为:6231 (正确结果)
在VS2017下可以正常编译,但执行结果为:2147489984 并且函数执行完毕后程序崩溃。
在VS下,若注释如下3行代码则不会崩溃:
p = &b[0];
_strrev(p);
AfxMessageBox(p);
代码在VC6下执行正常,所以我觉得汇编部分可能没问题。
电脑上的VC6总是假死所以很不方便,但VS遇到的问题又解决不了,
请大家帮我看看这可能是什么原因?
请问rjsp大佬是否遇到过类似的问题,能不能教教我解决的思路,
实在是没办法,都不知道上网搜什么。。。
谢谢大家!