Jak utworzyć plik exe. przez skrypt .cmd

Jak utworzyć plik exe. przez skrypt .cmd
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

Witam

Czy jest możliwość utworzenia pliku .exe poprzez skrypt .cmd?

Proste pliki mogę utworzyć poprzez
ECHO > SCIEZKA/NAZWAPLIKU.VBS
i wypełnić pożądaną wartością np.:
ECHO cls >SCIEZKA/NAZWAPLIKU.VBS
ECHO pause >SCIEZKA/NAZWAPLIKU.VBS
itd..

Czy jest to wykonalne dla plików .exe?

cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około godziny
  • Lokalizacja:Poznań
  • Postów:8802
2

Zasadniczo - tworzenie plików EXE jest trochę skomplikowanym procesem. Potrzebne są do tego narzędzia - takie, jak kompilator czy linker.
Takie wygenerowanie sobie exeka "z powietrza" jest praktycznie nierealne (napisałem "praktycznie" - bo da się to zrobić, ale to już naprawdę trzeba posiadać konkretną wiedzę).

Jedyne rozwiązanie, które (być może) by Tobie pasowało, to napisanie sobie jakiegoś programu w jakimś języku programowania, a potem przekazanie w skrypcie tego kodu źródłowego do kompilacji, w efekcie czego powstanie plik wykonywalny. Ale nie wiem, czy o takie coś Ci chodziło. Jeśli nie, to napisz jaśniej, czego Ci do szczęścia potrzeba ;)


m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

Rozjaśniam obraz sytuacji:
Mam skrypt który do działania(jednej z funkcji skryptu) potrzebuje zewnętrznego pliku PROGRAM.EXE
Do innych funkcji używam plików.VBS (które tworzę po prostu poleceniami ECHO >> nazwapliku.VBS) i wywołuję go w skrypcie.
Dotychczas używałem po prostu hostingu z którego ściągałem plik (PROGRAM.EXE) i go uruchamiałem z odpowiednimi w przełącznikami wiersza poleceń.

Chciałbym mieć wszystko w jednym, pliku - skrypcie.

cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około godziny
  • Lokalizacja:Poznań
  • Postów:8802
1

No to kolejne pytanie - czy wiesz, co ten plik EXE dokładnie robi? Bo może da się go zastąpić jakimś skryptem. Natomiast, jeśli plik EXE musi być, to raczej kiepsko to widzę. Samego pliku nie wygenerujesz, więc musisz go skądś pobrać i wstawić w dane miejsce.


PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:40 minut
  • Postów:3874
1

Skoro skrypt odpala exec'a to jak chcesz to zrobić aby to było w jednym pliku? i co to ma wspólnego z dopisywaniem linii do pliku tekstowego za pomocą cmd?

m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0
cerrato napisał(a):

No to kolejne pytanie - czy wiesz, co ten plik EXE dokładnie robi? Bo może da się go zastąpić jakimś skryptem. Natomiast, jeśli plik EXE musi być, to raczej kiepsko to widzę. Samego pliku nie wygenerujesz, więc musisz go skądś pobrać i wstawić w dane miejsce.

Niestety nie da siego zastąpić skryptem....

Panczo napisał(a):

Skoro skrypt odpala exec'a to jak chcesz to zrobić aby to było w jednym pliku? i co to ma wspólnego z dopisywaniem linii do pliku tekstowego za pomocą cmd?

Plik tworzy exeka a potem go uruchamia.
dopisywanie... - tak tworzę na początku skryptu pliki .VBS które potem ten sam skrypt wykonuje.

edytowany 2x, ostatnio: m4s
PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:40 minut
  • Postów:3874
1

Plik tworzy exeka a potem go uruchamia. dopisywanie... - tak tworzę na początku skryptu pliki .VBS które potem ten sam skrypt wykonuje.

Czekaj bo ja tego nie rozumiem do końca, masz bat-a który tworzy skrypt vbs, ten skrypt używa zewnętrznego pliku exe który jest odpalany.
chcesz aby bat był "niezależny i stworzył tego exec-a? aby nie było potrzeby pobierania z netu czy dodawania jako osobny plik?

m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

Aby nie było potrzeby pobierania z netu.

Plik VBS podałem jako przykład tworzenia pliku wykorzystywanego przez skrypt - myślałem o podobnej zasadzie stworzenia pliku .exe

KR
  • Rejestracja:prawie 7 lat
  • Ostatnio:około rok
  • Postów:174
1

Są programy typu "BAT to EXE Converter", więc byłoby coś takiego możliwe!

PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:40 minut
  • Postów:3874
3

To tak nie zadziała, bo nie da się stworzyć pliku zapisując jego dane do pliku tekstowego, musisz działać binarnie.

Powiedzmy, że masz plike "c:\folder\plik.exe" to najprościeć zapisać go w base 64 do pliku textowego:

Kopiuj
Const TypeBinary = 1
Const ForReading = 1, ForWriting = 2, ForAppending = 8
plik="c:\folder\plik.exe"
    Dim bytes
    Dim B64String
    With CreateObject("ADODB.Stream")
    .Open
    .Type = 1 'otwórz binarnie
    .LoadFromFile plik
    bytes = .Read
    .Close
    End With
    B64String = EncodeBase64(bytes)        
    Set objFileToWrite = CreateObject("Scripting.FileSystemObject").CreateTextFile(plik & ".txt",true)
objFileToWrite.WriteLine(B64String )
objFileToWrite.Close
Set objFileToWrite = Nothing



Private Function EncodeBase64(bytes) 

    Set objXML = createobject("MSXML2.DOMDocument.6.0")
    Set objNode = objXML.createElement("b64")

    objNode.DataType = "bin.base64"
    objNode.nodeTypedValue = bytes
    EncodeBase64 = objNode.Text

    Set objNode = Nothing
    Set objXML = Nothing
End Function

co spowoduje, ze powstanie plik: c:\folder\plik.exe.txt
i to jego zawartośc budujesz w pliku bat

a w samym bacie tworzysz skrypt który tą zawartość zapisze jako exe:

Kopiuj
plikb64 = "c:\folder\plik.exe.txt"
plikexe = "c:\folder\plik_test.exe"


Set fso= CreateObject("Scripting.Filesystemobject")
Set input = fso.OpenTextFile(plikb64)
contents = input.ReadAll()
input.Close

Set oXML = CreateObject("Msxml2.DOMDocument")
Set oNode = oXML.CreateElement("base64")
oNode.dataType = "bin.base64"
oNode.text = contents

Set BinaryStream = CreateObject("ADODB.Stream")
BinaryStream.Type = 1 'adTypeBinary
BinaryStream.Open
BinaryStream.Write oNode.nodeTypedValue
BinaryStream.SaveToFile plikexe

cerrato
Albo idąc dalej - osadzasz tego EXE'ka w samym pliku bat - coś w stylu https://stackoverflow.com/questions/16778337/batch-script-store-data-within-itself
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

Wow! Jaka kopalnia informacji!
Czyli rozumiem że raz zapiszę mojego .EXE do pliku TXT to potem mogę użyć całości do odtworzenia jako EXE?

Jaki jest limit znaków w .cmd do polecenia ECHO >> ?
Czytałem że 8191, reasumując musiałbym stworzyć .TXT z bat etapami po 8191 znaków.
Dobrze kombinuję?

Dziękuje za odpowiedź.

edytowany 1x, ostatnio: m4s
AK
  • Rejestracja:prawie 7 lat
  • Ostatnio:około miesiąc
  • Postów:3561
3

Jakiś straszny XY problem.
O co NAPRAWDĘ chodzi, czym się zajmuje skrypt, i o jakie czynności podejrzany jest EXE?


Bo C to najlepszy język, każdy uczeń ci to powie
PA
  • Rejestracja:ponad 22 lata
  • Ostatnio:40 minut
  • Postów:3874
1

Ten limit dotyczy długości linii, wygenerowany plik ma 72 znaki w lini więc spokojnie się zmieścisz

Yukiteru Gromadzki
  • Rejestracja:ponad 6 lat
  • Ostatnio:ponad rok
  • Postów:192
3

Można tak

Kopiuj
@echo off
echo Compiling
gcc main.c
start a.exe
echo Done

A tak na poważnie to powiedz, co chcesz osiągnąć.

m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

To żadna tajemnica co do skryptu: link -> https://winclub.pl/topic/2449-windows-vista78110-skrypt-removespy_aio-hosts-szpiedzy-i-telemetria-won-optymalizacja-windows/

Skrypt do optymalizacji Windowsa/ów, tak jak pisałem wcześniej do działania(usunięcia komponentów z systemu) potrzebuje zewnętrznego programu - wcześniej był automatycznie ściągany przez skrypt a teraz będzie zaszyty w skrypcie , ot tyle :)

SH
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Poznań
  • Postów:109
0

To zamiast kombinować nie lepiej takoe coś klepnąć w autoicie ? Ino to jest chwila bo to prosty, a jednocześnie potężny język i sie kompiluje od razu do exe.

Nie mam uprawnień do przegladniecia linku, więc nie wiem co tam chcesz czarowac, ale w najgorszym wypadku mozna oprogramowac cmd

edytowany 1x, ostatnio: Soul_hunter_16
m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

Odpowiadam, ma być full open code - każdy ma zobaczyć ze tam nic nie ma ukrytego, sam sobie może pozmieniać.

KamilAdam
  • Rejestracja:ponad 6 lat
  • Ostatnio:około miesiąc
  • Lokalizacja:Silesia/Marki
  • Postów:5505
1
Soul_hunter_16 napisał(a):

To zamiast kombinować nie lepiej takoe coś klepnąć w autoicie ? Ino to jest chwila bo to prosty, a jednocześnie potężny język i sie kompiluje od razu do exe.

W czym AutoIt jest lepszy w tym zastosowaniu od dowolnego języka programowania jak Haskell, Rust, Racket czy C ?


Mama called me disappointment, Papa called me fat
Każdego eksperta można zastąpić backendowcem który ma się douczyć po godzinach. Tak zostałem ekspertem AI, Neo4j i Nest.js . Przez mianowanie
SH
  • Rejestracja:prawie 10 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Poznań
  • Postów:109
0
Kamil Żabiński napisał(a):
Soul_hunter_16 napisał(a):

To zamiast kombinować nie lepiej takoe coś klepnąć w autoicie ? Ino to jest chwila bo to prosty, a jednocześnie potężny język i sie kompiluje od razu do exe.

W czym AutoIt jest lepszy w tym zastosowaniu od dowolnego języka programowania jak Haskell, Rust, Racket czy C ?

Mniejszy próg wejścia, prosta składnia. Kilka linijek lub jedna funkcja ppm i kompilacja do exe. Nie wiem jak w innych, czy przy takich zadaniach są jakieś potrzeby zarządzania pamięcią i inne(tu oczywiscie nie ma) i instaluje sie go juz skonfigurowanego w 5 min, ale oczywiście da się to zrobić w każdym. Tutaj mi to brzmi jak dobre rozwiązanie bo w sumie do takich właśnie zadań powstał.

m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

Dziękuje bardzo za pomoc, wszystko się udało: zakodować plik do .txt i odkodować plik z .txt na .exe
Pzdr!

Manna5
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 15 godzin
  • Lokalizacja:Kraków
  • Postów:641
0

Najlepsza opcja to generowanie kodu w JScript, C# lub MSIL a potem kompilowac kod do exe za pomoca .NET (csc,jsc,ilasm) Systemowy makecab ma tez funkcje robienia SFX z autorun ale rozwiazanie z makecabem jest dosc skomplikowane. http://www.ss64.com/nt/makecab.htm


m4s
  • Rejestracja:ponad 8 lat
  • Ostatnio:prawie 4 lata
  • Postów:63
0

A czy plik .vbs też da się tak zakodować ?

Manna5
  • Rejestracja:prawie 6 lat
  • Ostatnio:około 15 godzin
  • Lokalizacja:Kraków
  • Postów:641
0

Narzędzie makecab i nakładka graficzna iexpress pozwala zamienić w EXE każdy otwieralny plik, lecz może to być problematyczne. Poza tym są programy Bat To Exe Converter i Vbs To Exe Converter, które działają także z konsoli.


Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.