//=================================================================================================
axChar axDataBufferReader::ReadChar()
{
	axCharA cFormat = ReadCharA();
	#ifdef AX_UNICODE
		axAssert(cFormat == 'W', axL("Failed to read data buffer, wrong character format."));
		return ReadCharW();
	#else
		axAssert(cFormat == 'A', axL("Failed to read data buffer, wrong character format."));
		return ReadCharA();
	#endif // AX_UNICODE
}
示例#2
0
文件: spydbg.cpp 项目: Junch/debug
WCHAR * ReadRemoteSZ(HANDLE process, LPVOID address, WORD unicode)
{
    if (NULL == address) return NULL;
    WCHAR * msg = 0 ;
    if ( unicode )
    {
        WCHAR * ptr = (WCHAR*)address;
        size_t stringLen = 0;
        while(ReadCharW(process, ptr++)) stringLen++; 
        msg = new WCHAR[stringLen+1];
        if (!msg) return NULL;
        memset(msg, 0, sizeof(WCHAR)*(stringLen+1));
        ReadProcessMemory(process, address ,msg, (stringLen+1)*sizeof(WCHAR),NULL);  
        return msg;
    } 
    else
    {
        CHAR * ptr = (CHAR*)address;
        size_t stringLen = 0;
        while(ReadCharA(process, ptr++)) stringLen++; 

        BYTE * originalMsg = new BYTE[stringLen+1];
        if (!originalMsg) return NULL;
        memset(originalMsg, 0, sizeof(BYTE)*(stringLen+1));
        
        msg = new WCHAR[stringLen]; 
        if (!msg) 
        {
            delete[] originalMsg;
            return NULL;
        }
        memset(msg, 0, sizeof(WCHAR)*(stringLen+1));

        ReadProcessMemory(process, address ,originalMsg, stringLen+1,NULL);    
        for (size_t i = 1; i < stringLen+1; i++)
        {
            msg[i] = originalMsg[i];        
        }
        delete[] originalMsg;
        return msg;
    }
}