예제 #1
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;
            HookPool.RemoveHooker(_targetMethod);
        }
예제 #2
0
        public void Install()
        {
            if (LDasm.IsiOS()) // iOS 不支持修改 code 所在区域 page
            {
                return;
            }

            if (isHooked)
            {
                return;
            }

            HookPool.AddHooker(_targetMethod, this);

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

            HookLog.LogFormat($"hook \"{_targetMethod.Name}\" success!!!");

            isHooked = true;
        }