Arbeiten mit AutoIt (Windows Defender, UAC ...)

  • Hi Leute,
    ich mache gerade wieder einiges mit AutoIt (auf Win11) und frage mich wie ich eigentlich mit den Virenwarnungen (FalsePositives) meiner compileten .exe files von Windows und dem UAC-Prompt (ohne komplett ausschalten zu müssen) umgehen sollte.

    Hatte nix gefunden, gibt es hier Tipps / Anleitung oder ähnliches?

  • Also ich habe damit nur beim Kompilieren Probleme.
    Dafür sind entsprechende Verzeichnisse im Defender ausgeschlossen worden und klappt nun.
    Entsprechend würde ich Verfahren, wenn er auch für die exe Dateien anschlägt, die entsprechenden Verzeichnisse oder (besser) nur die Datei(en) ausnehmen.

    Denn diese einzusenden um sie raus zu bekommen, dauert nicht nur ewig, sondern hält in der Regel auch nur eine gewisse Zeit.

  • ich signiere die exe Files immer beim Compilieren mit einem selbstsignierten Zertifikat und lasse diese danach immer nochmal von Vierenscanner untersuchen.

    Da gab es bisher noch nie wieder Probleme.

    Gruß Marcel

  • Vielen Dank für die Aufnahme und dann komme ich gleich zu meiner ersten Fragen:

    UAC-Prompt ist für die Administratorebene. Erstellen Sie einen Eintrag im TaskScheduler, um Ihr Skript mit erhöhten Zugriffsrechten auszuführen.

    Wie muss ich so eine Geplante Aufgabe erstellen und konfigurieren?

    ich signiere die exe Files immer beim Compilieren mit einem selbstsignierten Zertifikat

    Kannst Du mit wenigen Worten beschreiben, wie man dabei vorgeht?

  • Hallo!

    Das leidige Thema mit dem MS-Virenscanner der alles was nicht von der MS kommt als "böse" einstuft....

    Mit einer Codesigner-Zertifikat kann man sich zur Zeit behelfen. Das Tool zum Signieren funktioniert auch noch unter Windows 11 (getestet unter 24H2)....
    Die Daten sollten hier sein: RE: Exe digital Signieren

    Zip entpacken, Batchjob anpassen (ja, ist nicht meine beste Arbeit ?(), Entweder man besorgt sich ein "echtes" Zeritifkat oder wenn man es nur für sich benötigt, geht das auch mit einen selbstausgestellten (XCA-Portable oder so)

    lg
    Racer

  • selbstsigniertes Zertifikat erstellen

    Schritt 1: PowerShell öffnen

    Klicke auf das Startmenü, tippe „PowerShell“ ein, mache einen Rechtsklick und wähle „Als Administrator ausführen“.

    Schritt 2: Selbstsigniertes Zertifikat erstellen

    Gib in das PowerShell-Fenster folgenden Befehl ein:

    New-SelfSignedCertificate -DnsName "http://www.domain.de" -Type CodeSigning -Subject "CN=AutoIt-domain.de" -CertStoreLocation Cert:\CurrentUser\My -NotAfter (Get-Date).AddYears(5)

    Dieser Befehl erstellt ein Zertifikat mit dem Namen "MeinAutoItZertifikat", das 5 Jahre gültig ist.

    Schritt 3: Zertifikat exportieren

    Um dein Zertifikat zu signieren, musst du es exportieren, inklusive privatem Schlüssel:

    $cert = Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object { $_.Subject -eq "CN=AutoIt-erf24.de" }
    $pwd = ConvertTo-SecureString -String "passwort" -Force -AsPlainText
    Export-PfxCertificate -Cert $cert -FilePath "d:\AutoIt-domain.de.pfx" -Password $pwd

    Ersetze
    "MeinSicheresPasswort"
    durch ein sicheres Passwort deiner Wahl.
    Das Zertifikat wird auf deinem Desktop gespeichert.

    Schritt 4: Zertifikat in Windows installieren (optional)

    Wenn du möchtest, kannst du das Zertifikat auch in den Zertifikatsspeicher importieren, um es als vertrauenswürdig zu markieren:

    Doppelklicke auf die
    .pfx
    -Datei auf deinem Desktop.
    Folge den Anweisungen, um das Zertifikat zu installieren.
    Wähle „Alle Zertifikate in folgendem Speicher anzeigen“ und setze es auf „Vertrauenswürdige Stammzertifizierungsstellen“.

    Schritt 5: Skript signieren

    Mit signtool.exe (Teil des Windows SDK) kannst du dein Skript jetzt signieren:

    signtool sign /f "Pfad\zu\Deinem\Zertifikat.pfx" /p "DeinPasswort" /tr http://timestamp.digicert.com /td sha256 /fd sha256 "Pfad\zu\Deinem\Skript.exe"

    Ersetze die Pfade und Passwörter entsprechend.

    In AutoIT dann folgen Code in die Zeile 1 (Pfad zum signtool muss ggf. angepasst werden.
    #AutoIt3Wrapper_Run_After=""%ProgramFiles(x86)%\Windows Kits\10\bin\10.0.26100.0\x86\signtool.exe" sign /f "D:\autoitde-doamain.pfx" /p "kennwort" /tr http://timestamp.digicert.com/scripts/timestamp.dll /td SHA256 /fd SHA256 /a "%out%""

    Gruß Marcel

  • Hi there!

    You are definitely not alone in this struggle; this is essentially the "final boss" of using AutoIt in a modern environment. Since Windows 10, and even more so with Windows 11, Microsoft has become incredibly aggressive with their heuristics.

    Regarding the Windows Defender false positives, one specific point you mentioned was dealing with compiled .exe files. Often, the issue isn't your code itself, but the UPX compression that AutoIt uses by default when compiling. Defender sees a compressed executable and immediately gets suspicious because malware authors use similar packing techniques to hide their code.

    Here is a workflow that has worked for me:

    • Disable UPX: When you compile (using the full Compile with Options tool), uncheck the box for UPX compression. The file size will be slightly larger, but it often stops Defender from flagging it immediately.
    • Self-Signing: If you are using these tools internally, you can create a self-signed certificate and sign your .exe. It’s a bit of a process to set up initially, but once you trust that certificate on your local machine, the warnings usually disappear.
    • The "Task Scheduler" Trick for UAC: You mentioned you don't want to disable UAC (which is good, don't do that!). The best way to bypass the prompt for a specific script you run often is to set it up in Windows Task Scheduler. Create a task that runs your .exe, check the box "Run with highest privileges," and then create a shortcut on your desktop that triggers the task (schtasks /run /tn "MyTaskName"). This allows you to launch it as Admin without the screen dimming and asking for permission every time.

    I actually ran into this exact scenario last week during a home lab upgrade. I was writing a quick automation script to monitor the link status and toggle settings on a new hardware addition. I had installed a Network Devices Expansion Module 1 Port card into my server to create a dedicated direct-link for backups.

    I wanted my AutoIt script to automatically reset the adapter on that specific 1-port module if the throughput dropped below a certain threshold. Because the script was interacting with the network stack and hardware drivers, Windows 11 treated it like a major security threat. The UAC was relentless because of the admin requirement to reset the adapter, and Defender hated it because it was an unsigned .exe poking around hardware drivers.

    Switching to the Task Scheduler method for the UAC bypass and unchecking UPX solved about 90% of the headaches for me.

    Have you tried compiling the script as x64 specifically? sometimes I find that switching the architecture from x86 to x64 (or vice versa) changes the hash enough to bypass a specific Defender definition update.

    Good luck!

  • Thanks jalah93190 for your worthy input at this topic.

    I think your statement and example is helpful for members here, but please keep in mind (next time): this is the german forum. So please write your posts in german (translate it with AI or use known translator services out there).

    Thank you 🤝 .

    Best regards
    Sven