private static void HookBeforeResourcesPacking()
        {
            if (!ACTkSettings.Instance.InjectionDetectorEnabled ||
                !InjectionRoutines.IsInjectionPossible())
            {
                return;
            }

            if (EditorApplication.isPlayingOrWillChangePlaymode ||
                hookBeforeResourcesPackingExecuted ||
                hookBeforeResourcesPackingError ||
                !BuildPipeline.isBuildingPlayer)
            {
                return;
            }

            try
            {
                hookBeforeResourcesPackingExecuted = true;
                EditorApplication.LockReloadAssemblies();

                InjectionWhitelistBuilder.GenerateWhitelist();
            }
            catch (Exception e)
            {
                Debug.LogError(ACTkConstants.LogPrefix + "Error at HookBeforeResourcesPacking:\n" + e);
                hookBeforeResourcesPackingError = true;
            }
            finally
            {
                EditorApplication.UnlockReloadAssemblies();
            }
        }
Exemplo n.º 2
0
        public void OnPostBuildPlayerScriptDLLs(BuildReport report)
        {
            if (!ACTkSettings.Instance.InjectionDetectorEnabled ||
                !InjectionRoutines.IsTargetPlatformCompatible())
            {
                return;
            }

            InjectionWhitelistBuilder.GenerateWhitelist();
        }
Exemplo n.º 3
0
        public void OnPreprocessBuild(BuildReport report)
        {
            if (!ACTkSettings.Instance.InjectionDetectorEnabled ||
                !InjectionRoutines.IsTargetPlatformCompatible())
            {
                return;
            }

            Prepare();
        }
Exemplo n.º 4
0
		protected override bool DrawUniqueDetectorProperties()
		{
			if (!ACTkSettings.Instance.InjectionDetectorEnabled)
			{
				using (GUITools.Vertical(GUITools.PanelWithBackground))
				{
					EditorGUILayout.Separator();
					EditorGUILayout.HelpBox("Injection Detector support is not enabled! Injection Detector will not work properly", 
						MessageType.Error, true);

					using (new GUILayout.HorizontalScope())
					{
						if (GUILayout.Button("Enable Now"))
						{
							ACTkSettings.Instance.InjectionDetectorEnabled = true;
						}
						if (GUILayout.Button("Enable In settings..."))
						{
							ACTkSettings.Show();
						}
					}

					EditorGUILayout.Separator();
				}

				return true;
			}

			if (SettingsUtils.IsIL2CPPEnabled())
			{
				EditorGUILayout.HelpBox("Mono Injections are not possible in IL2CPP, this detector is not needed in IL2CPP builds", 
					MessageType.Info, true);

				return true;
			}

			if (!InjectionRoutines.IsTargetPlatformCompatible())
			{
				EditorGUILayout.HelpBox("Injection Detection is only supported in Standalone and Android builds", 
					MessageType.Warning, true); 

				return true;
			}

			return false;
		}
 private static void DidReloadScripts()
 {
     InjectionRoutines.Cleanup();
 }
 private static void PostBuildHook(BuildTarget buildTarget, string pathToBuildProject)
 {
     InjectionRoutines.Cleanup();
 }
Exemplo n.º 7
0
 public void OnPostprocessBuild(BuildReport report)
 {
     InjectionRoutines.Cleanup();
 }
Exemplo n.º 8
0
        private static void OnHierarchyChanged()
        {
            if (!injectionValidated && !ACTkSettings.Instance.DisableInjectionDetectorValidation)
            {
                var instance = InjectionDetector.Instance;
                if (instance != null)
                {
                    if (InjectionRoutines.IsInjectionPossible())
                    {
                        if (!ACTkSettings.Instance.InjectionDetectorEnabled)
                        {
                            var result = EditorUtility.DisplayDialogComplex("Anti-Cheat Toolkit Validation",
                                                                            "ACTk noticed you're using Injection Detector but you have build detection support disabled.\n" +
                                                                            "Injection Detector needs it enabled in order to work properly.\nWould you like to enable it now?",
                                                                            "Yes", "Open Settings", "No, never ask again");

                            if (result == 0)
                            {
                                ACTkSettings.Instance.InjectionDetectorEnabled = true;
                            }
                            else if (result == 1)
                            {
                                ACTkSettings.Show();
                                return;
                            }
                            else
                            {
                                ACTkSettings.Instance.DisableInjectionDetectorValidation = true;
                            }
                        }
                    }
                }
                injectionValidated = true;
            }

            if (!wallhackValidated && !ACTkSettings.Instance.DisableWallhackDetectorValidation)
            {
                var instance = WallHackDetector.Instance;
                if (instance != null && instance.CheckWireframe)
                {
                    if (!SettingsGUI.IsWallhackDetectorShaderIncluded())
                    {
                        var result = EditorUtility.DisplayDialog("Anti-Cheat Toolkit Validation",
                                                                 "ACTk noticed you're using Wallhack Detector with Wireframe option enabled but you have no required shader added" +
                                                                 " to the Always Included Shaders.\n" +
                                                                 "Would you like to exit Play Mode and open Settings to include it now?",
                                                                 "Yes", "No, never ask again");

                        if (result)
                        {
                            EditorApplication.isPlaying = false;
                            ACTkSettings.Show();
                        }
                        else
                        {
                            ACTkSettings.Instance.DisableWallhackDetectorValidation = true;
                        }
                    }
                }
                wallhackValidated = true;
            }
        }