可可可乐 发表于 2020-2-19 10:13:52

求个大佬把C++代码改成易语言代码

#define ZXString      char*

bool Hook_StringPool__GetString(bool enable)
{
//Log(__FUNCTION__ " %i\r\n", enable);

typedef ZXString*(__fastcall* StringPool__GetString_t)(void* ecx, void* edx, ZXString* result, unsigned int nIdx, char formal);

static auto StringPool__GetString =
reinterpret_cast<StringPool__GetString_t>(0x00746750);

StringPool__GetString_t Hook = [](void* ecx, void* edx, ZXString* result, unsigned int nIdx, char formal) -> ZXString*
{
auto ret = StringPool__GetString(ecx, edx, result, nIdx, formal);

if (nIdx == 2722)
{
strcpy(*ret, "ABC");
}

//Log("StringPool__GetString: %s\r\n", *result);
return ret;
};

return SetHook(enable, reinterpret_cast<void**>(&StringPool__GetString), Hook);
}

揰掵佲 发表于 2020-2-19 12:49:31

Hook这一部分代码没用的~设置Hook和回调函数~

可可可乐 发表于 2020-2-19 13:22:11

揰掵佲 发表于 2020-2-19 12:49
Hook这一部分代码没用的~设置Hook和回调函数~

那需要要怎么弄的??

揰掵佲 发表于 2020-2-20 00:11:00

可可可乐 发表于 2020-2-19 13:22
那需要要怎么弄的??

把你全部的HOOK代码贴上来

可可可乐 发表于 2020-2-26 14:52:01

揰掵佲 发表于 2020-2-20 00:11
把你全部的HOOK代码贴上来

BOOL SetHook(BOOL bInstall, PVOID* ppvTarget, PVOID pvDetour)
{
        if (DetourTransactionBegin() != NO_ERROR)
                return FALSE;
       
        auto tid = GetCurrentThread();

        if (DetourUpdateThread(tid) == NO_ERROR)
        {
                auto func = bInstall ? DetourAttach : DetourDetach;

                if (func(ppvTarget, pvDetour) == NO_ERROR)
                {
                        if (DetourTransactionCommit() == NO_ERROR)                       
                                return TRUE;                       
                }
        }

        DetourTransactionAbort();
        return FALSE;
}


只有这些跟上面的。
页: [1]
查看完整版本: 求个大佬把C++代码改成易语言代码