[BCB] Tworzenie własnego EXEcka

0

Witam,

Mam pytanie lecz jest ono troche bardziej teoretyczne niż praktyczne, chciałbym dowiedzieć się jak za pomocą swojego programu stworzyć inny, większość z was pewnie się teraz zdenerwuje i napisze żebym sobie kompilator napisał, lecz nie o to mi chodzi.

Nie wiem czy znacie takie programy jak np: Game Factory, Game Maker czy np jakieś programy do tworzenia prezentacji w pliku wykonywalnym, tam raczej nie ma kompilatora a jednak potrafią one tworzyć własne exe'ki. Chodzi mi własnie o napisanie takiego programiku, na razie prostego który by potrafił stowrzyć exeka, chodzy żeby potrafił zawrzeć w nim tekst który wprowadziłem w programie (edytorze). I właśnie taka wiedza mnie interesuje, czy ktoś z szanownych użytkowników forum zna odpowiedz jak to zrobić? Może jakieś linki? Najlepiej by było gdyby przykłady były w c++ a jeszcze lepiej w C++ Builder'ze ;)

Szukałem na googlach ale nic nie znalazłem...może źle szukam?

Próbowałem sam, na początku myślałem o zasobach, ale do tego też jest potrzebny kompilator który te zasoby wsadzi do programu. Potem myślałem nad tym by zapoznać się ze strukturą plików exe ale wydaje mi się że nie tędy droga

Tak więc proszę o pomoc :)

0

Jezeli chodzi o te programy, ktore wymieniles, to wydaje mi sie, ze operuja one tylko na zewnetrznych plikach, albo na danych zawartych gdzies w exeku, ale nie sa to zasoby.

Natomiast sam plik wykonywalny nie zmienia sie, wiec nie potrzeba kompilatora (tak mi sie wydaje)

Do zasobow potrzeba w zasadzie tylko kompilatora zasobow, bo dodawanie/uaktualnianie zasobow do exeka mozna zrealizowac nawet w WinApi.

0

Można zapisać plik .exe w innym pliku wykonywalnym jako tablicę bajtów .Podczas zapisu na dysk
zmienić odpowiednie dane pobierając je z programu dokonującego zapisu.
Link poniżej z przykładem:
<url>
http://www.win32prog.republika.pl/asm/nieasm.html
</url>

0

Kompilator zasobów jest bardzo prostym narzędziem i większość programów, robiących pliki EXE (np.: WinZIP, robiąc samorozpakowujące się archiwum), właśnie zasoby podmienia, generując plik wyjściowy.

W przykładach Delphi są źródła przeglądarki zasobów z plików EXE (C:\Program Files\Borland\Delphi7\Demos\ResXplor), więc może i w Builderze będzie (w końcu ten sam producent).

0

W BCB niestety nie ma :( A szkoda bo też by mi się przydało

0

byly chyba funkcje api do modyfikowania zasobów w plikach PE - radze odwiedzić msdn... albo poczytac co to jest overlay.

0

hmm obawiam sie ze bedziesz musial wykorzystac pare technik ktore sa uzywane przez kompilatory. Tworzylem cos podobnego ale plikiem koncowym byl com (0 struktury wewnacz plikowej). Polecam zapoznanie sie z dokladna budowa pliku EXE PE. Przyda ci sie tez bardzo dobra znajomosc assemblera poniewaz funkcje zapisywac musisz jako ciag bajtow (hex) ale zeby dostac w swoje rece taki ciag najlepiej skompilowac programik ktory cos robi a potem przy uzyciu jakiegos hexedytora albo najlepiej hexedytora i Debugera w jednym (np OllyDBG) przeanalizowac jak to wyglada od "zrodla". Jezeli bedzie potrzebne moge przepisac strukture pliku EXE PE ... chyba gdzies ja mialem zapisana :)

0

Może te programy generują kod w asmie i używają jakiegoś asemblera??

0

Może te programy generują kod w asmie
hehe, to właśnie robi kompilator, tyle że rozkazy nie są zapisane symbolami słownymi, a już konkretnymi liczbami (rozkazami) im odpowidającymi.

Wracając do problemu, można zrobić coś jak flash, obiekty wektorowe, animacje oparte na kolejnych klatkach, akcje przypisane różnym zdarzeniom. Do odpalania jeden exec, a to co ma odpalić można trzymać zrówno w zasobch (lub gdzieś w exe'ku) jak i w osobnym pliku, zależy czy chcesz mieć samodzielnego exe'ka czy nie koniecznie. Można też użyć jakiś prosty interpreter skryptu. Wszystko zależy od przeznaczenia tych aplikacji. Jeśli mają to być aplikacje ogólego przeznaczenia, to lepiej pozostać przy kompilatorze.

1 użytkowników online, w tym zalogowanych: 0, gości: 1