Example #1
0
    public void Install()
    {
        if (isHooked)
        {
            return;
        }

        HookerPool.AddHooker(_targetMethod, this);

        InitProxyBuff();
        BackupHeader();
        PatchTargetMethod();
        PatchProxyMethod();

        isHooked = true;
    }
Example #2
0
    public void Uninstall()
    {
        if (!isHooked)
        {
            return;
        }

        byte *pTarget = (byte *)_targetPtr.ToPointer();

        for (int i = 0; i < _proxyBuff.Length; i++)
        {
            *pTarget++ = _proxyBuff[i];
        }

        isHooked = false;
        HookerPool.RemoveHooker(_targetMethod);
    }
Example #3
0
    public void Install()
    {
        if (LDasm.IsiOS()) // iOS 不支持修改 code 所在区域 page
        {
            return;
        }

        if (isHooked)
        {
            return;
        }

        HookerPool.AddHooker(_targetMethod, this);

        InitProxyBuff();
        BackupHeader();
        PatchTargetMethod();
        PatchProxyMethod();

        isHooked = true;
    }