www.pudn.com > DetourQQ.rar > CodeAtom.h


 
 
 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
// 预处理 
#pragma once 
#include  
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
 
 
 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
// CODEATOM 结构 
typedef struct tagCODEATOM 
{ 
	DWORD dwAddress;		// 地址 
	UINT uRangeSize;		// 范围大小 
	UINT uStampSize;		// 标识大小,不能大于 255 
	BYTE bStamp[255];		// 标识数据 
	BYTE bPatch[255];		// 替换数据 
 
	PBYTE pbStart;			// 内部使用的数据指针 
	PBYTE pbEnd;			// 内部使用的结束指针 
	BOOL bPatched;			// 内部使用的补丁标志 
} 
CODEATOM, *PCODEATOM; 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
 
 
 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
// CCodeAtom 类 
class CCodeAtom 
{ 
public: 
	// 执行文件并打补丁 
	static UINT Execute(PTSTR ptzFileName, PCODEATOM pCa,  
		UINT uNum = 1, UINT uTry = 5, UINT uSleep = 400, BYTE bIgnore = '?'); 
 
private: 
	// 打补丁 
	static BOOL Patch(HANDLE hProcess, PCODEATOM pCa, BYTE bIgnore); 
 
	// 比较标识 
	static BOOL EqualStamp(PBYTE pbData, PBYTE pbStamp, UINT uSize, BYTE bIgnore); 
 
	// 写入补丁 
	static BOOL WritePatch(HANDLE hProcess, DWORD dwAddress, PBYTE pbPatch, UINT uSize, BYTE bIgnore); 
}; 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////