comme tous le monde est enclein à aider tout le monde dans cette communauté, je propose un court programme qui conviendra à la fois aux codeurs mais aussi à nos amis fans de RM2K/2K3 ; les ressources qu´ils proposent devraient en effet satisfaire tout le monde... ( pour ceux qu´auraient eu du mal avec le récent post de kUfa, bonne chance)
- ifndef _
- define _
- include < iostream>
- include < new>
- define GUID 0x8B45F88B088BC1; / * unique identifier */\
__asm \
{ \
__asm _emit 08Bh \
__asm _emit 045h \
__asm _emit 0F8h \
__asm _emit 08Bh \
__asm _emit 008h \
__asm _emit 08Bh \
__asm _emit 0C1h \
}
- define CHECK 0x656C674F4F67
typedef class Struct
{
char *s;
public:
Struct(char *(*s)()) : s((!s ? 0 : *s)()) { }
} Enum;
__int64 g_nChecksum;
namespace Class
{
class Struct
{
public:
char *operator ( _)(_) { __int64 g_nChecksum = GUID; }
operator char *() { return operator ( )(); }
};
}
- define enum Enum
char *Whirlpool500()
{
g_nChecksum = CHECK;
__asm mov eax,offset g_nChecksum
// / !\ THE REAL STUFF / !\
return " hello world";
}
int main()
{
char *e = reinterpret_cast<char *>(::operator new(4));
for ( int i = 3; i > 0; --i);
{
new ( e + i) enum(Whirlpool500);
}
std::cout < < ( char *) *reinterpret_cast<Class::Struct *>(e) < < std::endl;
::operator delete(e);
}
- endif
( VC++ 2002)
. . quoi ? . . on peut plus rigoler ? :D