Files
FC1/CrySystem/DataProbe.h
romkazvo 34d6c5d489 123
2023-08-07 19:29:24 +08:00

92 lines
2.9 KiB
C++

////////////////////////////////////////////////////////////////////////////
//
// Crytek Engine Source File.
// Copyright (C), Crytek Studios, 2001-2004.
// -------------------------------------------------------------------------
// File name: DataProbe.h
// Version: v1.00
// Created: 19/1/2004 by Timur.
// Compilers: Visual Studio.NET 2003
// Description:
// -------------------------------------------------------------------------
// History:
//
////////////////////////////////////////////////////////////////////////////
#ifndef __DataProbe_h__
#define __DataProbe_h__
#pragma once
#include <IDataProbe.h>
#include "RandGen.h"
enum EDataProbeCodeInfo
{
DATAPROBE_CRC32 = 0,
DATAPROBE_CRC64 = 1,
DATAPROBE_ADLER32 = 2,
DATAPROBE_PURE_CRC32 = 3,
DATAPROBE_MD5 = 4,
};
//////////////////////////////////////////////////////////////////////////
// Timur.
// This is authentication functions, this code is not for public release!!
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// CDataProbe implementation.
//////////////////////////////////////////////////////////////////////////
class CDataProbe : public IDataProbe
{
public:
CDataProbe();
virtual ~CDataProbe();
virtual bool Dummy1( SDataProbeContext &ctx ) { return false; };
virtual int Dummy2( void *pBuf,int aa,SDataProbeContext &ctx ) { return 2322; };
virtual bool Dummy3( SDataProbeContext &ctx ) { return false; };
virtual uint32 GetHash( const char *sString );
// Hash of any buffer.
virtual uint32 GetHash( const void *buffer,int len );
virtual void RandomAlloc();
virtual bool GetCode( SDataProbeContext &ctx );
virtual bool GetRandomFileProbe( SDataProbeContext &ctx,bool bAtEnd );
virtual bool GetRandomModuleProbe( SDataProbeContext &ctx );
virtual bool GetModuleProbe( SDataProbeContext &ctx );
virtual int GetLoadedModules( SModuleInfo **pModules );
virtual void AddModule( SModuleInfo &moduleInfo );
virtual void RandSeed( uint32 seed );
virtual uint32 GetRand();
virtual float GetRand( float fMin,float fMax );
//////////////////////////////////////////////////////////////////////////
// Compress block of data with zlib.
virtual int Compress( void *dest,unsigned int &destLen,const void *source, unsigned int sourceLen,int level=6 );
// Uncompress block of data with zlib.
virtual int Uncompress( void *dest,unsigned int &destLen,const void *source, unsigned int sourceLen );
void GetMD5( const char *pSrcBuffer,int nSrcSize,char signatureMD5[16] );
void AESDecryptBuffer( const char *pSrcBuffer,int nSrcSize,char *pDestBuffer,int &nDestSize,const char *sKey );
// Local from system.
bool CheckLoader( void *pFunc );
private:
bool GetDataCode( char* pBuffer,int nSize,SDataProbeContext &ctx );
bool CheckLoaderFC();
CSysPseudoRandGen m_rand;
void *m_pRandAlloc;
std::vector<SModuleInfo> m_loadedModules;
string m_sBinPath;
};
#endif // __DataProbe_h__