WhichMachine: Ein kleines Tool von mir, um herauszufinden, ob eine ausführbare Datei (Exe, Dll) für 32 oder 64 Bit Windowssysteme compiliert wurde. Zu finden bei den Tools auf meiner Webpage.
Ist die Exe/Dll für 32 oder 64 Bit?
-
-
-
Schade, sowohl hier als auch im Assembler-Forum null Feedback. Gibt wohl wenig Verwendung für so ein Tool...
-
Woraus schließt Du denn, dass so ein Tool nicht gebraucht wird?
-
Vermute ich einfach mal. Wenn jemand unter 32 Bit eine 64 Bit-Anwendung öffnet, erhält er eine entsprechende Meldung. Unter 64 Bit laufen 32/64 Bit- Anwendungen.
Ist wohl nur für Dll's interessant, und in dem Fall nur für Programmierer.
-
Zitat von Frabbing;853692
Ist wohl nur für Dll's interessant, und in dem Fall nur für Programmierer.
So sehe ich es auch, da 32 Bit auch unter 64 Bit läuft.
Und für uns Programmierer gibt es momentan so gut wie
keine 64 Bit - DLLs. Ist ja auch nicht nötig, solange XProfan
keine 64 Bit unterstützt.
Hast ja auch selbst gesehen, wie schwierig eine Umsetzung
ist, als ich dich nach einer 64 Bit - Listview.dll fragte.
Die hätte ich dann gerne mit PureBasic 64 Bit eingebunden,
weil damals ein Arbeitskollege unbedingt mein Programm in
64 Bit haben wollte. -
Vielleicht sollte ich die Dll umschreiben nach PB.
Man kann auch in Assember Quellcode schreiben, der für 32 und 64 kompiliert werden kann. Zum damaligen Erstellungszeitpunkt waren die Infos natürlich nicht verfügbar. -
Dann kannste ja auch gleich eine
PB-Lib draus machen.
Der Quellcode bleibt ja der gleiche. -
Zitat von H.Brill;854078
Dann kannste ja auch gleich eine
PB-Lib draus machen.
Der Quellcode bleibt ja der gleiche.
Wo die UserLib dann nach jeder PB Version nicht mehr funktioniert?
Wenn, dann sollte er auch den Quellcode mitliefern, ansonsten lieber
nur eine DLL! Mit UserLibs ohne Quellcode begibt man sich in Abhängigkeiten
zum Autor. Ist wie mit einer PCU die unter XProfan X2 nicht mehr läuft, der
Autor kann nicht updaten, da im X2 fehlt und schon kannst Du Deine
Anwendung nicht umstellen auf X2.Ich bevorzuge auch UserLibs, aber nur wenn der Quellcode bei ist und ich
die UserLib selber updaten kann. -
Aus dem Grund benutze ich auch nie PCUs ohne Quellcodes (in Dlls benutze ich leider manchmal externe Libraries, was sich bei der Umstellung zu einem anderen Bitsystem rächt)
Die Abhängigkeit zu einer Dll ist aber noch größer, weil sie vielleicht in einer Sprache geschrieben ist, die man selber nicht beherrscht und besitzt. Da nützt einem dann auch kein Quellcode.
-
Zitat von Frabbing;854092
Die Abhängigkeit zu einer Dll ist aber noch größer, weil sie vielleicht in einer Sprache geschrieben ist, die man selber nicht beherrscht und besitzt. Da nützt einem dann auch kein Quellcode.
Und wenn z.B. PB hundert Updates erfährt, kann man die DLL ohne Änderungen der DLL weiternutzen, eine UserLibs aber nicht, da diese ja Abhängikeiten zur verwendeten PB Version hat. Eine Funktion ändert ihre Syntax, z.B. ein Parameter wird Optional und schon läuft keine UserLib mehr, die mit der vorherigen Version erstellt wurde. In einer DLL sind alle Abhängigkeiten aufgelöst, da kann sich nur die Syntax zur Nutzung einer DLL verändert haben. Der Quellcode ist also unerheblich (ausser bei Wechsel der Bitbreite, was ja nicht all zu oft vorkommt innerhalb eines Programmes). -
Erweiterungsvorschläge:
- Überprüfung, ob eine Datei eine ausfüherbare Datei ist.
- Überprüfung, ob eine ausführbare Datei eine EXE oder DLL ist (e_lfanew + 20 oder _IMAGE_OPRTIONAL_HEAFDER_ - 4)
- Vielleicht bekommst du es sogar noch hin herauszufinden, ob die ausführbare Datei ein Treiber oder eine DLL ist.
- Parametergesteuerte Ausgabe des Ergebnisses in eine Textdatei (Dateiname, Dateityp, Größe, evtl. Signatur, Attribute, Dateigröße, Ladeadresse, Sektions, Einsprungsadresse ...)
-
MüllSchlucker: Danke dir! Punkt 1 und 2 werden ja schon jetzt gemeldet.
Und um weitere Arbeit zu investieren sehe ich kaum vorhandenes Interesse. Das Tool nutzt jetzt ja schon kaum jemand. -
Nö - ich will eine Anzeige, ob die Datei eine EXE ist oder eine DLL.
Desweiteren wäre es interessant, einen ganzen Ordner durchsuchen zu lassen - das Ding könnte dann alle Dateien listen, die EXE, DLL oder Treiberdateien sind (egal, welche Enduing die haben). -
Zitat von Frabbing;854111
Und um weitere Arbeit zu investieren sehe ich kaum vorhandenes Interesse. Das Tool nutzt jetzt ja schon kaum jemand.
Ist auch kein Wunder, das braucht - so wie das ist - keiner. Es wäre aber aber vielleicht gant interessant zu wissen, welche umbenannten ausführbaren Dateien sich zum Beispiel im Ordner %TEMP% befinden - und dann wird die Sache schon interessanter... -
Ich dachte da an so was, bloß mit noch besseren Infos (Resource zum Beispiel):
Code
Alles anzeigen$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ º º º PPFScanner v1.0 (long Scan) º º Scanfile 1 º º º $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ @Mopao and AHT Scanstart: 01.05.2011 19:14 Microsoft Windows [Version 6.0.6002] Windows Vista (TM) Home Premium Servicepack: Service Pack 2 läuft auf 32-Bit Windows Boot: Normal boot Processor 1: AMD Athlon(tm) 64 X2 Dual-Core Processor TK-57 Processor 1 Identifier: x86 Family 15 Model 104 Stepping 2 Processor 1 Vendor: AuthenticAMD Geschwindigkeit von Prozessor 1: 1900MHZ Processor 2: AMD Athlon(tm) 64 X2 Dual-Core Processor TK-57 Processor 2 Identifier: x86 Family 15 Model 104 Stepping 2 Processor 2 Vendor: AuthenticAMD Geschwindigkeit von Prozessor 2: 1900MHZ Laufwerke: C:\ = HDD, D:\ = HDD, E:\ = HDD, F:\ = CDROM, G:\ = HDD PPFScan Version: 1.0.21.3 SeDebugPrivilege: 1 Call: 1 Threads: 1 -> 3108 UAC: aktiviert Admin: ja Mandatory Policy Level: $1 PPFScanner Ordner: C:\EIGENES\PPFScan\ User: Andreas Hötker ProgramData: C:\ProgramData Programfiles: C:\Program Files CommonProgramFiles: C:\Program Files\Common Files Systemroot: C:\Windows Systemroot aus Registry: C:\Windows UserProfile: C:\Users\Andreas Hötker Temporary Files: C:\Users\Andreas Hötker\AppData\Local\temp Applicationdata: C:\Users\Andreas Hötker\AppData\Roaming Local Applicationdata: C:\Users\Andreas Hötker\AppData\Local Common Applicationdata: C:\ProgramData Startup: C:\Users\Andreas Hötker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup Common Startup: C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup Java Version: 1.6 Internet Explorer Version: 9.0.8112.16421 [b]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[/b] [b]C:\Users\Andreas Hötker\AppData\Local\temp (ausführbare Dateien)[/b] 13.04.2011 22:29 C:\Users\Andreas Hötker\AppData\Local\temp\79A.tmp --------- 311248 ----- [Adobe Systems Incorporated] 10.04.2011 21:32 C:\Users\Andreas Hötker\AppData\Local\temp\catchme.dll --------- 53248 08.04.2011 18:17 C:\Users\Andreas Hötker\AppData\Local\temp\2767.tmp\BTKR_RunBox.bat --------- 6273 07.04.2011 00:39 C:\Users\Andreas Hötker\AppData\Local\temp\divB56.tmp\divC21.tmp --------- 1607536 ----- [DivX, LLC] 07.04.2011 00:39 C:\Users\Andreas Hötker\AppData\Local\temp\divB56.tmp\div1EBC.tmp --------- 913760 ----- [DivX, LLC] 07.04.2011 00:39 C:\Users\Andreas Hötker\AppData\Local\temp\div2AD6.tmp\div2AF7.tmp --------- 1607536 ----- [DivX, LLC] 25.03.2011 19:29 C:\Users\Andreas Hötker\AppData\Local\temp\HPSU$TCF.__K\hpusetup.exe --------- 3099672 ----- [Hewlett-Packard Company] 12.03.2011 17:09 C:\Users\Andreas Hötker\AppData\Local\temp\thread.dll --------- 6148 11.02.2011 22:48 C:\Users\Andreas Hötker\AppData\Local\temp\D087.tmp --------- 311248 ----- [Adobe Systems Incorporated] 10.02.2011 02:48 C:\Users\Andreas Hötker\AppData\Local\temp\jre-6u24-windows-i586-iftw-rv.exe --------- 885536 ----- [Sun Microsystems, Inc.] 09.02.2011 16:34 C:\Users\Andreas Hötker\AppData\Local\temp\D519.tmp --------- 311248 ----- [Adobe Systems Incorporated] 09.02.2011 11:30 C:\Users\Andreas Hötker\AppData\Local\temp\E0CE.tmp --------- 311248 ----- [Adobe Systems Incorporated] 09.02.2011 09:27 C:\Users\Andreas Hötker\AppData\Local\temp\4BA0.tmp --------- 311248 ----- [Adobe Systems Incorporated] 08.02.2011 07:34 C:\Users\Andreas Hötker\AppData\Local\temp\8BBB.tmp --------- 311248 ----- [Adobe Systems Incorporated] 07.02.2011 17:24 C:\Users\Andreas Hötker\AppData\Local\temp\B53B.tmp --------- 311248 ----- [Adobe Systems Incorporated] 07.02.2011 13:14 C:\Users\Andreas Hötker\AppData\Local\temp\40B7.tmp --------- 311248 ----- [Adobe Systems Incorporated] 06.02.2011 12:37 C:\Users\Andreas Hötker\AppData\Local\temp\A38E.tmp --------- 311248 ----- [Adobe Systems Incorporated] 20.01.2011 10:38 C:\Users\Andreas Hötker\AppData\Local\temp\7714.tmp --------- 311248 ----- [Adobe Systems Incorporated] 09.01.2011 17:01 C:\Users\Andreas Hötker\AppData\Local\temp\425D.tmp --------- 311248 ----- [Adobe Systems Incorporated] 01.01.2011 20:56 C:\Users\Andreas Hötker\AppData\Local\temp\5762.tmp --------- 311248 ----- [Adobe Systems Incorporated] 27.12.2010 00:45 C:\Users\Andreas Hötker\AppData\Local\temp\DDC1.tmp --------- 311248 ----- [Adobe Systems Incorporated] 23.12.2010 19:49 C:\Users\Andreas Hötker\AppData\Local\temp\3A9F.tmp --------- 311248 ----- [Adobe Systems Incorporated] 13.12.2010 13:46 C:\Users\Andreas Hötker\AppData\Local\temp\D125.tmp --------- 311248 ----- [Adobe Systems Incorporated] 12.12.2010 14:30 C:\Users\Andreas Hötker\AppData\Local\temp\1258.dir\InstallFlashPlayer.exe --------- 2827728 ----- [Adobe Systems Incorporated] 10.12.2010 21:13 C:\Users\Andreas Hötker\AppData\Local\temp\502.tmp --------- 311760 ----- [Adobe Systems Incorporated] 08.12.2010 09:44 C:\Users\Andreas Hötker\AppData\Local\temp\6F75.tmp --------- 311760 ----- [Adobe Systems Incorporated] 06.12.2010 20:47 C:\Users\Andreas Hötker\AppData\Local\temp\37A.tmp --------- 311760 ----- [Adobe Systems Incorporated] 24.11.2010 23:51 C:\Users\Andreas Hötker\AppData\Local\temp\jre-6u23-windows-i586-iftw-rv.exe --------- 884512 ----- [Sun Microsystems, Inc.] 23.11.2010 21:08 C:\Users\Andreas Hötker\AppData\Local\temp\D355.tmp --------- 311760 ----- [Adobe Systems Incorporated] 23.11.2010 20:07 C:\Users\Andreas Hötker\AppData\Local\temp\DivXSetup.exe --------- 876824 ----- [DivX, Inc.] 23.11.2010 20:07 C:\Users\Andreas Hötker\AppData\Local\temp\div9378.tmp\div10BF.tmp --------- 1203416 23.11.2010 20:07 C:\Users\Andreas Hötker\AppData\Local\temp\div7B37.tmp\div7B48.tmp --------- 1062184 ----- [DivX, Inc.] 23.11.2010 20:07 C:\Users\Andreas Hötker\AppData\Local\temp\div7934.tmp\div7AC0.tmp --------- 876824 ----- [DivX, Inc.] 23.11.2010 20:07 C:\Users\Andreas Hötker\AppData\Local\temp\div7934.tmp\div7955.tmp --------- 1062184 ----- [DivX, Inc.] 23.11.2010 20:05 C:\Users\Andreas Hötker\AppData\Local\temp\div9378.tmp\div9BC.tmp --------- 580760 ----- [Google Inc] 23.11.2010 20:05 C:\Users\Andreas Hötker\AppData\Local\temp\div9378.tmp\div9BB.tmp --------- 515048 ----- [DivX, Inc.] 23.11.2010 20:05 C:\Users\Andreas Hötker\AppData\Local\temp\div9378.tmp\div9AB.tmp --------- 580760 ----- [Google Inc] 23.11.2010 20:04 C:\Users\Andreas Hötker\AppData\Local\temp\div9378.tmp\divC089.tmp --------- 193832 ----- [DivX, Inc.] 23.11.2010 20:04 C:\Users\Andreas Hötker\AppData\Local\temp\div9378.tmp\divA00E.tmp --------- 1705256 ----- [DivX, Inc.] 23.11.2010 20:04 C:\Users\Andreas Hötker\AppData\Local\temp\div9378.tmp\div9E77.tmp --------- 1160488 ----- [DivX, Inc.] 23.11.2010 20:04 C:\Users\Andreas Hötker\AppData\Local\temp\div9378.tmp\div9389.tmp --------- 1062184 ----- [DivX, Inc.] 23.11.2010 20:04 C:\Users\Andreas Hötker\AppData\Local\temp\div9194.tmp\div9301.tmp --------- 876824 ----- [DivX, Inc.] 23.11.2010 20:04 C:\Users\Andreas Hötker\AppData\Local\temp\div9194.tmp\div91A5.tmp --------- 1062184 ----- [DivX, Inc.] 23.11.2010 20:04 C:\Users\Andreas Hötker\AppData\Local\temp\div26C1.tmp\div26D2.tmp --------- 1062184 ----- [DivX, Inc.] 23.11.2010 20:04 C:\Users\Andreas Hötker\AppData\Local\temp\div24FD.tmp\div266A.tmp --------- 876824 ----- [DivX, Inc.] 23.11.2010 20:04 C:\Users\Andreas Hötker\AppData\Local\temp\div24FD.tmp\div250E.tmp --------- 1062184 ----- [DivX, Inc.] 23.11.2010 20:03 C:\Users\Andreas Hötker\AppData\Local\temp\divC7B1.tmp\divC7C2.tmp --------- 1062184 ----- [DivX, Inc.] 23.11.2010 20:03 C:\Users\Andreas Hötker\AppData\Local\temp\divC705.tmp\div7843.tmp --------- 1588989 23.11.2010 20:03 C:\Users\Andreas Hötker\AppData\Local\temp\divC5CE.tmp\divC769.tmp --------- 876824 ----- [DivX, Inc.] 23.11.2010 20:03 C:\Users\Andreas Hötker\AppData\Local\temp\divC5CE.tmp\divC5DE.tmp --------- 1062184 ----- [DivX, Inc.] [b]%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%[/b] ***** Ende des Scans 01.05.2011 um 19:15 ***
Das wäre auf jeden Fall interessant... -
Bitte bitte - schreib so was...
- Kleine GUI dranpacken und optional ohne GUI starten und Ergebnisse in Textdatei schreiben lassen (Parameterabhängig).
- Testen lassen, ob die zu untersuchende Datei eine EXE / ein Treiber oder eine DLL ist (wie man das macht, steht oben).
- Die wichtigsten Infos zusätzlich aus der Resource holen (wenn vorhanden).
- Signatur auslesen, wenn vorhanden.
- Weirere Dateiinfos anzeigen (Größe, Attribute,...)
Wenn du Leute erst mal merken, was für EXE Dateien bei denen in den Ordnern rumgurken, die gar nicht .EXE heißen, hast du hier ZIG Rückmeldungen...
-
Mal sehen, wenn der Rücken wieder besser ist. Für's Erste muss ich mich einschränken.
Aber natürlich schonmal danke für die Anregungen! -
Hab gerade was im PureBasic Forum gefunden
und mal für Profan umgesetzt (ist ja nur API).
Vielleicht kann man es mal testen und evtl. kann
es ja jemand brauchen.
Code
Alles anzeigencls Declare lpBinaryType%, datei$ ' [URL='http://msdn.microsoft.com/en-us/library/aa364819%28v=vs.85%29.aspx']GetBinaryType Function (Windows)[/URL] Def %SCS_32BIT_BINARY 0 Def %SCS_64BIT_BINARY 6 Def %SCS_DOS_BINARY 1 Def %SCS_OS216_BINARY 5 Def %SCS_PIF_BINARY 3 Def %SCS_POSIX_BINARY 4 Def %SCS_WOW_BINARY 2 Def @GetBinaryType(2) !"Kernel32","GetBinaryTypeA" datei$ = @LoadFile$("Lade eine Datei","Programme|*.Exe;*.DLL;*.PIF") If datei$ <> "" GetBinaryType(Addr(datei$), Addr(lpBinaryType%)) Select lpBinaryType% CaseOf %SCS_32BIT_BINARY Print "Windows 32 Bit !" CaseOf %SCS_64BIT_BINARY Print "Windows 64 Bit !" CaseOf %SCS_DOS_BINARY Print "MS-DOS Programm !" CaseOf %SCS_OS216_BINARY Print "16 Bit OS/2 Programm !" CaseOf %SCS_PIF_BINARY Print "PIF - Datei für ein ausführbares MS-DOS Programm !" CaseOf %SCS_POSIX_BINARY Print "POSIX - Programm !" CaseOf %SCS_WOW_BINARY Print "16-Bit Programm !" EndSelect Else Print "Keine Datei gewählt !" Endif WaitKey End
Und für unsere Anfänger haben wir mal
wieder ein Beispiel, wie man mit der
WIN-API arbeitet. -
Hallo Heinz...
Modifiziert für ältere XProfan Versionen:Code
Alles anzeigen'##################################################################################### '######### Code von AHT nach, Modifizierung des Codes von H. Brill ######### '######### Gepostet für [URL='http://www.paules-pc-forum.de']Startseite - Paules-PC-Forum.de[/URL] ######### '##################################################################################### cls Declare lpBinaryType%, datei$, Type& ' GetBinaryType Function (Windows) Def %SCS_32BIT_BINARY 0 Def %SCS_64BIT_BINARY 6 Def %SCS_DOS_BINARY 1 Def %SCS_OS216_BINARY 5 Def %SCS_PIF_BINARY 3 Def %SCS_POSIX_BINARY 4 Def %SCS_WOW_BINARY 2 Def @GetBinaryType(2) !"Kernel32","GetBinaryTypeA" 'datei$ = @LoadFile$("Lade eine Datei","Programme|*.Exe;*.DLL;*.PIF") datei$ = @LoadFile$("Lade eine Datei","*.*") If datei$ <> "" Type& = GetBinaryType(Addr(datei$), Addr(lpBinaryType%)) If Type& If lpBinaryType% = %SCS_32BIT_BINARY Print "Windows 32 Bit !" elseIf lpBinaryType% = %SCS_64BIT_BINARY Print "Windows 64 Bit !" elseIf lpBinaryType% = %SCS_DOS_BINARY Print "MS-DOS Programm !" elseIf lpBinaryType% = %SCS_OS216_BINARY Print "16 Bit OS/2 Programm !" elseIf lpBinaryType% = %SCS_PIF_BINARY Print "PIF - Datei für ein ausführbares MS-DOS Programm !" elseIf lpBinaryType% = %SCS_POSIX_BINARY Print "POSIX - Programm !" elseIf lpBinaryType% = %SCS_WOW_BINARY Print "16-Bit Programm !" endif else Print "Keine EXE !" endif Else Print "Keine Datei gewählt !" Endif WaitKey End
Funzt gut, brauche aber mehr. -
Zitat von H.Brill;855656
Vielleicht kann man es mal testen und evtl. kannes ja jemand brauchen.
Hab mal getestet: Gebrauchen kann man das schon, Franks Sache funktioniert aber scheinbar besser und korrekter (benutze vermutlich fast die selbe Technik wie Frank in eigenen Codes). Habe hier eine Malware DLL (nicht geladen), bei dem dein Code nicht erkennt, das es eine ausführbare Datei ist. -
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!