Environment
- Windows 11 Pro, Build 26200, Smart App Control in enforcement (
VerifiedAndReputablePolicyState=1)
- Unreal Engine 5.7.4
- Monolith v0.22.0 (UE5.7 precompiled binaries), installed under
<project>\Plugins\Monolith
Symptom
On editor launch the whole plugin fails to load and the editor exits with the "Bad Image" dialog error 0xc0e90002. The editor log shows:
[..] Plugin 'Monolith' failed to load because module 'MonolithAudio' could not be loaded.
There may be an operating system error or the module may not be properly set up.
[..] Could not be loaded GetLastError=4551
(MonolithMaterial.dll fails first, then MonolithAudio.dll.)
Likely root cause (confirmed via Windows Event Log)
Microsoft-Windows-CodeIntegrity/Operational recorded the block of
UnrealEditor-MonolithMaterial.dll and UnrealEditor-MonolithAudio.dll at the moment of the
failure, with Smart App Control as the enforcing engine:
- Event ID 3118 — "Smart App Control Block Details"
- Event ID 3077 — "did not meet the Enterprise signing level requirements or violated code integrity policy (Policy ID:{0283ac0f-fff1-49ae-ada1-8a933130cad6})" (enforcement, not audit)
- Event ID 3033 — "did not meet the requirements to pass the App Control policy"
- Event ID 3089 — unsigned (TotalSignatureCount 0)
All 20 shipped DLLs in this release are NotSigned (no Authenticode). Smart App Control
evaluates each binary as it loads and blocks unsigned / unknown code even when it is loaded
by a signed host (UnrealEditor.exe). In this test, only MonolithMaterial.dll and
MonolithAudio.dll produced an observed block; the other 18 DLLs did not produce the same
observed block. The reason for this per-binary difference is not confirmed and is not
attributed to reputation or trust in this report.
Why this is not workaround-able locally
Per Microsoft Support (Smart App Control FAQ):
"There is currently no way to bypass Smart App Control protection for individual apps. You can turn Smart App Control off, or (better yet), contact the developer ... to sign their app with a valid signature."
A locally self-signed certificate is not treated as valid by Smart App Control; only a
signature from a CA in the Microsoft Trusted Root Program (or Microsoft Trusted Signing, RSA)
counts. Turning SAC off is irreversible, which many users (including me) cannot accept.
Request
Could you please consider code-signing the shipped binaries with an EV/OV certificate from
a CA in the Microsoft Trusted Root Program (or Microsoft Trusted Signing)? Alternatively,
please indicate an officially supported solution for users with Smart App Control enabled who
currently cannot load MonolithMaterial/MonolithAudio.
Supporting checksums (verified locally from the official v0.22.0 zip)
UnrealEditor-MonolithMaterial.dll
SHA-256 F9E038D11A9BFE3B13A60141860A5F115FF30FCDB8FEC6C590E90AA109A31FCA
UnrealEditor-MonolithAudio.dll
SHA-256 7413BAD79315CCA57A448381C5739F897D154FC056538D394B2C889A784F3441
Both DLLs are byte-identical to the files inside the official v0.22.0 zip (no local modification).
Related: binaries are shipped unsigned (#38 mentions no code signing). There is no existing
issue about Smart App Control / 0xc0e90002 for the Material/Audio modules.
Environment
VerifiedAndReputablePolicyState=1)<project>\Plugins\MonolithSymptom
On editor launch the whole plugin fails to load and the editor exits with the "Bad Image" dialog error
0xc0e90002. The editor log shows:[..] Plugin 'Monolith' failed to load because module 'MonolithAudio' could not be loaded.
There may be an operating system error or the module may not be properly set up.
[..] Could not be loaded GetLastError=4551
(
MonolithMaterial.dllfails first, thenMonolithAudio.dll.)Likely root cause (confirmed via Windows Event Log)
Microsoft-Windows-CodeIntegrity/Operationalrecorded the block ofUnrealEditor-MonolithMaterial.dllandUnrealEditor-MonolithAudio.dllat the moment of thefailure, with Smart App Control as the enforcing engine:
All 20 shipped DLLs in this release are
NotSigned(no Authenticode). Smart App Controlevaluates each binary as it loads and blocks unsigned / unknown code even when it is loaded
by a signed host (
UnrealEditor.exe). In this test, onlyMonolithMaterial.dllandMonolithAudio.dllproduced an observed block; the other 18 DLLs did not produce the sameobserved block. The reason for this per-binary difference is not confirmed and is not
attributed to reputation or trust in this report.
Why this is not workaround-able locally
Per Microsoft Support (Smart App Control FAQ):
A locally self-signed certificate is not treated as valid by Smart App Control; only a
signature from a CA in the Microsoft Trusted Root Program (or Microsoft Trusted Signing, RSA)
counts. Turning SAC off is irreversible, which many users (including me) cannot accept.
Request
Could you please consider code-signing the shipped binaries with an EV/OV certificate from
a CA in the Microsoft Trusted Root Program (or Microsoft Trusted Signing)? Alternatively,
please indicate an officially supported solution for users with Smart App Control enabled who
currently cannot load
MonolithMaterial/MonolithAudio.Supporting checksums (verified locally from the official v0.22.0 zip)
UnrealEditor-MonolithMaterial.dllSHA-256
F9E038D11A9BFE3B13A60141860A5F115FF30FCDB8FEC6C590E90AA109A31FCAUnrealEditor-MonolithAudio.dllSHA-256
7413BAD79315CCA57A448381C5739F897D154FC056538D394B2C889A784F3441Both DLLs are byte-identical to the files inside the official v0.22.0 zip (no local modification).
Related: binaries are shipped unsigned (#38 mentions no code signing). There is no existing
issue about Smart App Control / 0xc0e90002 for the Material/Audio modules.