Jar in exe wrappen = Malware!

Hallo,

schon mal vorweg, es geht nicht darum wie ich eine jar in eine exe bekomme, sondern eher darum, dass meine *.exe von Virenprogrammen als mögliche Malware identifiziert wird und somit die Ausführung behindert wird. Zur Zeit wrappe ich meine *.jar File mit dem Programm Launch4j. Ich vermute mal, dadurch dass die *.exe nur ein Kontainer für mein *.jar ist, dass der Scanner aus diesem Grund Alarm schlägt.

Kennt Ihr noch andere Programme die das Wrappen übernehmen (bei denen der Alarm nicht ausgelöst wird) bzw. was haltet Ihr von Programmen die eine echte *.exe aus meiner Quelle macht.

Ich danke schon mal im voraus für Antworten

greetz
t_2

was haltet Ihr von Programmen die eine echte *.exe aus meiner Quelle macht.

Nicht viel.
Welche Vorteile erhoffst du dir dadurch? (Starten per Doppelklick geht auch mit einer jar ;))

[QUOTE=EikeB]Nicht viel.
Welche Vorteile erhoffst du dir dadurch? (Starten per Doppelklick geht auch mit einer jar ;))[/QUOTE]

Wahrscheinlich das der Code nicht mehr decompiliert werden kann. Das waere meine einzige Idee dazu.

Mit einem Wrapper kannst du dein Programm nur einhüllen und starten. Es gibt dabei nur einen einzigen Vorteil:
Die Windows-Benutzer bekommen ihre gewohnte Exe-Datei. Nicht mehr und nicht weniger. Man kann das Java-Programm deshalb immer noch auspacken und dekompilieren.

*** Edit ***

Bissl Lektüre, für den, den das interessiert: Java-Programme starten - Möglichkeiten

Mir gehts es nicht darum das man die Datei per Doppelklick starten kann, was ja eh auch mit *.jar Dateien geht wie uns allen bekannt ist.
Ebenso geht es mir nicht um die Decompilierbarkeit meiner Programme, so wertvoll sind meine Programme nicht, das es sich lohnen würde sie in ihren Source Code zu zerlegen.
Mir geht es schlicht und einfach darum, wie L-ectron-X schon bemerkt hat, dass die User eine *.exe Datei als ausführbare Datei eher anerkennen als eine *.jar Datei.
Auch spielt das Icon der Datei eine Rolle, bisher ist mir keine Möglichkeit bekannt der JAR Datei ein Programm Icon mitzugeben. Ausgenommen das Icon das im Frame angezeigt wird.

Wenn es dir nur um das Icon geht, kannst du auch Webstart benutzen, da kann man das auch machen.

Aber dass dein Programm als Malware erkannt wird, liegt erst mal primär an der Antivirus-Software, die kann man eben nicht mal eben überreden ein gewrapptes Java-Programm auszuführen.
Ich kenne Launch4j nicht, aber es sollte möglich sein, dein Programm nicht einzupacken und nur eine Exe-Datei zum Starten zu erzeugen. Jestart von Xenoage macht das zumindest auch so.

Du hast dann also eine Starter-Exe und dein Jar-Archiv auszuliefern. Ist auch für Linux-Benutzer besser.

Ohne dafuer jetzt einen eigenen thread aufzumachen: gibt es einen speziellen grund dafuer das man keine icons auf die jar setzten kann?

Und zum thema: welchen virenblocker hast du denn?

ich habe mal ein Programm in C geschrieben, dass in einigen Ordnern nach einem jar mit gleichem Vornamen sucht und dieses mit der höchsten Javaversion startet, die es in %PROGRAMFILES% finden kann. Das muss ich immer nur umbenennen und mit auslefern. Das Icon in so einer Standard-Exe auszutauschen ist sicher im Buildprozess möglich…

bye
TT

das würde aber Sinn machen

gibt es einen speziellen grund dafuer das man keine icons auf die jar setzten kann?

ja - JAR ist keine (im Sinne von Windows) ausführbare Datei. Es ist einfach nur ein Dateiformat (im genauen Fall einfach ZIP). Und Windows versieht alle Dateien mit dem gleichen Format mit dem gleichen Icon.

Ausser exe; meinst du?
Also waere es eine sache von windows eine funktion einzubauen um die icons aendern zu koennen?

Nix außer exe, auch da werden erst einmal die Standard-Icons für eine exe-Datei genommen, es sei denn dem Programm wurde ein Icon als Ressource zugewiesen bzw. eingefügt.

Jars sind keine Ausführbaren Dateien, es sind simple Archive und mehr nicht. Dass man eine Jar ausführen kann, liegt an der Art wie diese von Java verarbeitet werden. Weder Windows noch sonst ein Betriebssystem hat damit etwas direkt zu tun, denn Jars sind für alle Betriebssysteme nur Archive und werden eben entsprechend behandelt, nämlich als Archiv. Was allerdings in der Regel nach der Installation von Java der Fall ist, ist der Standardaufruf von java.exe bzw. javaw.exe beim Versuch eine Jar-Datei auszuführen, anstatt z.B. einen Archivmanager. Darum sieht es so aus als wären Jars ausführbare Programme, das ist aber nicht der fall.

Dass man nicht-ausführbaren Dateien keine speziellen Icons zuweisen kann, liegt weniger an Windows bzw. seinem Datei-Explorer, das hat soweit ich weiß nämlich kein Betriebssystem anders. Du kannst aber gerne eine Verknüpfung zur Jar erstellen und in der Verknüpfung das Icon ändern. Also im Endeffekt liegt es schon am Betriebssystem, klar, aber wenn man jeder Jar-Datei ein eigenes Icon verpassen können wollte, dann könnte man das auch für alle anderen Dateiformate so machen und das wäre mehr als sinnfrei, z.B. bei Bildern. Für das Betriebssystem ist ein Jar nur ein Archiv, es weiß genau genommen nicht einmal, dass sich darin Class-Dateien befinden, was auch nicht der Fall sein muss, denn da kann alles Mögliche drin rumliegen.

Die neuen X-Formate von Microsoft Office sind übrigens auch nur Zip-Archive und bekommen entsprechend der Endung (docx, xslx, pptx, …) das entsprechende Standard-Icon zugewiesen und werden auch genauso wie bei Jar-Dateien von dem entsprechenden Programm gestartet bzw. an das jeweilige Programm weiter geleitet, nur anstatt Java eben Word, Excel, PowerPoint, etc. Also das gleiche Spiel auch hier :wink:

[QUOTE=mymaksimus]Also waere es eine sache von windows eine funktion einzubauen um die icons aendern zu koennen?[/QUOTE]Ja.

Stell doch mal einen Feature-Request bein Microsoft…:dontwork:

bye
TT

also launch4j ist unter java-entwicklern schon sehr bekannt, spätestens wohl seit minecraft, auch wenn es noch eine vielzahl (teilweise kostenpflichtiger) anderer launcher-tools gibt

warum allerdings deine sicherheitssoftware anspringt liegt wohl eher an dieser selbst … wäre mal interessant welche du nutzt

Erstell doch vielleicht mal einen Launcher mittels launch4j und nicht einen wrapper…

hmm… kann ich denn aus einem java programm heraus eine verknüpfung auf dem desktop anlegen? :slight_smile:

[QUOTE=mymaksimus]hmm… kann ich denn aus einem java programm heraus eine verknüpfung auf dem desktop anlegen? :)[/QUOTE]Sicher,
nur warum willst Du das selbst machen, wenn NSIS das für Dich erledigen kann?

bye
TT

öh… weil ich ein programm nicht unbedingt “installieren” will, vielleicht?
und ausserdem muss das ganz ja auch noch auf mac und linux gehen.

öh… weil ich ein programm nicht unbedingt „installieren“

Installieren ist aber schon die Maximalmethode …
Klar, macht mehr arbeit, aber dafuer gewinnst ne menge an freiheitsgrad:

  • Icons !
  • Menüeinträge
  • Abhaengigkeiten checken und ggf nachinstallieren
  • Entscheidung ob nur fuer den User oder den gesammten Rechner
  • Registry einträge …

Unter Linux wirds noch ne Stufe Komplexer, da solltest, um alle deine User richtig zufrieden zu machen, für jedes binaer derivat (debian, red hat & co, Archlinux) nen package bauen, und für source code User install scripte anbieten, bzw buildscripte (gentoo).
Es sei denn dein Programm wird mal so wichtig, das die Distries sich drum reissen dir die arbeit abzunehmen :smiley:

Unter Linux irgendwas anzubieten, wo der user keine Ahnung hat wo ers hinlegen soll, und dann auch noch der aufruf scheitert, weil falsche JAVA version oder fehlende packages … da muessen die potentiellen user scho richtig intressiert an dem Programm sein um weiterzumachen … Da drueckt er dann aber auch ne Virenscanner Warnung weg :slight_smile:

Generell.
Ich hab auch schon contakt mit der „Virenscanner Fraktion“ zu tun gehabt.
Laut aussage unserer IT gibts bei Symantek optionen, wo sowas generell als „verdächtig“ gilt. da hasst keine chance …
keine Ahnung welches level bei dir eingestellt ist …

Wo packt denn der entpacker die jar hin ? hoffentlich nicht ins „Program Files“ oder „system“ oder sowas ^^

Ciao …

Hallo,

zunächst mal danke für die vielen Antworten.
Ich habe mich heut mal dran gemacht und das Starten von jar’s mit Hilfe von exe-Dateien unter zwei verschiedenen Antiviren-Programmen getestet.

Zum Ergebnis schon mal vorweg, es liegt definitiv an den Antiviren-Programmen.

Ich habe zum Test mal Avast Free Antivirus und AVG AntiVirus 2014 genommen.
Zum erzeugen von exe Dateien habe ich Launch4j, Xenoage JEStart 2.0 und Kickstart 2.0 verwendet.

Bei Launch4j und Xenoage JEStart 2.0 habe ich eine exe als Wrapper und Launcher erstellt, Kickstart 2.0 bietet nicht die Möglichkeit eine Launcher exe zu ertstellen.

So nun mal zum Ergebnis im einzelnen.

Avast Free Antivirus blockt von Launch4j die Wrapper und auch die Launcher EXE, von Xenoage JEStart 2.0 wird die Launcher-EXE geblockt und die Wrapper-EXE wird ohne anstand geöffnet.
Bei Kickstart 2.0 greift Avast Free Antivirus nicht, aber die Benutzerkontensteuerung von Win7 greift und verlangt dass man den Zugriff erlaubt.

AVG AntiVirus 2014 kümmert es überhaubt nicht das die exe-Datei eine weitere Datei öffnet und läßt alles ohne weitere Maßnahmen durch.

ein Wrapper ist so einfach geschrieben

int main(int argc, char* argv) {
    system("java -jar meine.jar");
}