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.
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?
AutoIt Skript 32bit oder 64bit
-
Tweaky -
4. Januar 2025 um 15:07 -
Unerledigt
-
-
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). -
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.
-
ü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
-
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.
-
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.
-
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.
-
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
-
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.