AutoIt Skript 32bit oder 64bit

  • Hi,
    wie ihr teilweise schon bemerkt habt, habe ich schon 3 Themen aufgemacht, wo ich Probleme habe, 32bit-Skripte als 64bit-Skripte laufen zu lassen.

    Prinzipiell habe ich meine Skripte auch als 32bit-Verision am laufen. Wenn es zu Problemen mit der 32bit-Version kommt und es mit der 64bit-Version läuft, nehme ich die 64bit Version.
    Wahrscheinlich sind dies für euch keine Probleme, sondern es sind nur kleine Änderungen am Skript notwendig um auch mit 32bit zu laufen.

    Der Grund warum ist jetzt alles auf 64bit umstellen wollte, war mein Virenscanner.
    Ich nutze schon jahrelang Norton. Bis jetzt lief es gut.;)
    Seit der neuen Version habe ich jedoch das Problem, dass z. B. 2 32bit-Programme als Virus erkannt wurden. UPX verwende ich übrigens nicht.
    Dann habe ich dies als 64bit kompiliert und seltsamerweise war es dann kein Virus mehr. Warum, keine Ahnung:Glaskugel:.

    Jetzt habe ich zufällig festgestellt, dass es auch mit dem hinzugefügten Programm-Icon zusammenhängt.
    Wenn ich das Icon ersetze funktioniert es auch als 32bit-Version.

    Alles sehr seltsam.

    Wie steht ihr zu diesem Thema:Glaskugel:?

  • Dann habe ich dies als 64bit kompiliert und seltsamerweise war es dann kein Virus mehr. Warum, keine Ahnung.

    Wenn man ein Skript "kompiliert", dann wird ja der komplette Interpreter eingebunden. Bei 32-Bit wäre das
    die AutoIt3.exe - bei 64-Bit hingegen die AutoIt3_x64.exe. Da der Interpreter, insbesondere bei kürzeren Skripten, den Großteil des Kompilates ausmacht, sind diese weitgehend identisch. Ich vermute mal, dass die AutoIt3_x64.exe von den Virenscannern seltener als Gefahr eingestuft wird (weil seltener für Bots etc. verwendet).

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Moin,

    wenn eine 32-Bit-Anwendung auf einem 64-Bit-Windows laufen soll, stellt das System dieser Anwendung eine spezielle 32-Bit-Umgebung zur Verfügung. Das nennt sich WOW (Windows on Windows). Dabei kann natürlich immer mal etwas schief laufen. Ich würde deshalb prinzipiell auf einem 64-Bit-System AutoIt64 benutzen, soweit es möglich ist.

    Es gibt allerdings einige Kommunikationsprobleme zwischen 32- und 64-Bit-Anwendungen. Wenn man 32-Bit-Anwendungen nutzt, die man mit AutoIt steuern will, kann das mit AutoIt32 leichter sein.

  • Musashi,

    über das Problem mit Virenscannern stolpert man mit Autoit ja öfters. Du sprichst von einbinden des Interpreters als Autoit3.exe. Läßt sich die eingebundene Interpreter Datei nicht ev. umbenennen um die Scanner irrezuleiten? Nein ich frage Nicht weil ich Viren in den Umlauf bringen will :)

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Frei nach Albert Einstein)

  • Der Interpreter hat doch keinen Dateinamen mehr, wenn er in der exe-Datei eingebunden wird.

    Virenscanner merken sich bestimmte Bytefolgen bereits auffällig gewordener Dateien.

    Sagen wir z.B. die ersten 100 Byte (in der Praxis beliebig flexibler mit Lücken usw). Wenn er eine Datei vorgesetzt bekommt zum Scannen und die ersten 100 Byte dieser Datei auf seiner Blacklist stehen, dann schlägt er an.

    "Kompilierte" AutoIt-exe Dateien sind nichts weiter als der Interpreter sowie der Quellcode dahinter angefügt. Der Interpreter ist selbst schon eine ausführbare Datei im PE-Format und weiß, dass sie in diesem Modus nach dem auszuführenden Quellcode am Ende seiner eigenen Datei suchen muss.

    Mehr ist es nicht und daher hat jede "kompilierte" AutoIt-exe die gleiche PE-Signatur, was es für Virenscanner die nur auf den Anfang der Datei schauen nahezu unmöglich macht diese auseinander zu halten.

  • Du sprichst von Einbinden des Interpreters als Autoit3.exe. Läßt sich die eingebundene Interpreter Datei nicht ev. umbenennen um die Scanner irrezuleiten? Nein ich frage nicht weil ich Viren in den Umlauf bringen will :)

    Nein, das Umbenennen wäre völlig zwecklos. Eine kompilierte .exe besteht aus :

    • dem eingebundenen Interpreter (AutoIt3.exe / AutoIt3_x64.exe) gemäß der Direktive #AutoIt3Wrapper_UseX64 (Default = N)
    • dem Skript selbst, sowie der mit #Include eingebundenen Dateien (als tokenized .a3x)
    • [optional] dem Quellcode, falls die Direktive #AutoIt3Wrapper_Res_SaveSource = Y (Default=N) gesetzt wird
    • [optional] ein eingebundenes Icon und/oder mit FileInstall eingebundene Dateien

    Offenbar wird die Bytefolge der 64-Bit Interpretervariante von Virenscannern seltener als auffällig bewertet.

    AspirinJunkie hat den Ablauf ja bereits anschaulich beschrieben.

    Dass das Einbinden eines anderen Icon (wie von Tweaky beschrieben) zum Erfolg geführt hat ist, meiner Meinung nach, reiner Zufall. Das kann beim nächsten Update der AV-Software schon wieder ganz anders sein.

    Sofern man Zugriff auf den Zielrechner hat, wäre die Erstellung einer Ausnahmeregel innerhalb des Virenscanners, d.h. die Prüfung für relevante Verzeichnisse zu deaktivieren , die beste Lösung.

    Falls nicht, dann empfehle ich :

    Skripte im Format .a3x zu kompilieren und den Interpreter (also die AutoIt3.exe / AutoIt3_x64.exe) separat mitzuliefern. Lizenzrechtlich ist das seitens AutoIt zulässig. Der Start erfolgt dann über eine. cmd, eine Verknüpfung oder aus einem anderen Programm heraus. Hier muss man allerdings selbst dafür sorgen mit welchem Interpreter die .a3x gestartet wird. Die Direktive #AutoIt3Wrapper_UseX64 innerhalb des Skiptes wird nicht berücksichtigt.

    Alternativ kann man natürlich auch eine 'false positive' Meldung an die AV-Hersteller senden. Das ist aber recht nervig, zumal jede Änderung ggf. erneut eingereicht werden muss.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • ISN geht mit seinem autoit Studio den Weg, dass er eine Visual Basic exe erstellt, diese startet dann die autoit.exe mit der entsprechenden a3x Datei.

    Damit sind Virenerkennungen nahezu ausgeschlossen solange das Vb script nicht uncompiliert veröffentlicht wird. ich hatte das mal mit hash Prüfung gebastelt, damit die a3x nicht beliebig ersetzt werden kann.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    keine Werbung: Wenn sie ihre Texte in eine andere Sprache übersetzen möchten, kann ich nur deepl.com empfehlen. Ich bin mit den Übersetzungen sehr zufrieden.

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ausführbares Script ("as is"), dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

    Man möge mir verzeihen, wenn ich nicht perfekten und ideal lesbaren Code zur Verfügung stelle.
    Ich möchte Hilfe zur Selbsthilfe leisten und denke dass eine gewisse Transferleistung erwartet werden kann.

  • ISN geht mit seinem autoit Studio den Weg, dass er eine Visual Basic exe erstellt, diese startet dann die autoit.exe mit der entsprechenden a3x Datei.

    Damit sind Virenerkennungen nahezu ausgeschlossen solange das Vb script nicht uncompiliert veröffentlicht wird. ich hatte das mal mit hash Prüfung gebastelt, damit die a3x nicht beliebig ersetzt werden kann.

    Das ist wirklich eine super Lösung für das Problem. Damit habe ich seit Jahren keine Probleme mit Virenscannern gehabt - weder bei mir, noch bei Leuten, an die ich Skripte verteilt habe.

    Grüße autoiter

  • Da sollte man an die Entwickler den Wunsch äußern eine individuelle Verfremdung dieser "Signatur" zu ermöglichen. Man bindet sinnlosen Text an beliebiger Stelle beim Compilie ein?


    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Frei nach Albert Einstein)

  • Da sollte man an die Entwickler den Wunsch äußern eine individuelle Verfremdung dieser "Signatur" zu ermöglichen. Man bindet sinnlosen Text an beliebiger Stelle beim Compilie ein?

    Die Möglichkeit einzubauen den Code "individuell zu verfremden" halte ich für wenig zielführend. Wesentliche Bytefolgen des Interpreters müssen identisch bleiben, damit er überhaupt funktioniert. Am Ende hätte man 'zig unterschiedliche Interpretervarianten was die 'false positive' Situation eher noch verschlimmert.

    Die Interpreter selbst ( AutoIt3.exe/AutoIt3_x64.exe) werden, sofern man sie separat (stand-alone) mitliefert , von den meisten AV-Programmen ja akzeptiert.

    Sinnlosen Text einzubinden ist auch keine zuverlässige Lösung. Ich habe vor geraumer Zeit mal zum Spaß eine 100 MB Videodatei per FileInstall eingebunden. Damit wäre der Anteil des Interpreters nur 1% des gesamten Codes. Trotzdem kam es bei der 32-Bit .exe zu Virusmeldungen.

    Der Start einer .a3x durch Aufruf über den Interpreter, sei es mittels einer .cmd , einer Verküpfung oder einer externen .exe (siehe Beitrag von mir, Schnuffel und autoiter ) ist der beste Weg.

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."