Detours Header File V2.1

Results 1 to 23 of 23
  1. #1
    Doggie And Rice. Military is offline
    MemberRank
    Jun 2009 Join Date
    Here and AboutLocation
    3,302Posts

    Detours Header File V2.1

    Anyone has this? Weird that Jacob didn't include it.


  2. #2
    Ecchi addicted adz28 is offline
    MemberRank
    Nov 2008 Join Date
    IkebukuroLocation
    524Posts

    Re: Detours Header File V2.1

    Take it, idk why but even with the detour header i can't compile :/.
    Attached Files Attached Files

  3. #3
    Doggie And Rice. Military is offline
    MemberRank
    Jun 2009 Join Date
    Here and AboutLocation
    3,302Posts

    Re: Detours Header File V2.1

    Quote Originally Posted by adz28 View Post
    Take it, idk why but even with the detour header i can't compile :/.
    You downloaded the boost C++ Libraries?

  4. #4
    Ecchi addicted adz28 is offline
    MemberRank
    Nov 2008 Join Date
    IkebukuroLocation
    524Posts

    Re: Detours Header File V2.1

    Quote Originally Posted by Military View Post
    You downloaded the boost C++ Libraries?
    No i didn't, i have to?

  5. #5
    Doggie And Rice. Military is offline
    MemberRank
    Jun 2009 Join Date
    Here and AboutLocation
    3,302Posts

    Re: Detours Header File V2.1

    Quote Originally Posted by adz28 View Post
    No i didn't, i have to?
    For his projects I'm getting errors about boost so I think you need it. Look in his release thread at the end I posted a link.

  6. #6
    Ecchi addicted adz28 is offline
    MemberRank
    Nov 2008 Join Date
    IkebukuroLocation
    524Posts

    Re: Detours Header File V2.1

    Quote Originally Posted by Military View Post
    For his projects I'm getting errors about boost so I think you need it. Look in his release thread at the end I posted a link.
    Ty bro, im not having poblems with boost, just fails to load the detours.h, but i used one i found on a foler that is on the desktop folder and it compiles it D:! (using VC++ 2010)

  7. #7
    Doggie And Rice. Military is offline
    MemberRank
    Jun 2009 Join Date
    Here and AboutLocation
    3,302Posts

    Re: Detours Header File V2.1

    Code:
    Error	3	error C1083: Cannot open include file: 'boost/cstdint.hpp': No such file or directory	C:\Users\Reco\Documents\Gunz Shit\Desktop - GunZ\GunzProtect\GunzProtect\Main.cpp	5	1	GunzProtect
    One of the error's I'm getting.

  8. #8
    Ancient One cmb is offline
    DeveloperRank
    Mar 2007 Join Date
    1,038Posts

    Re: Detours Header File V2.1

    Quote Originally Posted by Military View Post
    Code:
    Error	3	error C1083: Cannot open include file: 'boost/cstdint.hpp': No such file or directory	C:\Users\Reco\Documents\Gunz Shit\Desktop - GunZ\GunzProtect\GunzProtect\Main.cpp	5	1	GunzProtect
    One of the error's I'm getting.
    you need boost, and depending on how he set it up you either need it in the directory with the source or in your visual studio's include folder

  9. #9
    Ecchi addicted adz28 is offline
    MemberRank
    Nov 2008 Join Date
    IkebukuroLocation
    524Posts

    Re: Detours Header File V2.1

    Recently noticed that i have the same problem, btw the fucking detours.h don't want to be loaded too :/

  10. #10
    Doggie And Rice. Military is offline
    MemberRank
    Jun 2009 Join Date
    Here and AboutLocation
    3,302Posts

    Re: Detours Header File V2.1

    Quote Originally Posted by cmb View Post
    you need boost, and depending on how he set it up you either need it in the directory with the source or in your visual studio's include folder
    I'm too lazy to put all of those files in the source D:

  11. #11
    Just Me iceman4154 is offline
    MemberRank
    Oct 2007 Join Date
    Columbus, OhioLocation
    217Posts

    Re: Detours Header File V2.1

    LMAO, he has given you the source, you should be thankful. He just released source to his original, hard work.

  12. #12
    igunz.net Dawson is offline
    LegendRank
    Feb 2010 Join Date
    ::1 (Canada BC)Location
    2,581Posts

    Re: Detours Header File V2.1

    dotdotdot. Don't leech the source if you can't even link Libraries.

  13. #13
    Doggie And Rice. Military is offline
    MemberRank
    Jun 2009 Join Date
    Here and AboutLocation
    3,302Posts

    Re: Detours Header File V2.1

    Quote Originally Posted by DawsonByrd View Post
    dotdotdot. Don't leech the source if you can't even link Libraries.
    I'm not leeching , I'm just compiling for the lulz.

  14. #14
    Doggie And Rice. Military is offline
    MemberRank
    Jun 2009 Join Date
    Here and AboutLocation
    3,302Posts

    Re: Detours Header File V2.1

    Quote Originally Posted by DawsonByrd View Post
    dotdotdot. Don't leech the source if you can't even link Libraries.
    I now remembered this man I'm so stupid..

  15. #15
    Account Upgraded | Title Enabled! TheCodeOfGunz is offline
    MemberRank
    Oct 2010 Join Date
    PhilippinesLocation
    532Posts

    Re: Detours Header File V2.1

    you need a ms sdk
    maybe xD

  16. #16
    Proficient Member Twist165 is offline
    MemberRank
    May 2011 Join Date
    167Posts

    Re: Detours Header File V2.1

    there is no need for that dont make post with useless comments

  17. #17
    Account Upgraded | Title Enabled! TheCodeOfGunz is offline
    MemberRank
    Oct 2010 Join Date
    PhilippinesLocation
    532Posts

    Re: Detours Header File V2.1

    there some missing in include so need it to build this that was i know the solution coz i already fix it by installing an ms sdk
    http://www.boost.org/
    Last edited by TheCodeOfGunz; 22-06-11 at 09:41 AM.

  18. #18
    Proficient Member Twist165 is offline
    MemberRank
    May 2011 Join Date
    167Posts

    Re: Detours Header File V2.1

    well. i guess i ardy have That installed/ maybe i left out that part

  19. #19
    Account Upgraded | Title Enabled! TheCodeOfGunz is offline
    MemberRank
    Oct 2010 Join Date
    PhilippinesLocation
    532Posts

    Re: Detours Header File V2.1

    if you r updating your os u will get that easy

  20. #20
    Apprentice Skizerxd is offline
    MemberRank
    Apr 2011 Join Date
    7Posts

    Re: Detours Header File V2.1

    how im installing the boost libarys to Visual Studio 2010 ?

  21. #21
    Just Me iceman4154 is offline
    MemberRank
    Oct 2007 Join Date
    Columbus, OhioLocation
    217Posts

    Re: Detours Header File V2.1

    If you don't know C++, which I am guessing you do not, don't try to compile his code. Most of this if you know C, you should be able to re-create and make your own version of the application, instead of leeching and recompiling just to say it's yours.

  22. #22
    Proficient Member Analise is offline
    MemberRank
    Oct 2010 Join Date
    181Posts

    Re: Detours Header File V2.1

    2.1:
    Code:
    //////////////////////////////////////////////////////////////////////////////
    //
    //  Core Detours Functionality (detours.h of detours.lib)
    //
    //  Microsoft Research Detours Package, Version 2.1.
    //
    //  Copyright (c) Microsoft Corporation.  All rights reserved.
    //
    
    #pragma once
    #ifndef _DETOURS_H_
    #define _DETOURS_H_
    
    #define DETOURS_VERSION     20100   // 2.1.0
    
    //////////////////////////////////////////////////////////////////////////////
    //
    
    #if (_MSC_VER < 1299)
    typedef LONG LONG_PTR;
    typedef ULONG ULONG_PTR;
    #endif
    
    #ifndef __in_z
    #define __in_z
    #endif
    
    //////////////////////////////////////////////////////////////////////////////
    //
    #ifndef GUID_DEFINED
    #define GUID_DEFINED
    typedef struct  _GUID
    {
        DWORD Data1;
        WORD Data2;
        WORD Data3;
        BYTE Data4[ 8 ];
    } GUID;
    
    #ifdef INITGUID
    #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
            const GUID name \
                    = { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
    #else
    #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
        const GUID name
    #endif // INITGUID
    #endif // !GUID_DEFINED
    
    #if defined(__cplusplus)
    #ifndef _REFGUID_DEFINED
    #define _REFGUID_DEFINED
    #define REFGUID             const GUID &
    #endif // !_REFGUID_DEFINED
    #else // !__cplusplus
    #ifndef _REFGUID_DEFINED
    #define _REFGUID_DEFINED
    #define REFGUID             const GUID * const
    #endif // !_REFGUID_DEFINED
    #endif // !__cplusplus
    
    //
    //////////////////////////////////////////////////////////////////////////////
    
    #ifdef __cplusplus
    extern "C" {
    #endif // __cplusplus
    
    /////////////////////////////////////////////////// Instruction Target Macros.
    //
    #define DETOUR_INSTRUCTION_TARGET_NONE          ((PVOID)0)
    #define DETOUR_INSTRUCTION_TARGET_DYNAMIC       ((PVOID)(LONG_PTR)-1)
    #define DETOUR_SECTION_HEADER_SIGNATURE         0x00727444   // "Dtr\0"
    
    extern const GUID DETOUR_EXE_RESTORE_GUID;
    
    #define DETOUR_TRAMPOLINE_SIGNATURE             0x21727444  // Dtr!
    typedef struct _DETOUR_TRAMPOLINE DETOUR_TRAMPOLINE, *PDETOUR_TRAMPOLINE;
    
    /////////////////////////////////////////////////////////// Binary Structures.
    //
    #pragma pack(push, 8)
    typedef struct _DETOUR_SECTION_HEADER
    {
        DWORD       cbHeaderSize;
        DWORD       nSignature;
        DWORD       nDataOffset;
        DWORD       cbDataSize;
    
        DWORD       nOriginalImportVirtualAddress;
        DWORD       nOriginalImportSize;
        DWORD       nOriginalBoundImportVirtualAddress;
        DWORD       nOriginalBoundImportSize;
    
        DWORD       nOriginalIatVirtualAddress;
        DWORD       nOriginalIatSize;
        DWORD       nOriginalSizeOfImage;
        DWORD       cbPrePE;
    
        DWORD       nOriginalClrFlags;
        DWORD       reserved1;
        DWORD       reserved2;
        DWORD       reserved3;
    
        // Followed by cbPrePE bytes of data.
    } DETOUR_SECTION_HEADER, *PDETOUR_SECTION_HEADER;
    
    typedef struct _DETOUR_SECTION_RECORD
    {
        DWORD       cbBytes;
        DWORD       nReserved;
        GUID        guid;
    } DETOUR_SECTION_RECORD, *PDETOUR_SECTION_RECORD;
    
    typedef struct _DETOUR_CLR_HEADER
    {
        // Header versioning
        ULONG                   cb;
        USHORT                  MajorRuntimeVersion;
        USHORT                  MinorRuntimeVersion;
    
        // Symbol table and startup information
        IMAGE_DATA_DIRECTORY    MetaData;
        ULONG                   Flags;
    
        // Followed by the rest of the header.
    } DETOUR_CLR_HEADER, *PDETOUR_CLR_HEADER;
    
    typedef struct _DETOUR_EXE_RESTORE
    {
        ULONG               cb;
    
        PIMAGE_DOS_HEADER   pidh;
        PIMAGE_NT_HEADERS   pinh;
        PULONG              pclrFlags;
        DWORD               impDirProt;
    
        IMAGE_DOS_HEADER    idh;
        IMAGE_NT_HEADERS    inh;
        ULONG               clrFlags;
    } DETOUR_EXE_RESTORE, *PDETOUR_EXE_RESTORE;
    
    #pragma pack(pop)
    
    #define DETOUR_SECTION_HEADER_DECLARE(cbSectionSize) \
    { \
          sizeof(DETOUR_SECTION_HEADER),\
          DETOUR_SECTION_HEADER_SIGNATURE,\
          sizeof(DETOUR_SECTION_HEADER),\
          (cbSectionSize),\
          \
          0,\
          0,\
          0,\
          0,\
          \
          0,\
          0,\
          0,\
          0,\
    }
    
    ///////////////////////////////////////////////////////////// Binary Typedefs.
    //
    typedef BOOL (CALLBACK *PF_DETOUR_BINARY_BYWAY_CALLBACK)(PVOID pContext,
                                                             PCHAR pszFile,
                                                             PCHAR *ppszOutFile);
    
    typedef BOOL (CALLBACK *PF_DETOUR_BINARY_FILE_CALLBACK)(PVOID pContext,
                                                            PCHAR pszOrigFile,
                                                            PCHAR pszFile,
                                                            PCHAR *ppszOutFile);
    
    typedef BOOL (CALLBACK *PF_DETOUR_BINARY_SYMBOL_CALLBACK)(PVOID pContext,
                                                              ULONG nOrigOrdinal,
                                                              ULONG nOrdinal,
                                                              ULONG *pnOutOrdinal,
                                                              PCHAR pszOrigSymbol,
                                                              PCHAR pszSymbol,
                                                              PCHAR *ppszOutSymbol);
    
    typedef BOOL (CALLBACK *PF_DETOUR_BINARY_COMMIT_CALLBACK)(PVOID pContext);
    
    typedef BOOL (CALLBACK *PF_DETOUR_ENUMERATE_EXPORT_CALLBACK)(PVOID pContext,
                                                                 ULONG nOrdinal,
                                                                 PCHAR pszName,
                                                                 PVOID pCode);
    
    typedef VOID * PDETOUR_BINARY;
    typedef VOID * PDETOUR_LOADED_BINARY;
    
    //////////////////////////////////////////////////////////// Detours 2.1 APIs.
    //
    
    LONG WINAPI DetourTransactionBegin();
    LONG WINAPI DetourTransactionAbort();
    LONG WINAPI DetourTransactionCommit();
    LONG WINAPI DetourTransactionCommitEx(PVOID **pppFailedPointer);
    
    LONG WINAPI DetourUpdateThread(HANDLE hThread);
    
    LONG WINAPI DetourAttach(PVOID *ppPointer,
                             PVOID pDetour);
    
    LONG WINAPI DetourAttachEx(PVOID *ppPointer,
                               PVOID pDetour,
                               PDETOUR_TRAMPOLINE *ppRealTrampoline,
                               PVOID *ppRealTarget,
                               PVOID *ppRealDetour);
    
    LONG WINAPI DetourDetach(PVOID *ppPointer,
                             PVOID pDetour);
    
    VOID WINAPI DetourSetIgnoreTooSmall(BOOL fIgnore);
    
    ////////////////////////////////////////////////////////////// Code Functions.
    //
    PVOID WINAPI DetourFindFunction(PCSTR pszModule, PCSTR pszFunction);
    PVOID WINAPI DetourCodeFromPointer(PVOID pPointer, PVOID *ppGlobals);
    
    PVOID WINAPI DetourCopyInstruction(PVOID pDst, PVOID pSrc, PVOID *ppTarget);
    PVOID WINAPI DetourCopyInstructionEx(PVOID pDst,
                                         PVOID pSrc,
                                         PVOID *ppTarget,
                                         LONG *plExtra);
    
    ///////////////////////////////////////////////////// Loaded Binary Functions.
    //
    HMODULE WINAPI DetourEnumerateModules(HMODULE hModuleLast);
    PVOID WINAPI DetourGetEntryPoint(HMODULE hModule);
    ULONG WINAPI DetourGetModuleSize(HMODULE hModule);
    BOOL WINAPI DetourEnumerateExports(HMODULE hModule,
                                       PVOID pContext,
                                       PF_DETOUR_ENUMERATE_EXPORT_CALLBACK pfExport);
    
    PVOID WINAPI DetourFindPayload(HMODULE hModule, REFGUID rguid, DWORD *pcbData);
    DWORD WINAPI DetourGetSizeOfPayloads(HMODULE hModule);
    
    ///////////////////////////////////////////////// Persistent Binary Functions.
    //
    
    PDETOUR_BINARY WINAPI DetourBinaryOpen(HANDLE hFile);
    PVOID WINAPI DetourBinaryEnumeratePayloads(PDETOUR_BINARY pBinary,
                                               GUID *pGuid,
                                               DWORD *pcbData,
                                               DWORD *pnIterator);
    PVOID WINAPI DetourBinaryFindPayload(PDETOUR_BINARY pBinary,
                                         REFGUID rguid,
                                         DWORD *pcbData);
    PVOID WINAPI DetourBinarySetPayload(PDETOUR_BINARY pBinary,
                                        REFGUID rguid,
                                        PVOID pData,
                                        DWORD cbData);
    BOOL WINAPI DetourBinaryDeletePayload(PDETOUR_BINARY pBinary, REFGUID rguid);
    BOOL WINAPI DetourBinaryPurgePayloads(PDETOUR_BINARY pBinary);
    BOOL WINAPI DetourBinaryResetImports(PDETOUR_BINARY pBinary);
    BOOL WINAPI DetourBinaryEditImports(PDETOUR_BINARY pBinary,
                                        PVOID pContext,
                                        PF_DETOUR_BINARY_BYWAY_CALLBACK pfByway,
                                        PF_DETOUR_BINARY_FILE_CALLBACK pfFile,
                                        PF_DETOUR_BINARY_SYMBOL_CALLBACK pfSymbol,
                                        PF_DETOUR_BINARY_COMMIT_CALLBACK pfCommit);
    BOOL WINAPI DetourBinaryWrite(PDETOUR_BINARY pBinary, HANDLE hFile);
    BOOL WINAPI DetourBinaryClose(PDETOUR_BINARY pBinary);
    
    /////////////////////////////////////////////////// Create Process & Load Dll.
    //
    typedef BOOL (WINAPI *PDETOUR_CREATE_PROCESS_ROUTINEA)
        (LPCSTR lpApplicationName,
         LPSTR lpCommandLine,
         LPSECURITY_ATTRIBUTES lpProcessAttributes,
         LPSECURITY_ATTRIBUTES lpThreadAttributes,
         BOOL bInheritHandles,
         DWORD dwCreationFlags,
         LPVOID lpEnvironment,
         LPCSTR lpCurrentDirectory,
         LPSTARTUPINFOA lpStartupInfo,
         LPPROCESS_INFORMATION lpProcessInformation);
    
    typedef BOOL (WINAPI *PDETOUR_CREATE_PROCESS_ROUTINEW)
        (LPCWSTR lpApplicationName,
         LPWSTR lpCommandLine,
         LPSECURITY_ATTRIBUTES lpProcessAttributes,
         LPSECURITY_ATTRIBUTES lpThreadAttributes,
         BOOL bInheritHandles,
         DWORD dwCreationFlags,
         LPVOID lpEnvironment,
         LPCWSTR lpCurrentDirectory,
         LPSTARTUPINFOW lpStartupInfo,
         LPPROCESS_INFORMATION lpProcessInformation);
    
    BOOL WINAPI DetourCreateProcessWithDllA(LPCSTR lpApplicationName,
                                            __in_z LPSTR lpCommandLine,
                                            LPSECURITY_ATTRIBUTES lpProcessAttributes,
                                            LPSECURITY_ATTRIBUTES lpThreadAttributes,
                                            BOOL bInheritHandles,
                                            DWORD dwCreationFlags,
                                            LPVOID lpEnvironment,
                                            LPCSTR lpCurrentDirectory,
                                            LPSTARTUPINFOA lpStartupInfo,
                                            LPPROCESS_INFORMATION lpProcessInformation,
                                            LPCSTR lpDetouredDllFullName,
                                            LPCSTR lpDllName,
                                            PDETOUR_CREATE_PROCESS_ROUTINEA
                                            pfCreateProcessA);
    
    BOOL WINAPI DetourCreateProcessWithDllW(LPCWSTR lpApplicationName,
                                            __in_z LPWSTR lpCommandLine,
                                            LPSECURITY_ATTRIBUTES lpProcessAttributes,
                                            LPSECURITY_ATTRIBUTES lpThreadAttributes,
                                            BOOL bInheritHandles,
                                            DWORD dwCreationFlags,
                                            LPVOID lpEnvironment,
                                            LPCWSTR lpCurrentDirectory,
                                            LPSTARTUPINFOW lpStartupInfo,
                                            LPPROCESS_INFORMATION lpProcessInformation,
                                            LPCSTR lpDetouredDllFullName,
                                            LPCSTR lpDllName,
                                            PDETOUR_CREATE_PROCESS_ROUTINEW
                                            pfCreateProcessW);
    
    #ifdef UNICODE
    #define DetourCreateProcessWithDll  DetourCreateProcessWithDllW
    #define PDETOUR_CREATE_PROCESS_ROUTINE     PDETOUR_CREATE_PROCESS_ROUTINEW
    #else
    #define DetourCreateProcessWithDll  DetourCreateProcessWithDllA
    #define PDETOUR_CREATE_PROCESS_ROUTINE     PDETOUR_CREATE_PROCESS_ROUTINEA
    #endif // !UNICODE
    
    BOOL WINAPI DetourCopyPayloadToProcess(HANDLE hProcess,
                                           REFGUID rguid,
                                           PVOID pvData,
                                           DWORD cbData);
    BOOL WINAPI DetourRestoreAfterWith();
    BOOL WINAPI DetourRestoreAfterWithEx(PVOID pvData, DWORD cbData);
    
    HMODULE WINAPI DetourGetDetouredMarker();
    
    //
    //////////////////////////////////////////////////////////////////////////////
    #ifdef __cplusplus
    }
    #endif // __cplusplus
    
    //////////////////////////////////////////////// Detours Internal Definitions.
    //
    #ifdef __cplusplus
    #ifdef DETOURS_INTERNAL
    
    #ifndef __deref_out
    #define __deref_out
    #endif
    
    #ifndef __deref
    #define __deref
    #endif
    
    //////////////////////////////////////////////////////////////////////////////
    //
    #if (_MSC_VER < 1299)
    #include <imagehlp.h>
    typedef IMAGEHLP_MODULE IMAGEHLP_MODULE64;
    typedef PIMAGEHLP_MODULE PIMAGEHLP_MODULE64;
    typedef IMAGEHLP_SYMBOL SYMBOL_INFO;
    typedef PIMAGEHLP_SYMBOL PSYMBOL_INFO;
    
    static inline
    LONG InterlockedCompareExchange(LONG *ptr, LONG nval, LONG oval)
    {
        return (LONG)::InterlockedCompareExchange((PVOID*)ptr, (PVOID)nval, (PVOID)oval);
    }
    #else
    #include <dbghelp.h>
    #endif
    
    #ifdef IMAGEAPI // defined by DBGHELP.H
    typedef LPAPI_VERSION (NTAPI *PF_ImagehlpApiVersionEx)(LPAPI_VERSION AppVersion);
    
    typedef BOOL (NTAPI *PF_SymInitialize)(IN HANDLE hProcess,
                                           IN LPCSTR UserSearchPath,
                                           IN BOOL fInvadeProcess);
    typedef DWORD (NTAPI *PF_SymSetOptions)(IN DWORD SymOptions);
    typedef DWORD (NTAPI *PF_SymGetOptions)(VOID);
    typedef DWORD64 (NTAPI *PF_SymLoadModule64)(IN HANDLE hProcess,
                                                IN HANDLE hFile,
                                                IN PSTR ImageName,
                                                IN PSTR ModuleName,
                                                IN DWORD64 BaseOfDll,
                                                IN DWORD SizeOfDll);
    typedef BOOL (NTAPI *PF_SymGetModuleInfo64)(IN HANDLE hProcess,
                                                IN DWORD64 qwAddr,
                                                OUT PIMAGEHLP_MODULE64 ModuleInfo);
    typedef BOOL (NTAPI *PF_SymFromName)(IN HANDLE hProcess,
                                         IN LPSTR Name,
                                         OUT PSYMBOL_INFO Symbol);
    
    typedef struct _DETOUR_SYM_INFO
    {
        HANDLE                  hProcess;
        HMODULE                 hDbgHelp;
        PF_ImagehlpApiVersionEx pfImagehlpApiVersionEx;
        PF_SymInitialize        pfSymInitialize;
        PF_SymSetOptions        pfSymSetOptions;
        PF_SymGetOptions        pfSymGetOptions;
        PF_SymLoadModule64      pfSymLoadModule64;
        PF_SymGetModuleInfo64   pfSymGetModuleInfo64;
        PF_SymFromName          pfSymFromName;
    } DETOUR_SYM_INFO, *PDETOUR_SYM_INFO;
    
    PDETOUR_SYM_INFO DetourLoadDbgHelp(VOID);
    
    #endif // IMAGEAPI
    
    #ifndef DETOUR_TRACE
    #if DETOUR_DEBUG
    #define DETOUR_TRACE(x) printf x
    #define DETOUR_BREAK()  DebugBreak()
    #include <stdio.h>
    #include <limits.h>
    #else
    #define DETOUR_TRACE(x)
    #define DETOUR_BREAK()
    #endif
    #endif
    
    #ifdef DETOURS_IA64
    __declspec(align(16)) struct DETOUR_IA64_BUNDLE
    {
      public:
        union
        {
            BYTE    data[16];
            UINT64  wide[2];
        };
    
      public:
        struct DETOUR_IA64_METADATA;
    
        typedef BOOL (DETOUR_IA64_BUNDLE::* DETOUR_IA64_METACOPY)
            (const DETOUR_IA64_METADATA *pMeta, DETOUR_IA64_BUNDLE *pDst) const;
    
        enum {
            A_UNIT  = 1u,
            I_UNIT  = 2u,
            M_UNIT  = 3u,
            B_UNIT  = 4u,
            F_UNIT  = 5u,
            L_UNIT  = 6u,
            X_UNIT  = 7u,
            UNIT_MASK = 7u,
            STOP    = 8u
        };
        struct DETOUR_IA64_METADATA
        {
            ULONG       nTemplate       : 8;    // Instruction template.
            ULONG       nUnit0          : 4;    // Unit for slot 0
            ULONG       nUnit1          : 4;    // Unit for slot 1
            ULONG       nUnit2          : 4;    // Unit for slot 2
            DETOUR_IA64_METACOPY    pfCopy;     // Function pointer.
        };
    
      protected:
        BOOL CopyBytes(const DETOUR_IA64_METADATA *pMeta, DETOUR_IA64_BUNDLE *pDst) const;
        BOOL CopyBytesMMB(const DETOUR_IA64_METADATA *pMeta, DETOUR_IA64_BUNDLE *pDst) const;
        BOOL CopyBytesMBB(const DETOUR_IA64_METADATA *pMeta, DETOUR_IA64_BUNDLE *pDst) const;
        BOOL CopyBytesBBB(const DETOUR_IA64_METADATA *pMeta, DETOUR_IA64_BUNDLE *pDst) const;
        BOOL CopyBytesMLX(const DETOUR_IA64_METADATA *pMeta, DETOUR_IA64_BUNDLE *pDst) const;
    
        static const DETOUR_IA64_METADATA s_rceCopyTable[33];
    
      public:
        // 120 112 104 96 88 80 72 64 56 48 40 32 24 16  8  0
        //  f.  e.  d. c. b. a. 9. 8. 7. 6. 5. 4. 3. 2. 1. 0.
    
        //                                      00
        // f.e. d.c. b.a. 9.8. 7.6. 5.4. 3.2. 1.0.
        // 0000 0000 0000 0000 0000 0000 0000 001f : Template [4..0]
        // 0000 0000 0000 0000 0000 03ff ffff ffe0 : Zero [ 41..  5]
        // 0000 0000 0000 0000 0000 3c00 0000 0000 : Zero [ 45.. 42]
        // 0000 0000 0007 ffff ffff c000 0000 0000 : One  [ 82.. 46]
        // 0000 0000 0078 0000 0000 0000 0000 0000 : One  [ 86.. 83]
        // 0fff ffff ff80 0000 0000 0000 0000 0000 : Two  [123.. 87]
        // f000 0000 0000 0000 0000 0000 0000 0000 : Two  [127..124]
        BYTE    GetTemplate() const;
        BYTE    GetInst0() const;
        BYTE    GetInst1() const;
        BYTE    GetInst2() const;
        BYTE    GetUnit0() const;
        BYTE    GetUnit1() const;
        BYTE    GetUnit2() const;
        UINT64  GetData0() const;
        UINT64  GetData1() const;
        UINT64  GetData2() const;
    
      public:
        BOOL    IsBrl() const;
        VOID    SetBrl();
        VOID    SetBrl(UINT64 target);
        UINT64  GetBrlTarget() const;
        VOID    SetBrlTarget(UINT64 target);
        VOID    SetBrlImm(UINT64 imm);
        UINT64  GetBrlImm() const;
    
        BOOL    IsMovlGp() const;
        UINT64  GetMovlGp() const;
        VOID    SetMovlGp(UINT64 gp);
    
        VOID    SetInst0(BYTE nInst);
        VOID    SetInst1(BYTE nInst);
        VOID    SetInst2(BYTE nInst);
        VOID    SetData0(UINT64 nData);
        VOID    SetData1(UINT64 nData);
        VOID    SetData2(UINT64 nData);
        BOOL    SetNop0();
        BOOL    SetNop1();
        BOOL    SetNop2();
        BOOL    SetStop();
    
        BOOL    Copy(DETOUR_IA64_BUNDLE *pDst) const;
    };
    #endif // DETOURS_IA64
    
    //////////////////////////////////////////////////////////////////////////////
    
    #endif // DETOURS_INTERNAL
    #endif // __cplusplus
    
    #endif // _DETOURS_H_
    //
    ////////////////////////////////////////////////////////////////  End of File.

  23. #23
    Doggie And Rice. Military is offline
    MemberRank
    Jun 2009 Join Date
    Here and AboutLocation
    3,302Posts

    Re: Detours Header File V2.1

    Quote Originally Posted by Analise View Post
    2.1:
    Code:
    //////////////////////////////////////////////////////////////////////////////
    //
    //  Core Detours Functionality (detours.h of detours.lib)
    //
    //  Microsoft Research Detours Package, Version 2.1.
    //
    //  Copyright (c) Microsoft Corporation.  All rights reserved.
    //
    
    #pragma once
    #ifndef _DETOURS_H_
    #define _DETOURS_H_
    
    #define DETOURS_VERSION     20100   // 2.1.0
    
    //////////////////////////////////////////////////////////////////////////////
    //
    
    #if (_MSC_VER < 1299)
    typedef LONG LONG_PTR;
    typedef ULONG ULONG_PTR;
    #endif
    
    #ifndef __in_z
    #define __in_z
    #endif
    
    //////////////////////////////////////////////////////////////////////////////
    //
    #ifndef GUID_DEFINED
    #define GUID_DEFINED
    typedef struct  _GUID
    {
        DWORD Data1;
        WORD Data2;
        WORD Data3;
        BYTE Data4[ 8 ];
    } GUID;
    
    #ifdef INITGUID
    #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
            const GUID name \
                    = { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
    #else
    #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
        const GUID name
    #endif // INITGUID
    #endif // !GUID_DEFINED
    
    #if defined(__cplusplus)
    #ifndef _REFGUID_DEFINED
    #define _REFGUID_DEFINED
    #define REFGUID             const GUID &
    #endif // !_REFGUID_DEFINED
    #else // !__cplusplus
    #ifndef _REFGUID_DEFINED
    #define _REFGUID_DEFINED
    #define REFGUID             const GUID * const
    #endif // !_REFGUID_DEFINED
    #endif // !__cplusplus
    
    //
    //////////////////////////////////////////////////////////////////////////////
    
    #ifdef __cplusplus
    extern "C" {
    #endif // __cplusplus
    
    /////////////////////////////////////////////////// Instruction Target Macros.
    //
    #define DETOUR_INSTRUCTION_TARGET_NONE          ((PVOID)0)
    #define DETOUR_INSTRUCTION_TARGET_DYNAMIC       ((PVOID)(LONG_PTR)-1)
    #define DETOUR_SECTION_HEADER_SIGNATURE         0x00727444   // "Dtr\0"
    
    extern const GUID DETOUR_EXE_RESTORE_GUID;
    
    #define DETOUR_TRAMPOLINE_SIGNATURE             0x21727444  // Dtr!
    typedef struct _DETOUR_TRAMPOLINE DETOUR_TRAMPOLINE, *PDETOUR_TRAMPOLINE;
    
    /////////////////////////////////////////////////////////// Binary Structures.
    //
    #pragma pack(push, 8)
    typedef struct _DETOUR_SECTION_HEADER
    {
        DWORD       cbHeaderSize;
        DWORD       nSignature;
        DWORD       nDataOffset;
        DWORD       cbDataSize;
    
        DWORD       nOriginalImportVirtualAddress;
        DWORD       nOriginalImportSize;
        DWORD       nOriginalBoundImportVirtualAddress;
        DWORD       nOriginalBoundImportSize;
    
        DWORD       nOriginalIatVirtualAddress;
        DWORD       nOriginalIatSize;
        DWORD       nOriginalSizeOfImage;
        DWORD       cbPrePE;
    
        DWORD       nOriginalClrFlags;
        DWORD       reserved1;
        DWORD       reserved2;
        DWORD       reserved3;
    
        // Followed by cbPrePE bytes of data.
    } DETOUR_SECTION_HEADER, *PDETOUR_SECTION_HEADER;
    
    typedef struct _DETOUR_SECTION_RECORD
    {
        DWORD       cbBytes;
        DWORD       nReserved;
        GUID        guid;
    } DETOUR_SECTION_RECORD, *PDETOUR_SECTION_RECORD;
    
    typedef struct _DETOUR_CLR_HEADER
    {
        // Header versioning
        ULONG                   cb;
        USHORT                  MajorRuntimeVersion;
        USHORT                  MinorRuntimeVersion;
    
        // Symbol table and startup information
        IMAGE_DATA_DIRECTORY    MetaData;
        ULONG                   Flags;
    
        // Followed by the rest of the header.
    } DETOUR_CLR_HEADER, *PDETOUR_CLR_HEADER;
    
    typedef struct _DETOUR_EXE_RESTORE
    {
        ULONG               cb;
    
        PIMAGE_DOS_HEADER   pidh;
        PIMAGE_NT_HEADERS   pinh;
        PULONG              pclrFlags;
        DWORD               impDirProt;
    
        IMAGE_DOS_HEADER    idh;
        IMAGE_NT_HEADERS    inh;
        ULONG               clrFlags;
    } DETOUR_EXE_RESTORE, *PDETOUR_EXE_RESTORE;
    
    #pragma pack(pop)
    
    #define DETOUR_SECTION_HEADER_DECLARE(cbSectionSize) \
    { \
          sizeof(DETOUR_SECTION_HEADER),\
          DETOUR_SECTION_HEADER_SIGNATURE,\
          sizeof(DETOUR_SECTION_HEADER),\
          (cbSectionSize),\
          \
          0,\
          0,\
          0,\
          0,\
          \
          0,\
          0,\
          0,\
          0,\
    }
    
    ///////////////////////////////////////////////////////////// Binary Typedefs.
    //
    typedef BOOL (CALLBACK *PF_DETOUR_BINARY_BYWAY_CALLBACK)(PVOID pContext,
                                                             PCHAR pszFile,
                                                             PCHAR *ppszOutFile);
    
    typedef BOOL (CALLBACK *PF_DETOUR_BINARY_FILE_CALLBACK)(PVOID pContext,
                                                            PCHAR pszOrigFile,
                                                            PCHAR pszFile,
                                                            PCHAR *ppszOutFile);
    
    typedef BOOL (CALLBACK *PF_DETOUR_BINARY_SYMBOL_CALLBACK)(PVOID pContext,
                                                              ULONG nOrigOrdinal,
                                                              ULONG nOrdinal,
                                                              ULONG *pnOutOrdinal,
                                                              PCHAR pszOrigSymbol,
                                                              PCHAR pszSymbol,
                                                              PCHAR *ppszOutSymbol);
    
    typedef BOOL (CALLBACK *PF_DETOUR_BINARY_COMMIT_CALLBACK)(PVOID pContext);
    
    typedef BOOL (CALLBACK *PF_DETOUR_ENUMERATE_EXPORT_CALLBACK)(PVOID pContext,
                                                                 ULONG nOrdinal,
                                                                 PCHAR pszName,
                                                                 PVOID pCode);
    
    typedef VOID * PDETOUR_BINARY;
    typedef VOID * PDETOUR_LOADED_BINARY;
    
    //////////////////////////////////////////////////////////// Detours 2.1 APIs.
    //
    
    LONG WINAPI DetourTransactionBegin();
    LONG WINAPI DetourTransactionAbort();
    LONG WINAPI DetourTransactionCommit();
    LONG WINAPI DetourTransactionCommitEx(PVOID **pppFailedPointer);
    
    LONG WINAPI DetourUpdateThread(HANDLE hThread);
    
    LONG WINAPI DetourAttach(PVOID *ppPointer,
                             PVOID pDetour);
    
    LONG WINAPI DetourAttachEx(PVOID *ppPointer,
                               PVOID pDetour,
                               PDETOUR_TRAMPOLINE *ppRealTrampoline,
                               PVOID *ppRealTarget,
                               PVOID *ppRealDetour);
    
    LONG WINAPI DetourDetach(PVOID *ppPointer,
                             PVOID pDetour);
    
    VOID WINAPI DetourSetIgnoreTooSmall(BOOL fIgnore);
    
    ////////////////////////////////////////////////////////////// Code Functions.
    //
    PVOID WINAPI DetourFindFunction(PCSTR pszModule, PCSTR pszFunction);
    PVOID WINAPI DetourCodeFromPointer(PVOID pPointer, PVOID *ppGlobals);
    
    PVOID WINAPI DetourCopyInstruction(PVOID pDst, PVOID pSrc, PVOID *ppTarget);
    PVOID WINAPI DetourCopyInstructionEx(PVOID pDst,
                                         PVOID pSrc,
                                         PVOID *ppTarget,
                                         LONG *plExtra);
    
    ///////////////////////////////////////////////////// Loaded Binary Functions.
    //
    HMODULE WINAPI DetourEnumerateModules(HMODULE hModuleLast);
    PVOID WINAPI DetourGetEntryPoint(HMODULE hModule);
    ULONG WINAPI DetourGetModuleSize(HMODULE hModule);
    BOOL WINAPI DetourEnumerateExports(HMODULE hModule,
                                       PVOID pContext,
                                       PF_DETOUR_ENUMERATE_EXPORT_CALLBACK pfExport);
    
    PVOID WINAPI DetourFindPayload(HMODULE hModule, REFGUID rguid, DWORD *pcbData);
    DWORD WINAPI DetourGetSizeOfPayloads(HMODULE hModule);
    
    ///////////////////////////////////////////////// Persistent Binary Functions.
    //
    
    PDETOUR_BINARY WINAPI DetourBinaryOpen(HANDLE hFile);
    PVOID WINAPI DetourBinaryEnumeratePayloads(PDETOUR_BINARY pBinary,
                                               GUID *pGuid,
                                               DWORD *pcbData,
                                               DWORD *pnIterator);
    PVOID WINAPI DetourBinaryFindPayload(PDETOUR_BINARY pBinary,
                                         REFGUID rguid,
                                         DWORD *pcbData);
    PVOID WINAPI DetourBinarySetPayload(PDETOUR_BINARY pBinary,
                                        REFGUID rguid,
                                        PVOID pData,
                                        DWORD cbData);
    BOOL WINAPI DetourBinaryDeletePayload(PDETOUR_BINARY pBinary, REFGUID rguid);
    BOOL WINAPI DetourBinaryPurgePayloads(PDETOUR_BINARY pBinary);
    BOOL WINAPI DetourBinaryResetImports(PDETOUR_BINARY pBinary);
    BOOL WINAPI DetourBinaryEditImports(PDETOUR_BINARY pBinary,
                                        PVOID pContext,
                                        PF_DETOUR_BINARY_BYWAY_CALLBACK pfByway,
                                        PF_DETOUR_BINARY_FILE_CALLBACK pfFile,
                                        PF_DETOUR_BINARY_SYMBOL_CALLBACK pfSymbol,
                                        PF_DETOUR_BINARY_COMMIT_CALLBACK pfCommit);
    BOOL WINAPI DetourBinaryWrite(PDETOUR_BINARY pBinary, HANDLE hFile);
    BOOL WINAPI DetourBinaryClose(PDETOUR_BINARY pBinary);
    
    /////////////////////////////////////////////////// Create Process & Load Dll.
    //
    typedef BOOL (WINAPI *PDETOUR_CREATE_PROCESS_ROUTINEA)
        (LPCSTR lpApplicationName,
         LPSTR lpCommandLine,
         LPSECURITY_ATTRIBUTES lpProcessAttributes,
         LPSECURITY_ATTRIBUTES lpThreadAttributes,
         BOOL bInheritHandles,
         DWORD dwCreationFlags,
         LPVOID lpEnvironment,
         LPCSTR lpCurrentDirectory,
         LPSTARTUPINFOA lpStartupInfo,
         LPPROCESS_INFORMATION lpProcessInformation);
    
    typedef BOOL (WINAPI *PDETOUR_CREATE_PROCESS_ROUTINEW)
        (LPCWSTR lpApplicationName,
         LPWSTR lpCommandLine,
         LPSECURITY_ATTRIBUTES lpProcessAttributes,
         LPSECURITY_ATTRIBUTES lpThreadAttributes,
         BOOL bInheritHandles,
         DWORD dwCreationFlags,
         LPVOID lpEnvironment,
         LPCWSTR lpCurrentDirectory,
         LPSTARTUPINFOW lpStartupInfo,
         LPPROCESS_INFORMATION lpProcessInformation);
    
    BOOL WINAPI DetourCreateProcessWithDllA(LPCSTR lpApplicationName,
                                            __in_z LPSTR lpCommandLine,
                                            LPSECURITY_ATTRIBUTES lpProcessAttributes,
                                            LPSECURITY_ATTRIBUTES lpThreadAttributes,
                                            BOOL bInheritHandles,
                                            DWORD dwCreationFlags,
                                            LPVOID lpEnvironment,
                                            LPCSTR lpCurrentDirectory,
                                            LPSTARTUPINFOA lpStartupInfo,
                                            LPPROCESS_INFORMATION lpProcessInformation,
                                            LPCSTR lpDetouredDllFullName,
                                            LPCSTR lpDllName,
                                            PDETOUR_CREATE_PROCESS_ROUTINEA
                                            pfCreateProcessA);
    
    BOOL WINAPI DetourCreateProcessWithDllW(LPCWSTR lpApplicationName,
                                            __in_z LPWSTR lpCommandLine,
                                            LPSECURITY_ATTRIBUTES lpProcessAttributes,
                                            LPSECURITY_ATTRIBUTES lpThreadAttributes,
                                            BOOL bInheritHandles,
                                            DWORD dwCreationFlags,
                                            LPVOID lpEnvironment,
                                            LPCWSTR lpCurrentDirectory,
                                            LPSTARTUPINFOW lpStartupInfo,
                                            LPPROCESS_INFORMATION lpProcessInformation,
                                            LPCSTR lpDetouredDllFullName,
                                            LPCSTR lpDllName,
                                            PDETOUR_CREATE_PROCESS_ROUTINEW
                                            pfCreateProcessW);
    
    #ifdef UNICODE
    #define DetourCreateProcessWithDll  DetourCreateProcessWithDllW
    #define PDETOUR_CREATE_PROCESS_ROUTINE     PDETOUR_CREATE_PROCESS_ROUTINEW
    #else
    #define DetourCreateProcessWithDll  DetourCreateProcessWithDllA
    #define PDETOUR_CREATE_PROCESS_ROUTINE     PDETOUR_CREATE_PROCESS_ROUTINEA
    #endif // !UNICODE
    
    BOOL WINAPI DetourCopyPayloadToProcess(HANDLE hProcess,
                                           REFGUID rguid,
                                           PVOID pvData,
                                           DWORD cbData);
    BOOL WINAPI DetourRestoreAfterWith();
    BOOL WINAPI DetourRestoreAfterWithEx(PVOID pvData, DWORD cbData);
    
    HMODULE WINAPI DetourGetDetouredMarker();
    
    //
    //////////////////////////////////////////////////////////////////////////////
    #ifdef __cplusplus
    }
    #endif // __cplusplus
    
    //////////////////////////////////////////////// Detours Internal Definitions.
    //
    #ifdef __cplusplus
    #ifdef DETOURS_INTERNAL
    
    #ifndef __deref_out
    #define __deref_out
    #endif
    
    #ifndef __deref
    #define __deref
    #endif
    
    //////////////////////////////////////////////////////////////////////////////
    //
    #if (_MSC_VER < 1299)
    #include <imagehlp.h>
    typedef IMAGEHLP_MODULE IMAGEHLP_MODULE64;
    typedef PIMAGEHLP_MODULE PIMAGEHLP_MODULE64;
    typedef IMAGEHLP_SYMBOL SYMBOL_INFO;
    typedef PIMAGEHLP_SYMBOL PSYMBOL_INFO;
    
    static inline
    LONG InterlockedCompareExchange(LONG *ptr, LONG nval, LONG oval)
    {
        return (LONG)::InterlockedCompareExchange((PVOID*)ptr, (PVOID)nval, (PVOID)oval);
    }
    #else
    #include <dbghelp.h>
    #endif
    
    #ifdef IMAGEAPI // defined by DBGHELP.H
    typedef LPAPI_VERSION (NTAPI *PF_ImagehlpApiVersionEx)(LPAPI_VERSION AppVersion);
    
    typedef BOOL (NTAPI *PF_SymInitialize)(IN HANDLE hProcess,
                                           IN LPCSTR UserSearchPath,
                                           IN BOOL fInvadeProcess);
    typedef DWORD (NTAPI *PF_SymSetOptions)(IN DWORD SymOptions);
    typedef DWORD (NTAPI *PF_SymGetOptions)(VOID);
    typedef DWORD64 (NTAPI *PF_SymLoadModule64)(IN HANDLE hProcess,
                                                IN HANDLE hFile,
                                                IN PSTR ImageName,
                                                IN PSTR ModuleName,
                                                IN DWORD64 BaseOfDll,
                                                IN DWORD SizeOfDll);
    typedef BOOL (NTAPI *PF_SymGetModuleInfo64)(IN HANDLE hProcess,
                                                IN DWORD64 qwAddr,
                                                OUT PIMAGEHLP_MODULE64 ModuleInfo);
    typedef BOOL (NTAPI *PF_SymFromName)(IN HANDLE hProcess,
                                         IN LPSTR Name,
                                         OUT PSYMBOL_INFO Symbol);
    
    typedef struct _DETOUR_SYM_INFO
    {
        HANDLE                  hProcess;
        HMODULE                 hDbgHelp;
        PF_ImagehlpApiVersionEx pfImagehlpApiVersionEx;
        PF_SymInitialize        pfSymInitialize;
        PF_SymSetOptions        pfSymSetOptions;
        PF_SymGetOptions        pfSymGetOptions;
        PF_SymLoadModule64      pfSymLoadModule64;
        PF_SymGetModuleInfo64   pfSymGetModuleInfo64;
        PF_SymFromName          pfSymFromName;
    } DETOUR_SYM_INFO, *PDETOUR_SYM_INFO;
    
    PDETOUR_SYM_INFO DetourLoadDbgHelp(VOID);
    
    #endif // IMAGEAPI
    
    #ifndef DETOUR_TRACE
    #if DETOUR_DEBUG
    #define DETOUR_TRACE(x) printf x
    #define DETOUR_BREAK()  DebugBreak()
    #include <stdio.h>
    #include <limits.h>
    #else
    #define DETOUR_TRACE(x)
    #define DETOUR_BREAK()
    #endif
    #endif
    
    #ifdef DETOURS_IA64
    __declspec(align(16)) struct DETOUR_IA64_BUNDLE
    {
      public:
        union
        {
            BYTE    data[16];
            UINT64  wide[2];
        };
    
      public:
        struct DETOUR_IA64_METADATA;
    
        typedef BOOL (DETOUR_IA64_BUNDLE::* DETOUR_IA64_METACOPY)
            (const DETOUR_IA64_METADATA *pMeta, DETOUR_IA64_BUNDLE *pDst) const;
    
        enum {
            A_UNIT  = 1u,
            I_UNIT  = 2u,
            M_UNIT  = 3u,
            B_UNIT  = 4u,
            F_UNIT  = 5u,
            L_UNIT  = 6u,
            X_UNIT  = 7u,
            UNIT_MASK = 7u,
            STOP    = 8u
        };
        struct DETOUR_IA64_METADATA
        {
            ULONG       nTemplate       : 8;    // Instruction template.
            ULONG       nUnit0          : 4;    // Unit for slot 0
            ULONG       nUnit1          : 4;    // Unit for slot 1
            ULONG       nUnit2          : 4;    // Unit for slot 2
            DETOUR_IA64_METACOPY    pfCopy;     // Function pointer.
        };
    
      protected:
        BOOL CopyBytes(const DETOUR_IA64_METADATA *pMeta, DETOUR_IA64_BUNDLE *pDst) const;
        BOOL CopyBytesMMB(const DETOUR_IA64_METADATA *pMeta, DETOUR_IA64_BUNDLE *pDst) const;
        BOOL CopyBytesMBB(const DETOUR_IA64_METADATA *pMeta, DETOUR_IA64_BUNDLE *pDst) const;
        BOOL CopyBytesBBB(const DETOUR_IA64_METADATA *pMeta, DETOUR_IA64_BUNDLE *pDst) const;
        BOOL CopyBytesMLX(const DETOUR_IA64_METADATA *pMeta, DETOUR_IA64_BUNDLE *pDst) const;
    
        static const DETOUR_IA64_METADATA s_rceCopyTable[33];
    
      public:
        // 120 112 104 96 88 80 72 64 56 48 40 32 24 16  8  0
        //  f.  e.  d. c. b. a. 9. 8. 7. 6. 5. 4. 3. 2. 1. 0.
    
        //                                      00
        // f.e. d.c. b.a. 9.8. 7.6. 5.4. 3.2. 1.0.
        // 0000 0000 0000 0000 0000 0000 0000 001f : Template [4..0]
        // 0000 0000 0000 0000 0000 03ff ffff ffe0 : Zero [ 41..  5]
        // 0000 0000 0000 0000 0000 3c00 0000 0000 : Zero [ 45.. 42]
        // 0000 0000 0007 ffff ffff c000 0000 0000 : One  [ 82.. 46]
        // 0000 0000 0078 0000 0000 0000 0000 0000 : One  [ 86.. 83]
        // 0fff ffff ff80 0000 0000 0000 0000 0000 : Two  [123.. 87]
        // f000 0000 0000 0000 0000 0000 0000 0000 : Two  [127..124]
        BYTE    GetTemplate() const;
        BYTE    GetInst0() const;
        BYTE    GetInst1() const;
        BYTE    GetInst2() const;
        BYTE    GetUnit0() const;
        BYTE    GetUnit1() const;
        BYTE    GetUnit2() const;
        UINT64  GetData0() const;
        UINT64  GetData1() const;
        UINT64  GetData2() const;
    
      public:
        BOOL    IsBrl() const;
        VOID    SetBrl();
        VOID    SetBrl(UINT64 target);
        UINT64  GetBrlTarget() const;
        VOID    SetBrlTarget(UINT64 target);
        VOID    SetBrlImm(UINT64 imm);
        UINT64  GetBrlImm() const;
    
        BOOL    IsMovlGp() const;
        UINT64  GetMovlGp() const;
        VOID    SetMovlGp(UINT64 gp);
    
        VOID    SetInst0(BYTE nInst);
        VOID    SetInst1(BYTE nInst);
        VOID    SetInst2(BYTE nInst);
        VOID    SetData0(UINT64 nData);
        VOID    SetData1(UINT64 nData);
        VOID    SetData2(UINT64 nData);
        BOOL    SetNop0();
        BOOL    SetNop1();
        BOOL    SetNop2();
        BOOL    SetStop();
    
        BOOL    Copy(DETOUR_IA64_BUNDLE *pDst) const;
    };
    #endif // DETOURS_IA64
    
    //////////////////////////////////////////////////////////////////////////////
    
    #endif // DETOURS_INTERNAL
    #endif // __cplusplus
    
    #endif // _DETOURS_H_
    //
    ////////////////////////////////////////////////////////////////  End of File.
    I fixed it already , Phoenix close this thread.



Advertisement