- genericthunk_source_sample_executable.zip
- GenericThunk_source_sample
- include
- sample
- Thunk
- CdeclToCdecl
- CdeclToCdecl.vcproj
- CdeclToCdecl.vcproj.OWNCOMPUTER.OwnWaterloo.user
- CdeclToStd
- CdeclToStd.vcproj
- CdeclToStd.vcproj.OWNCOMPUTER.OwnWaterloo.user
- release
- CdeclToCdecl.exe
- StdToCdecl.exe
- StdToStd.exe
- ThisToCdecl.exe
- ThisToStd.exe
- StdToCdecl
- StdToCdecl.vcproj
- StdToCdecl.vcproj.OWNCOMPUTER.OwnWaterloo.user
- StdToStd
- StdToStd.vcproj
- StdToStd.vcproj.OWNCOMPUTER.OwnWaterloo.user
- TestSrc
- ThisToCdecl
- ThisToCdecl.vcproj
- ThisToCdecl.vcproj.OWNCOMPUTER.OwnWaterloo.user
- ThisToStd
- ThisToStd.vcproj
- ThisToStd.vcproj.OWNCOMPUTER.OwnWaterloo.user
- Thunk.sln
- src
- genericthunk_source_sample.zip
- genericthunk_source.zip
- GenericThunk_source
- include
- src
|
#ifndef OWN_THUNK_THIS_TO_CDECL_H_080325
#define OWN_THUNK_THIS_TO_CDECL_H_080325
#include <Thunk/ThunkBase.h>
#include <Thunk/MachineCodeMacro.h>
#define __THIS_TO__CDECL_CODES() \
/* POP ECX */ \
CONST CODE_FIRST(byte,POP_ECX,0x59) \
\
/* MOV DWORD PTR [old_esp],ESP */ \
CONST CODE(word,MOV_ESP_TO,0x2589) \
CONST CODE(dword_ptr,pold_esp,&old_esp) \
\
/* MOV DWORD PTR [old_return],ECX */ \
CONST CODE(word,MOV_ECX_TO,0x0D89) \
CONST CODE(dword_ptr,p_old_return,&old_return) \
\
/* MOV ECX,this */ \
CONST CODE(byte,MOV_ECX,0xB9) \
CODE(dword_ptr,m_this,0) \
\
/* CALL memFunc */ \
CONST CODE(byte,CALL,0xE8) \
CODE(dword,m_memFunc,0) \
\
/* MOV ESP,old_esp */ \
CONST CODE(byte,MOV_ESP,0xBC) \
CONST CODE(dword,old_esp,0) \
\
/* PUSH */ \
CONST CODE(byte,PUSH,0x68) \
CONST CODE(dword,old_return,0) \
\
/* RET */ \
CONST CODE(byte,RET,0xC3)
namespace Thunk
{
class ThisToCdecl
{
public:
~ThisToCdecl();
explicit ThisToCdecl(const void *Obj=0,int memFunc=0);
const void* Attach(const void *newObj);
int Attach(int newMemFunc);
private:
#pragma pack( push , 1)
__THIS_TO__CDECL_CODES()
#pragma pack( pop )
};
}
#endif //#ifndef OWN_THUNK_THIS_TO_CDECL_H_080325
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.