Datei aus Ressourcen starten

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Pixxxas.

    Datei aus Ressourcen starten

    Hallo, ich möchte gern eine EXE Datei aus den Ressourcen Starten, es gibt ja die Möglichkeit sie z.b. in den TEMP Ordner zu Kopieren und von dort aus zu starten.
    Aber dies ist mir zu unsicher, da man dich an die Entpackte Datei ran kommen soll.

    Ich hatte mein ein Beispiel Projekt wie man eine Datei in den Arbeitsspeicher legt und von dort aus starten kann, doch dies habe ich leider nicht mehr.

    Es wäre nett wenn mir einer helfen könnte.

    Mfg
    Du musst die Datei als Byte-Array unter einem vorgegebenen Namen speichern, dann kannst Du sie mit Process.Start() ausführen.
    Sicher vor Entdeckung ist sie nicht, außerdem ist sie ja auch im TaskManager zu sehen.
    Hast Du was "illegales" vor :?: :?: :?:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi!

    Die Ressourcen sind sehr unsicher. Die kannst du z.B. mit dem RessourceHacker lesen. Der ist kostenlos und extrem leicht zu finden. Wenn du willst, dass man die Datei nicht so leicht findet, pack die doch hinten an deine EXE dran und kopier die beim Starten raus. Und noch ein Tipp: wenn du einen .NET Verschleierer programmieren möchtest nimm lieber .NET Reactor. Der hat noch mehr Sicherheit.
    Mit freundlichen Grüßen,
    Thunderbolt
    Die beiden Exe's hintereinander kopieren. Das fällt bei kleinen Dateigrößen nicht auf. Dann brauchst du nur noch ein Programm welches seine eigene Größe kennt und das andere dann rauskopiert.
    Kleines Beispiel: Entpackende Exe ist 'A' die andere Exe ist 'B'

    Quellcode

    1. AAAABBBBBBBBBBB

    Dann wäre Exe A 4 Byte groß und würde ab Byte 5 anfangen alles rauszukopieren und das dann starten. Um sowas auszuhebeln muss man darauf erstmal kommen und dann wissen wie die zweite Datei anfängt. Zum Beispiel Exe's fangen mit 'MZ' an.
    Mit freundlichen Grüßen,
    Thunderbolt

    Pixxxas schrieb:

    könntest du mir ein Beispiel Projekt fertig machen?
    Was soll den das :?: :?: :?:
    Suche Ressourcen extrahieren.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    DAS MIT DEM UNKENTLICH IST FÜR DIE EXE SCHLECHT - WEIL SOLL SIE AUSGEFÜHRT WERDEN MUSS SIE SEIN WAS SIE IST :!: NE EXE

    Was ist das für ne exe was macht die ?! Villeicht kann mann ja täuschen und tarnen !

    VB.NET-Quellcode

    1. Imports System.IO
    2. Module module1
    3. Sub main()
    4. Using fs As New FileStream(Path.Combine(My.Computer.FileSystem.SpecialDirectories.Temp, "1.exe"), FileMode.Create, FileAccess.Write, FileShare.None)
    5. With New BinaryWriter(fs)
    6. .Write(My.Resources._1)
    7. .Flush()
    8. .Close()
    9. End With
    10. Process.Start(fs.Name)
    11. End Using
    12. Console.Read()
    13. End Sub
    14. End Module
    15. Public Class Form1
    16. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    17. Call main() 'wird hiermit aufgerufen !
    18. End Sub



    Folgendes oben anpassen !

    , "1.exe") Hier trägst du den dateinamen mit Endung ein

    .Write(My.Resources._1) Hier zeigt dier die Resource selbst die Auswahl


    Beispiel Mappe in vb 2012 :!:
    Datei aus Ressourcen starten.rar
    www11.zippyshare.com/v/12490167/file.html

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „TVX“ ()

    Möglicherweise als Assembly laden und ausführen, da musste auch mal suchen, ist aber im Forum schon behandelt worden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich habe es so versucht:

    VB.NET-Quellcode

    1. Imports System.Runtime.CompilerServices
    2. Imports System.Threading
    3. Imports System.Reflection
    4. Public Class Form1
    5. Private Sub run_managed_assembly(ByVal bytes As Byte())
    6. Try
    7. Dim assembly As Assembly = assembly.Load(bytes)
    8. Dim methoden_info As MethodInfo = [assembly].EntryPoint
    9. Dim obj As Object = RuntimeHelpers.GetObjectValue([assembly].CreateInstance(methoden_info.Name))
    10. methoden_info.Invoke(RuntimeHelpers.GetObjectValue(obj), New Object() {New String() {}})
    11. Catch ex As Exception
    12. End Try
    13. End Sub
    14. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    15. Dim b() As Byte = My.Resources.Datei
    16. Dim thr As New Thread(AddressOf run_managed_assembly)
    17. thr.start(b)
    18. End Sub
    19. End Class


    Aber die Datei startet nicht.
    Es kommt auch kein Fehler.

    Pixxxas schrieb:

    TargetParameterCountException
    Parameterfehler, da solltest Du mal die MSDN bemühen.
    Also auf den Befehl klicken und F1 drücken.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!