Skip to content

Commit db1f2e0

Browse files
authored
Merge pull request #1005 from Oliver-1-1/master
Blocking injtected keyboard inputs.
2 parents be08734 + 36f909e commit db1f2e0

4 files changed

Lines changed: 14 additions & 1 deletion

File tree

SafeExamBrowser.Monitoring/Keyboard/KeyboardInterceptor.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ private bool KeyboardHookCallback(int keyCode, KeyModifier modifier, KeyState st
7777
block |= modifier.HasFlag(KeyModifier.Ctrl) && key == Key.V && !settings.AllowCtrlV;
7878
block |= modifier.HasFlag(KeyModifier.Ctrl) && key == Key.X && !settings.AllowCtrlX;
7979

80+
block |= modifier.HasFlag(KeyModifier.Injected);
81+
8082
if (block)
8183
{
8284
Log(key, keyCode, modifier, state);

SafeExamBrowser.WindowsApi.Contracts/Events/KeyModifier.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public enum KeyModifier
1818
{
1919
None = 0,
2020
Alt = 0b1,
21-
Ctrl = 0b10
21+
Ctrl = 0b10,
22+
Injected = 0b100
2223
}
2324
}

SafeExamBrowser.WindowsApi/Hooks/KeyboardHook.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ private KeyModifier GetModifiers(KBDLLHOOKSTRUCT keyData, int wParam)
9696
modifier |= KeyModifier.Ctrl;
9797
}
9898

99+
if(keyData.Flags.HasFlag(KBDLLHOOKSTRUCTFlags.LLKHF_INJECTED) || keyData.Flags.HasFlag(KBDLLHOOKSTRUCTFlags.LLKHF_LOWER_IL_INJECTED))
100+
{
101+
modifier |= KeyModifier.Injected;
102+
}
103+
99104
return modifier;
100105
}
101106

SafeExamBrowser.WindowsApi/Types/KBDLLHOOKSTRUCTFlags.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,11 @@ internal enum KBDLLHOOKSTRUCTFlags
1818
/// </summary>
1919
LLKHF_EXTENDED = 0x01,
2020

21+
/// <summary>
22+
/// Test the event-injected (from a process running at lower integrity leve) flag.
23+
/// </summary>
24+
LLKHF_LOWER_IL_INJECTED = 0x02,
25+
2126
/// <summary>
2227
/// Test the event-injected (from any process) flag.
2328
/// </summary>

0 commit comments

Comments
 (0)