Integrated logging
This commit is contained in:
		
							parent
							
								
									511d371dba
								
							
						
					
					
						commit
						b2e2d340b7
					
				
					 8 changed files with 84 additions and 10 deletions
				
			
		|  | @ -45,3 +45,5 @@ MonoMod API documentation: [https://monomod.github.io/api/index.html](https://mo | ||||||
| MonoMod step-by-step example implementation: [https://github.com/TROYTRON/ti-mods/blob/main/tutorials/MonoMod%20Guide.md](https://github.com/TROYTRON/ti-mods/blob/main/tutorials/MonoMod%20Guide.md) | MonoMod step-by-step example implementation: [https://github.com/TROYTRON/ti-mods/blob/main/tutorials/MonoMod%20Guide.md](https://github.com/TROYTRON/ti-mods/blob/main/tutorials/MonoMod%20Guide.md) | ||||||
| 
 | 
 | ||||||
| dnSpy decomp/analysis tool: [https://github.com/dnSpyEx/dnSpy](https://github.com/dnSpyEx/dnSpy) | dnSpy decomp/analysis tool: [https://github.com/dnSpyEx/dnSpy](https://github.com/dnSpyEx/dnSpy) | ||||||
|  | 
 | ||||||
|  | sandbox for testing modifications (if you cant host a seb server): [https://sandbox.moodledemo.net](https://sandbox.moodledemo.net) | ||||||
|  |  | ||||||
|  | @ -72,5 +72,11 @@ | ||||||
|     <Compile Include="Properties\AssemblyInfo.cs" /> |     <Compile Include="Properties\AssemblyInfo.cs" /> | ||||||
|     <Compile Include="patch_IntegrityModule.cs" /> |     <Compile Include="patch_IntegrityModule.cs" /> | ||||||
|   </ItemGroup> |   </ItemGroup> | ||||||
|  |   <ItemGroup> | ||||||
|  |     <ProjectReference Include="..\SEBPatcherUtils\SEBPatcherUtils.csproj"> | ||||||
|  |       <Project>{82F861DC-D8C7-46F9-AA60-B67CF43712D5}</Project> | ||||||
|  |       <Name>SEBPatcherUtils</Name> | ||||||
|  |     </ProjectReference> | ||||||
|  |   </ItemGroup> | ||||||
|   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> |   <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> | ||||||
| </Project> | </Project> | ||||||
|  | @ -1,11 +1,20 @@ | ||||||
| using System; | using System; | ||||||
| using MonoMod; | using MonoMod; | ||||||
|  | using SEBPatcherUtils; | ||||||
| 
 | 
 | ||||||
| namespace SafeExamBrowser.Configuration.Integrity | namespace SafeExamBrowser.Configuration.Integrity | ||||||
| { | { | ||||||
|     public class patch_IntegrityModule : IntegrityModule |     public class patch_IntegrityModule : IntegrityModule | ||||||
|     { |     { | ||||||
|  |         public PatchLogger patchlogger; | ||||||
|  | 
 | ||||||
|         [MonoModIgnore] public patch_IntegrityModule(Configuration.Contracts.AppConfig appConfig, SafeExamBrowser.Logging.Contracts.ILogger logger) : base(appConfig, logger) { } |         [MonoModIgnore] public patch_IntegrityModule(Configuration.Contracts.AppConfig appConfig, SafeExamBrowser.Logging.Contracts.ILogger logger) : base(appConfig, logger) { } | ||||||
|  |         [MonoModOriginal] public extern void orig_IntegityModule(Configuration.Contracts.AppConfig appConfig, SafeExamBrowser.Logging.Contracts.ILogger logger); | ||||||
|  |         [MonoModConstructor] public void IntegrityModule(Configuration.Contracts.AppConfig appConfig, SafeExamBrowser.Logging.Contracts.ILogger logger) | ||||||
|  |         { | ||||||
|  |             orig_IntegityModule(appConfig, logger); | ||||||
|  |             patchlogger = new PatchLogger("Configuration.Integrity"); | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
|         [MonoModOriginal] public extern bool orig_TryVerifyCodeSignature(out bool isValid); |         [MonoModOriginal] public extern bool orig_TryVerifyCodeSignature(out bool isValid); | ||||||
| #pragma warning disable CS0108 // Member hides inherited member; missing new keyword | #pragma warning disable CS0108 // Member hides inherited member; missing new keyword | ||||||
|  | @ -13,6 +22,9 @@ namespace SafeExamBrowser.Configuration.Integrity | ||||||
| #pragma warning restore CS0108 // Member hides inherited member; missing new keyword | #pragma warning restore CS0108 // Member hides inherited member; missing new keyword | ||||||
|         { |         { | ||||||
|             bool result = orig_TryVerifyCodeSignature(out isValid); |             bool result = orig_TryVerifyCodeSignature(out isValid); | ||||||
|  | 
 | ||||||
|  |             patchlogger.Info($"SEB integrity check result: {result}"); | ||||||
|  | 
 | ||||||
|             isValid = true; |             isValid = true; | ||||||
|             return true; |             return true; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| using System; | using MonoMod; | ||||||
| using MonoMod; | using SEBPatcherUtils; | ||||||
| using SafeExamBrowser.Logging.Contracts; | using SafeExamBrowser.Logging.Contracts; | ||||||
| using SafeExamBrowser.SystemComponents.Contracts; | using SafeExamBrowser.SystemComponents.Contracts; | ||||||
| using SafeExamBrowser.Monitoring.Contracts.Display; | using SafeExamBrowser.Monitoring.Contracts.Display; | ||||||
|  | @ -12,7 +12,15 @@ namespace SafeExamBrowser.Monitoring.Display | ||||||
|     public class patch_DisplayMonitor : DisplayMonitor |     public class patch_DisplayMonitor : DisplayMonitor | ||||||
| #pragma warning restore IDE1006 // Naming Styles | #pragma warning restore IDE1006 // Naming Styles | ||||||
|     { |     { | ||||||
|  |         public PatchLogger patchlogger; | ||||||
|  | 
 | ||||||
|         [MonoModIgnore] public patch_DisplayMonitor(ILogger logger, INativeMethods nativeMethods, ISystemInfo systemInfo) : base(logger, nativeMethods, systemInfo) { } |         [MonoModIgnore] public patch_DisplayMonitor(ILogger logger, INativeMethods nativeMethods, ISystemInfo systemInfo) : base(logger, nativeMethods, systemInfo) { } | ||||||
|  |         [MonoModOriginal] public extern void orig_DisplayMonitor(ILogger logger, INativeMethods nativeMethods, ISystemInfo systemInfo); | ||||||
|  |         [MonoModConstructor] public void DisplayMonitor(ILogger logger, INativeMethods nativeMethods, ISystemInfo systemInfo) | ||||||
|  |         { | ||||||
|  |             orig_DisplayMonitor(logger, nativeMethods, systemInfo); | ||||||
|  |             patchlogger = new PatchLogger("Monitoring.Display.DisplayMonitor"); | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
| #pragma warning disable IDE1006 // Naming Styles | #pragma warning disable IDE1006 // Naming Styles | ||||||
|         [MonoModOriginal] public extern ValidationResult orig_ValidateConfiguration(DisplaySettings settings); |         [MonoModOriginal] public extern ValidationResult orig_ValidateConfiguration(DisplaySettings settings); | ||||||
|  | @ -23,6 +31,8 @@ namespace SafeExamBrowser.Monitoring.Display | ||||||
|         { |         { | ||||||
|             ValidationResult result = orig_ValidateConfiguration(settings); |             ValidationResult result = orig_ValidateConfiguration(settings); | ||||||
| 
 | 
 | ||||||
|  |             patchlogger.Info($"SEB display validation result: {result}"); | ||||||
|  | 
 | ||||||
|             return new ValidationResult |             return new ValidationResult | ||||||
|             { |             { | ||||||
|                 ExternalDisplays = 0, |                 ExternalDisplays = 0, | ||||||
|  |  | ||||||
|  | @ -1,4 +1,5 @@ | ||||||
| using MonoMod; | using MonoMod; | ||||||
|  | using SEBPatcherUtils; | ||||||
| using SafeExamBrowser.Logging.Contracts; | using SafeExamBrowser.Logging.Contracts; | ||||||
| 
 | 
 | ||||||
| namespace SafeExamBrowser.Monitoring | namespace SafeExamBrowser.Monitoring | ||||||
|  | @ -7,7 +8,15 @@ namespace SafeExamBrowser.Monitoring | ||||||
|     public class patch_Clipboard : Clipboard |     public class patch_Clipboard : Clipboard | ||||||
| #pragma warning restore IDE1006 // Naming Styles | #pragma warning restore IDE1006 // Naming Styles | ||||||
|     { |     { | ||||||
|  |         public PatchLogger patchlogger; | ||||||
|  | 
 | ||||||
|         [MonoModIgnore] public patch_Clipboard(ILogger logger, SafeExamBrowser.WindowsApi.Contracts.INativeMethods nativeMethods, int timeout_ms = 50) : base(logger, nativeMethods, timeout_ms) { } |         [MonoModIgnore] public patch_Clipboard(ILogger logger, SafeExamBrowser.WindowsApi.Contracts.INativeMethods nativeMethods, int timeout_ms = 50) : base(logger, nativeMethods, timeout_ms) { } | ||||||
|  |         [MonoModOriginal] public extern void orig_Clipboard(ILogger logger, SafeExamBrowser.WindowsApi.Contracts.INativeMethods nativeMethods, int timeout_ms = 50); | ||||||
|  |         [MonoModConstructor] public void Clipboard(ILogger logger, SafeExamBrowser.WindowsApi.Contracts.INativeMethods nativeMethods, int timeout_ms = 50) | ||||||
|  |         { | ||||||
|  |             orig_Clipboard(logger, nativeMethods, timeout_ms); | ||||||
|  |             patchlogger = new PatchLogger("Monitoring.Clipboard"); | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
| #pragma warning disable IDE0044 // Add readonly modifier | #pragma warning disable IDE0044 // Add readonly modifier | ||||||
|         [MonoModIgnore] private ILogger logger; |         [MonoModIgnore] private ILogger logger; | ||||||
|  | @ -18,6 +27,7 @@ namespace SafeExamBrowser.Monitoring | ||||||
| #pragma warning restore CS0108 // Member hides inherited member; missing new keyword | #pragma warning restore CS0108 // Member hides inherited member; missing new keyword | ||||||
|         { |         { | ||||||
|             this.logger.Info(string.Format("Initialized clipboard for policy '{0}'.", policy)); |             this.logger.Info(string.Format("Initialized clipboard for policy '{0}'.", policy)); | ||||||
|  |             patchlogger.Info($"SEB wants clipboard policy {policy} (won't get it though!)"); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| #pragma warning disable CS0108 // Member hides inherited member; missing new keyword | #pragma warning disable CS0108 // Member hides inherited member; missing new keyword | ||||||
|  | @ -25,6 +35,7 @@ namespace SafeExamBrowser.Monitoring | ||||||
| #pragma warning restore CS0108 // Member hides inherited member; missing new keyword | #pragma warning restore CS0108 // Member hides inherited member; missing new keyword | ||||||
|         { |         { | ||||||
|             this.logger.Info("Finalized clipboard"); |             this.logger.Info("Finalized clipboard"); | ||||||
|  |             patchlogger.Info("Clipboard monitoring 'terminated' (didn't even exist in the first place ;D)"); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| using System; | using MonoMod; | ||||||
| using MonoMod; | using SEBPatcherUtils; | ||||||
| using SafeExamBrowser.Logging.Contracts; | using SafeExamBrowser.Logging.Contracts; | ||||||
| 
 | 
 | ||||||
| namespace SafeExamBrowser.Monitoring | namespace SafeExamBrowser.Monitoring | ||||||
|  | @ -8,7 +8,17 @@ namespace SafeExamBrowser.Monitoring | ||||||
|     public class patch_RemoteSessionDetector : RemoteSessionDetector |     public class patch_RemoteSessionDetector : RemoteSessionDetector | ||||||
| #pragma warning restore IDE1006 // Naming Styles | #pragma warning restore IDE1006 // Naming Styles | ||||||
|     { |     { | ||||||
|  |         public PatchLogger patchlogger; | ||||||
|  | 
 | ||||||
|         [MonoModIgnore] public patch_RemoteSessionDetector(ILogger logger) : base(logger) { } |         [MonoModIgnore] public patch_RemoteSessionDetector(ILogger logger) : base(logger) { } | ||||||
|  | #pragma warning disable IDE1006 // Naming Styles | ||||||
|  |         [MonoModOriginal] public extern void orig_RemoteSessionDetector(ILogger logger); | ||||||
|  | #pragma warning restore IDE1006 // Naming Styles | ||||||
|  |         [MonoModConstructor] public void RemoteSessionDetector(ILogger logger) | ||||||
|  |         { | ||||||
|  |             orig_RemoteSessionDetector(logger); | ||||||
|  |             patchlogger = new PatchLogger("Monitoring.RemoteSessionDetector"); | ||||||
|  |         } | ||||||
| 
 | 
 | ||||||
| #pragma warning disable IDE1006 // Naming Styles | #pragma warning disable IDE1006 // Naming Styles | ||||||
|         [MonoModOriginal] public extern bool orig_IsRemoteSession(); |         [MonoModOriginal] public extern bool orig_IsRemoteSession(); | ||||||
|  | @ -19,6 +29,15 @@ namespace SafeExamBrowser.Monitoring | ||||||
|         { |         { | ||||||
|             bool isRemoteSession = orig_IsRemoteSession(); |             bool isRemoteSession = orig_IsRemoteSession(); | ||||||
| 
 | 
 | ||||||
|  |             if (isRemoteSession) | ||||||
|  |             { | ||||||
|  |                 patchlogger.Info("SEB detected remote session on host! (will be ignored, ofcourse ;D)"); | ||||||
|  |             } | ||||||
|  |             else | ||||||
|  |             { | ||||||
|  |                 patchlogger.Info("SEB did not detect remote session on host"); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|             return false; |             return false; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -10,11 +10,16 @@ namespace SafeExamBrowser.Monitoring | ||||||
|     public class patch_VirtualMachineDetector : VirtualMachineDetector |     public class patch_VirtualMachineDetector : VirtualMachineDetector | ||||||
| #pragma warning restore IDE1006 // Naming Styles | #pragma warning restore IDE1006 // Naming Styles | ||||||
|     { |     { | ||||||
|  |         public PatchLogger patchlogger; | ||||||
|  | 
 | ||||||
|         [MonoModIgnore] public patch_VirtualMachineDetector(ILogger logger, IRegistry registry, ISystemInfo systemInfo) : base(logger, registry, systemInfo) { } |         [MonoModIgnore] public patch_VirtualMachineDetector(ILogger logger, IRegistry registry, ISystemInfo systemInfo) : base(logger, registry, systemInfo) { } | ||||||
|         [MonoModOriginal] public extern void orig_VirtualMachineDetector(); | #pragma warning disable IDE1006 // Naming Styles | ||||||
|         [MonoModConstructor] public void VirtualMachineDetector() |         [MonoModOriginal] public extern void orig_VirtualMachineDetector(ILogger logger, IRegistry registry, ISystemInfo systemInfo); | ||||||
|  | #pragma warning restore IDE1006 // Naming Styles | ||||||
|  |         [MonoModConstructor] public void VirtualMachineDetector(ILogger logger, IRegistry registry, ISystemInfo systemInfo) | ||||||
|         { |         { | ||||||
|             orig_VirtualMachineDetector(); |             orig_VirtualMachineDetector(logger, registry, systemInfo); | ||||||
|  |             patchlogger = new PatchLogger("MonitoringVirtualMachineDetector"); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| #pragma warning disable IDE1006 // Naming Styles | #pragma warning disable IDE1006 // Naming Styles | ||||||
|  | @ -26,6 +31,15 @@ namespace SafeExamBrowser.Monitoring | ||||||
|         { |         { | ||||||
|             bool isVirtualMachine = orig_IsVirtualMachine(); |             bool isVirtualMachine = orig_IsVirtualMachine(); | ||||||
| 
 | 
 | ||||||
|  |             if (isVirtualMachine) | ||||||
|  |             { | ||||||
|  |                 patchlogger.Info("SEB detected host as virtual machine! (will be ignored, ofcourse ;D)"); | ||||||
|  |             } | ||||||
|  |             else | ||||||
|  |             { | ||||||
|  |                 patchlogger.Info("SEB did not detect host as virtual machine."); | ||||||
|  |             } | ||||||
|  | 
 | ||||||
|             return false;  |             return false;  | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -8,9 +8,9 @@ namespace SEBPatcherUtils | ||||||
|         private readonly string _logFilePath; |         private readonly string _logFilePath; | ||||||
|         private readonly string _logModule; |         private readonly string _logModule; | ||||||
| 
 | 
 | ||||||
|         public PatchLogger(string logModule, string logFilePath) |         public PatchLogger(string logModule) | ||||||
|         { |         { | ||||||
|             _logFilePath = logFilePath; |             _logFilePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "SafeExamBrowser", "SEBPatcher.log"); | ||||||
|             _logModule = logModule; |             _logModule = logModule; | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|  | @ -40,7 +40,7 @@ namespace SEBPatcherUtils | ||||||
|             Log(message, "DEBUG"); |             Log(message, "DEBUG"); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         public void AppendToFile(string logEntry) |         private void AppendToFile(string logEntry) | ||||||
|         { |         { | ||||||
|             try |             try | ||||||
|             { |             { | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 zervo
						zervo