I'm trying to convert this piece of C++ code into Java code via JNA:
PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY signaturePolicy = {};
signaturePolicy.MicrosoftSignedOnly = true;
SetProcessMitigationPolicy(ProcessSignaturePolicy, &signaturePolicy, sizeof(signaturePolicy));
I already have the function SetProcessMitigationPolicy from Kernel32.dll and I'm able to call it, but how to pass such parameters?
Can you please provide an example of it?
UPDATE:
I have tried the following code, but it is still not working. Is the function declaration correct? Apparently, the function returns true and I'm not getting any error.
// Main
private static final Kernel32 kernel32 = Kernel32.INSTANCE;
public static void main(String[] args) {
PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY signaturePolicy = new PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY();
signaturePolicy.MicrosoftSignedOnly = 1;
signaturePolicy.write();
BaseTSD.SIZE_T dwLength = new BaseTSD.SIZE_T(signaturePolicy.size());
boolean success = kernel32.SetProcessMitigationPolicy(8, signaturePolicy.getPointer(), dwLength);
System.out.println("Result: " + success);
while (true);
}
// PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY
@Structure.FieldOrder({"MicrosoftSignedOnly"})
public final class PROCESS_MITIGATION_BINARY_SIGNATURE_POLICY extends Structure {
public int MicrosoftSignedOnly;
}