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

98 lines
3.0 KiB
C

////////////////////////////////////////////////////////////////////////////
//
// Crytek Engine Source File.
// Copyright (C), Crytek Studios, 2001-2004.
// -------------------------------------------------------------------------
// File name: IDataProbe.h
// Version: v1.00
// Created: 19/1/2004 by Timur.
// Compilers: Visual Studio.NET 2003
// Description: Defines IDataProbe interface.
// -------------------------------------------------------------------------
// History:
//
////////////////////////////////////////////////////////////////////////////
#ifndef __IDataProbe_h__
#define __IDataProbe_h__
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
struct SDataProbeContext
{
// Folder name to check.
string sFolder;
// Filename to check.
string sFilename;
void *pBuffer;
void *pModuleBaseAddress;
unsigned int nOffset;
unsigned int nSize;
// Algorithm used fo code.
unsigned int nCodeInfo;
// Resulting code.
uint64 nCode;
SDataProbeContext()
{
pBuffer = 0;
pModuleBaseAddress = 0;
nOffset = nSize = nCodeInfo = 0;
nCode = 0;
}
};
struct IDataProbe
{
struct SModuleInfo
{
string filename;
void* handle;
};
virtual ~IDataProbe() {};
virtual bool Dummy1( SDataProbeContext &ctx ) = 0;
virtual int Dummy2( void *pBuf,int aa,SDataProbeContext &ctx ) = 0;
virtual bool GetCode( SDataProbeContext &ctx ) = 0;
virtual bool Dummy3( SDataProbeContext &ctx ) = 0;
virtual bool GetRandomFileProbe( SDataProbeContext &ctx,bool bAtEnd )=0;
virtual bool GetRandomModuleProbe( SDataProbeContext &ctx ) = 0;
virtual bool GetModuleProbe( SDataProbeContext &ctx ) = 0;
// Hash of ASCII string.
virtual uint32 GetHash( const char *sString ) = 0;
// Hash of any buffer.
virtual uint32 GetHash( const void *buffer,int len ) = 0;
// Return array of loaded modules information, returns number of modules.
virtual int GetLoadedModules( SModuleInfo **pModules ) = 0;
virtual void AddModule( SModuleInfo &moduleInfo ) = 0;
virtual void RandomAlloc() = 0;
// Compress block of data with zlib.
virtual int Compress( void *dest,unsigned int &destLen,const void *source, unsigned int sourceLen,int level=6 ) = 0;
// Uncompress block of data with zlib.
virtual int Uncompress( void *dest,unsigned int &destLen,const void *source, unsigned int sourceLen ) = 0;
//////////////////////////////////////////////////////////////////////////
// MD5 Digest.
//////////////////////////////////////////////////////////////////////////
virtual void GetMD5( const char *pSrcBuffer,int nSrcSize,char signatureMD5[16] ) = 0;
// Decrypt buffer.
// Support in place decryption, (pSrcBuffer == pDestBuffer).
// Output buffer should be at least the same size as source buffer.
// Key must be at least 32 bytes long.
virtual void AESDecryptBuffer( const char *pSrcBuffer,int nSrcSize,char *pDestBuffer,int &nDestSize,const char *sKey ) = 0;
virtual void RandSeed( uint32 seed ) = 0;
virtual uint32 GetRand() = 0;
virtual float GetRand( float fMin,float fMax ) = 0;
};
#endif // __IDataProbe_h__