62 lines
1.4 KiB
C++
62 lines
1.4 KiB
C++
|
|
#include "import.h"
|
||
|
|
#include "Singleton.hpp"
|
||
|
|
#include "sdk_class.hpp"
|
||
|
|
#include "inline_hook.h"
|
||
|
|
#include "utils.hpp"
|
||
|
|
|
||
|
|
#define MAIN_OFFSET(offset) ((void *)((0x8048000) + (offset)))
|
||
|
|
#define SUBHOOK_INIT(func, addr) \
|
||
|
|
fn##func func = (fn##func)addr; \
|
||
|
|
FuncHook h##func
|
||
|
|
|
||
|
|
#define SUBHOOK_SETUP(func) h##func.Hook((void **)&func, (void *)_##func)
|
||
|
|
|
||
|
|
class Controller
|
||
|
|
{
|
||
|
|
public:
|
||
|
|
SINGLETON_DEFINE_S(Controller);
|
||
|
|
|
||
|
|
private:
|
||
|
|
Controller();
|
||
|
|
~Controller();
|
||
|
|
public:
|
||
|
|
void init();
|
||
|
|
|
||
|
|
|
||
|
|
private:
|
||
|
|
/**
|
||
|
|
* @brief hook修复镶嵌徽章
|
||
|
|
* @param pDispatcher_UseJewel
|
||
|
|
* @param pUser
|
||
|
|
* @param pBuf
|
||
|
|
* @return
|
||
|
|
*/
|
||
|
|
static int hook_UseJewel_dispatch_sig(void* pDispatcher_UseJewel, CUser* pUser, PacketBuf* pBuf);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief hook收包处理
|
||
|
|
* @param a1
|
||
|
|
* @param a2
|
||
|
|
* @param a3
|
||
|
|
* @param a4
|
||
|
|
* @param src
|
||
|
|
* @param a6
|
||
|
|
* @param a7
|
||
|
|
* @param a8
|
||
|
|
* @return
|
||
|
|
*/
|
||
|
|
static int hook_PacketDispatcher_doDispatch(PacketDispatcher* a1, CUser* a2, int a3, int packet_id, void* packet_src, int pecakt_len, int a7, int a8);
|
||
|
|
|
||
|
|
private:
|
||
|
|
using UseJewel_dispatch_sig_Type = decltype(hook_UseJewel_dispatch_sig);
|
||
|
|
UseJewel_dispatch_sig_Type* old_UseJewel_dispatch_sig;
|
||
|
|
|
||
|
|
using PacketDispatcher_doDispatch_Type = decltype(hook_PacketDispatcher_doDispatch);
|
||
|
|
PacketDispatcher_doDispatch_Type* old_PacketDispatcher_doDispatch;
|
||
|
|
|
||
|
|
|
||
|
|
private:
|
||
|
|
FuncHook mhook_UseJewel_dispatch_sig;
|
||
|
|
FuncHook mhook_PacketDispatcher_doDispatch;
|
||
|
|
|
||
|
|
};
|