//收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 // #ifndef CONV_CODE # define CONV_CODE() \ ( RGPG014 | RGPG044<<8 ) # define CONV_HASH_CODEVALUE(val) \ ( CONV_CODE() ^ (val) ) #endif // #pragma pack(push, 1) //收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收收 // // template struct sIL_ASM_INFO_NODE { sIL M01; sDT2<_HASH> M02; sIL M03; sDT1<_SZ> M04; sIL M05; sDTP M06; sIL M07; sIL M08; sIL M09; inline VOID ChangePTR( IWzASM_Handler fnPTR ) { M06.Change( (WzPTR)fnPTR ); } }; // ////////////////////////////////////////////////////////////////////////// // struct sMETHOD_REGISTER_HANDLER { //sIL M02; //sIL_MOV_EBX_PTR M03_RegisterASMHandler; //sIL M04; sIL M02; sIL M03; sDTP M04; sIL M05; sIL M06; //RegisterHandler Return sIL M07; ////////////////////////////////////////////////////////////////////////// #undef ADD_IWzASM_HANDLER # define ADD_IWzASM_HANDLER( codeASM, dataSIZE ) \ sIL_ASM_INFO_NODE M_##codeASM; # include "IWzASM.DefList.h" struct sINTER_register_JAT_matching_table { sIL M00_0_RegisterHandler; sDTP M00_1_HandlerPTR; sIL_ASM_INFO_NODE M01; sIL_ASM_INFO_NODE M02; sIL_ASM_INFO_NODE M03; sIL_ASM_INFO_NODE M04; sIL_ASM_INFO_NODE M05; sIL_ASM_INFO_NODE M06; sIL_ASM_INFO_NODE M07; sIL_ASM_INFO_NODE M08; sIL_ASM_INFO_NODE M09; sIL_ASM_INFO_NODE M10; sIL_ASM_INFO_NODE M11; sIL_ASM_INFO_NODE M12; sIL_ASM_INFO_NODE M13; sIL_ASM_INFO_NODE M14; sIL_ASM_INFO_NODE M15; sIL_ASM_INFO_NODE M16; sIL_ASM_INFO_NODE M17; sIL_ASM_INFO_NODE M18; sIL_ASM_INFO_NODE M19; } M08_register_JAT_matching_table; sIL_RET M09; ////////////////////////////////////////////////////////////////////////// VOID RegisterHandler4Handlers( WzASM_EIP* pEIP ) { M04.Change( pEIP ); } VOID RegisterHandlers() { //M03_RegisterASMHandler.Change( (WzPTR)RegisterASMHandler ); # undef ADD_IWzASM_HANDLER # define ADD_IWzASM_HANDLER( codeASM, dataSIZE ) \ M_##codeASM . ChangePTR( (HANDLER_WzASM_##codeASM) ); # include "IWzASM.DefList.h" M08_register_JAT_matching_table.M00_1_HandlerPTR.Change( RegisterJAT ); #ifndef _DEBUG } #else //_DEBUG //Output(); } VOID Output() { BYTE* pOFF = (BYTE*)&M02; pOFF += sizeof(M02); for( DWORD i=0 ; i M02; sIL_MOV_EBX_PTR M03_RegisterIBFHandler; sIL M04; ////////////////////////////////////////////////////////////////////////// # pragma warning(push) # pragma warning(disable:4307) # undef DECL_IBF_HASH # define DECL_IBF_HASH(name, val, val2) \ sIL M##val##val2##_01; \ sDT2< IBF_HASH_VALUE(name, val, val2) > M##val##val2##_02; \ sIL M##val##val2##_03; \ sDTP M##val##val2##_04; \ sIL M##val##val2##_05; \ sIL M##val##val2##_06; \ sIL M##val##val2##_07; # include "IWzASM.IBFList.h" # pragma warning(pop) sIL M05; sIL_RET M06; ////////////////////////////////////////////////////////////////////////// VOID ChangeRegisterHandler( WzPTR fnPTR ) { M03_RegisterIBFHandler.ChangeVAL( fnPTR ); } VOID RegisterHandlers() { // set findKEY; // set::iterator it; //# undef DECL_IBF_HASH //# define DECL_IBF_HASH(name, tag, val) \ // M##val##_04 . Change( (HANDLER_WzASM_IBF_##name) ); \ // it = findKEY.find( M##val##_02.VALUE ); \ // if( it != findKEY.end() ) printf( "\nDUPLICATED KEY %02X\n", *it ); \ // else findKEY.insert( M##val##_02.VALUE ); # undef DECL_IBF_HASH # define DECL_IBF_HASH(name, val, val2) \ M##val##val2##_04 . Change( (HANDLER_WzASM_IBF_##name) ); # include "IWzASM.IBFList.h" #ifndef _DEBUG } #else //_DEBUG //Output(); } VOID Output() { BYTE* pOFF = (BYTE*)this; for( DWORD i=0 ; i struct sIL_WzEIP_GRES_HANDLERS_REGISTER_EACHNODE { // EAX0 = _RegisterGResHandler sIL M01; sDT2<_HASH> M02; sIL M03; sDTP M04; sIL M05; sIL_CALL_IBF_STK_EFP M06; inline VOID Change( WzPTR fnPTR ) { M04.Change( fnPTR ); } }; struct sMETHOD_GRES_HANDLERS_REGISTER_CMD { sIL M02; sIL_MOV_EBX_PTR M03_RegisterGResHandler; sIL M04; ////////////////////////////////////////////////////////////////////////// # pragma warning(push) # pragma warning(disable:4307) # undef DECL_GRES_HASH # define DECL_GRES_HASH(name, val, val2) \ sIL_WzEIP_GRES_HANDLERS_REGISTER_EACHNODE M##name; # include "IWzASM.ResHashList.h" #undef DECL_GRES_HASH // //# undef DECL_GRES_HASH //# define DECL_GRES_HASH(name, tag, val) \ // sIL M##val##_01; \ // sDT2< IBF_HASH_VALUE(name, tag, val) > M##val##_02; \ // sIL M##val##_03; \ // sDTP M##val##_04; \ // sIL M##val##_05; \ // sIL M##val##_06; \ // sIL M##val##_07; // //# include "IWzASM.ResHash.h" # pragma warning(pop) sIL M05; sIL_RET M06; ////////////////////////////////////////////////////////////////////////// VOID ChangeRegisterHandler( WzPTR fnPTR ) { M03_RegisterGResHandler.ChangeVAL( fnPTR ); } VOID RegisterHandlers() { // set findKEY; // set::iterator it; //# undef DECL_IBF_HASH //# define DECL_IBF_HASH(name, tag, val) \ // M##val##_04 . Change( (HANDLER_WzASM_IBF_##name) ); \ // it = findKEY.find( M##val##_02.VALUE ); \ // if( it != findKEY.end() ) printf( "\nDUPLICATED KEY %02X\n", *it ); \ // else findKEY.insert( M##val##_02.VALUE ); # undef DECL_GRES_HASH # define DECL_GRES_HASH(name, val, val2) \ M##name.Change( CALL_IGRes##name ); # include "IWzASM.ResHashList.h" # undef DECL_GRES_HASH #ifndef _DEBUG } #else //_DEBUG //Output(); } VOID Output() { BYTE* pOFF = (BYTE*)this; for( DWORD i=0 ; i