在已破坏了程序内部状态的xxx.exe中发生了缓冲区溢出。。。
long byteVal[4];
long byteValmove[4];
long strlen=0;
long bytelen=0;
// long outByte[500];
//memset(&outByte,0,sizeof(outByte));
unsigned char StringBuf[3000];
CString strid;
char idbuf[100];
HMODULE hDll; //DLL句柄
lpAddFun addFun;//函数指针
lpdisplayFun displayFun;
for(int i=0;i<seleNumber;i++)
{
// memset(&outByte,0,sizeof(outByte));
strlen=infor[i].zw.GetLength()+1;
bytelen=strlen/12-1;
memset(&StringBuf,0,sizeof(StringBuf));
CStringA strBuf(infor[i].zw);
strcpy((char*)StringBuf,strBuf);
HexToChar(StringBuf);
for(int k=0;k<bytelen;k++)
{
memset(&byteVal,0,sizeof(byteVal));
memset(&byteValmove,0,sizeof(byteValmove));
byteVal[0]=StringBuf[k*12]*16+StringBuf[k*12+1];
byteVal[1]=StringBuf[k*12+3]*16+StringBuf[k*12+4];
byteVal[2]=StringBuf[k*12+6]*16+StringBuf[k*12+7];
byteVal[3]=StringBuf[k*12+9]*16+StringBuf[k*12+10];
//infor[i].zwByte[k]=byteVal[3]*256+byteVal[2]*256+byteVal[1]*256+byteVal[0];
byteValmove[0]=byteVal[0];
byteValmove[1]=byteVal[1]*256;
byteValmove[2]=byteVal[2]*256*256;
byteValmove[3]=byteVal[3]*256*256*256;
infor[i].zwByte[k]=byteValmove[3]+byteValmove[2]+byteValmove[1]+byteVal[0];
}
//调用动态链接库中的函数
strid=infor[i].zcm;
CStringA strcS(strid);
strcpy(idbuf,strcS);
////////////////////////////FKCnvchk2310
hDll=LoadLibrary(_T("FKCnvchk2310.dll"));
//hDll=LoadLibrary(_T("dllToUsedll.dll"));
if(hDll!=NULL)
{
addFun=(lpAddFun)GetProcAddress(hDll,"FKConvPIS4ToXXX");//???????FKConvPIS4ToXXX
//displayFun=(lpdisplayFun)GetProcAddress(hDll,"display");
if(addFun!=NULL)
{
long result=addFun(idbuf,infor[i].zwByte,infor[i].outByte);
//infor[i].zwByte=outByte;
//memcpy(infor[i].zwByte,outByte,bytelen);
//MessageBox(_T("调用函数成功!"));
}
else
{
MessageBox(_T("调用函数失败!"));
}
//MessageBox(_T("调用成功!"));
FreeLibrary(hDll);
}
else
{
int error=GetLastError();
char err;
err=error;
CString strerr;
strerr=_T("调用失败,错误代码为:");
strerr+=err;
AfxMessageBox(strerr);
continue;
}
}
不知道什么原因,每次一运行到一个函数的时候,程序就会跳转到一个_Crt_DefaultAllocHook函数的地方,弹出对话框,提示“在已损坏了程序内部状态的 xxx.exe 中发生了缓冲区溢出。按“中断”以调试程序,或按“继续”以终止程序。”
大家遇到过这样的问题吗?是什么原因导致的呢?