【求助】如何实现内存中代码的执行
有一个函数体
int CalcRegCode(const char *pszUserName, char *pCodeBuf, int nbufSize)
{
if(!pszUserName || !pCodeBuf)
return 0;
int nLength = strlen(pszUserName);
if(nLength <= 0 || nLength >= nbufSize)
return 0;
if(::IsBadReadPtr(pszUserName,nLength) || ::IsBadWritePtr(pCodeBuf,nbufSize))
return 0;
for(int i = 0; i < nLength; i++)
pCodeBuf[i] = pszUserName[i] + 1;//为了演示,仅仅是作个移位变换
pCodeBuf[nLength] = 0;
return nLength;
}
void CalcRegCodeEnd()
{
}
//异或函数
static bool XorBlock(void *pStartAddr, int nLength, unsigned char cMask)
{
if(!pStartAddr || nLength <= 0)
return false;
unsigned char *p = (unsigned char *)pStartAddr;
for(int i = 0; i < nLength; i++)
{
*p++ ^= cMask;
}
return true;
}
int nFuncSize = ((char *)CalcRegCodeEnd - (char *)CalcRegCode);
想将CalcRegCode中的代码与0x5A异或,存放到内存buff中
再将其与0x5A异或存放到buff2中
最后在程序中直接调用buff2中的代码
应该如何实现?