Vánoční nadílka Vánoční nadílka
Vánoční akce! Daruj lepší budoucnost blízkým nebo sobě. Až +50 % zdarma na dárkové poukazy. Více informací
Avatar
Prokop Randáček:29. května 20:30

Zjistic co a jak má program zapsat do soubrou .exe aby to fungovalo

Zkusil jsem: StreamReader co vypisoval to jak přečetl .exe soubor notepad++. (já vím stupidní ale co...)
googlit

Chci docílit: Vytvořit .exe aplikaci z jiné .exe aplikace. (pustím aplikaci a ona někde vygeneruje .exe aplikaci)

 
Odpovědět 29. května 20:30
Avatar
Martin Dráb
Redaktor
Avatar
Odpovídá na Prokop Randáček
Martin Dráb:29. května 23:08

EXE je normální soubor dodržující určitý formát, takže pokud jej načteš do paměti a zapíšeš do jiného souboru na disk, vytvoříš tím nový EXE soubor.

Způsob "nakopíruju do souboru, co mi ukázal Notepad++" fungovat nebude, protože Nodepad(++) se bude snažit interpretovat i netisknutelné a jiné znaky, což se ne vždycky podaří. Zejména u znaků pro konce řádků (ASCII kód 13 a 10) to bude problém.

Nahoru Odpovědět  +1 29. května 23:08
2 + 2 = 5 for extremely large values of 2
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Prokop Randáček
Petr Čech:30. května 0:31

A co přesně chceš dělat? Chceš si sám umět vytvořit executable na základě čeho a proč?
Pokud tě zajímá, jak se to skládá, můžeš nastudovat zdrojáky nějakého kompilátoru a linkeru (ale to nebudeš chtít dělat, pokud k tomu nemáš hodně moc dobrý důvod).
Pokud chceš generovat nějaké jednoduché skripty, můžeš si vytvořit třeba skript v batchi a ten vyplivnout, nebo nějakém jiném skriptovacím jazyku a potom se to pokusit převést nějakou knihovnou.

Musíš si uvědomit, že .exe je binární soubor, navíc musí dodržovat spoustu pravidel z dávných dob - např. všechny soubory začínají DOSovým kódem a halvičkami, a až potom v tom je ukazatel na skutečné hlavičky, co se používají :D
Něco takového skládat nechceš...

Nahoru Odpovědět  +1 30. května 0:31
the cake is a lie
Avatar
Odpovídá na Petr Čech
Ondřej Štorc:30. května 6:57

Sorry, ujela mi ruka...

Nahoru Odpovědět 30. května 6:57
Život je příliš krátký na to, abychom bezpečně odebírali USB z počítače..
Avatar
Prokop Randáček:30. května 18:38

Tak jo konkrétněji. mám aplikaci Main vyexportovanou do .exe. Pak je aplikace Updater která má za úkol dostat update (nové .exe) mainu po internetu a tím potom nahradit Main. Ale právě nevím jak zapsat to .exe mainu. Na tohle studovat strukturu .exeček nepotřebuju ne? Jen nějak zkopírovat, poslat a pak nějak uložit :D.

 
Nahoru Odpovědět 30. května 18:38
Avatar
Petr Čech
Redaktor
Avatar
Odpovídá na Prokop Randáček
Petr Čech:30. května 18:43

Tak to je jednoduché, prostě to stáhneš (třeba HttpClient to umí) a prostě ty soubory připíšeš a ono to bude fungovat ;) Hlavně se vůbec nemusíš zajímat o to, co je tam za data, stejně tak dobře by to fungovalo pro film.

Nahoru Odpovědět  +1 30. května 18:43
the cake is a lie
Avatar
nickname01
Člen
Avatar
Odpovídá na Prokop Randáček
nickname01:30. května 19:56

Tady máš dokumentaci k HttpClient ;-)

 
Nahoru Odpovědět 30. května 19:56
Avatar
Odpovídá na nickname01
Prokop Randáček:31. května 10:18

Jo to jsem si najít dokázal... :D Až budu mít čas tak to testnu.

 
Nahoru Odpovědět  +1 31. května 10:18
Avatar
Prokop Randáček:2. června 21:50

Tak jsem se k tomu zase dostal :D. HttpClient jsem našel ale stále stejný problém: https://ctrlv.cz/NtaS.
code:

static void Main(string[] args)
{
Task t = new Task(Download­PageAsync);
t.Start();
Console.Write­Line("Downloa­ding...");
Console.ReadLine();
}
static async void DownloadPageAsync()
{
// ... Target page.
string file = "http://downlo­ad1639.mediafi­re.com/dte13w1­gfwyg/j38rw5jjbub­x8il/Hello+wor­ld.exe";

// ... Use HttpClient.
using (HttpClient client = new HttpClient())
using (HttpResponse­Message response = await client.GetAsyn­c(file))
using (HttpContent content = response.Content)
{
// ... Read the string.
await content.ReadAs­StreamAsync();

// ... Display the result.
StreamWriter sw = new StreamWriter("e­xe.exe");
sw.Write(conten­t.ReadAsByteA­rrayAsync());
sw.Close();

}
}

 
Nahoru Odpovědět  -1 2. června 21:50
Avatar
Prokop Randáček:2. června 21:57

Tak jsem se k tomu zase dostal :D. HttpClient jsem našel ale stále stejný problém: https://ctrlv.cz/NtaS.

code:

static void Main(string[] args)
{
Task t = new Task(Download­PageAsync);
t.Start();
Console.Write­Line("Downloa­ding...");
Console.ReadLine();
}
static async void DownloadPageAsync()
{
// ... Target page.
string file = "http://downlo­ad1639.mediafi­re.com/dte13w1­gfwyg/j38rw5jjbub­x8il/Hello+wor­ld.exe";

// ... Use HttpClient.
using (HttpClient client = new HttpClient())
using (HttpResponse­Message response = await client.GetAsyn­c(file))
using (HttpContent content = response.Content)
{
// ... Read the string.
await content.ReadAs­StreamAsync();

// ... Display the result.
StreamWriter sw = new StreamWriter("e­xe.exe");
sw.Write(conten­t.ReadAsByteA­rrayAsync());
sw.Close();

}
}Petr Čech

 
Nahoru Odpovědět  -1 2. června 21:57
Avatar
Odpovídá na Prokop Randáček
Prokop Randáček:4. června 7:15

Missclick

Editováno 4. června 7:16
 
Nahoru Odpovědět 4. června 7:15
Avatar
Prokop Randáček:4. června 17:31

using System.Net;
...
var client = new WebClient();
client.Downlo­adFile("http://s­tranka.com/sou­bor/helloWorld­.exe", "C:/exe.exe");

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět  -3 4. června 17:31
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.