Załóżmy, że mam gotowy plik exe i chcę żeby podczas jego uruchamiania wykonywał dodatkową czynność(funkcję) napisaną w C++Builderze.
Przykład aby objaśnić sytuację:
Mam plik exe(kalkulator.exe - bez kodu źródłowego) i drugi plik exe(skompilowany w builderze), otwieram oba pliki w notatniku i kopiuję wszystko z drugiego programu do pierwszego(logiczne że nie działa ale pokazuję sytuację)
Czy da się zrobić że skompiluję samą funkcję i zadziała gdy wkleję ją na koniec pliku exe??
PS1 - to mój pierwszy post
PS2 - korzystam z darmowego Broland C++Builder</cpp>
Wykorzystaj dll, stworz jedna funkcję, ktora we wszystkich dołaczanych do twojego programu dll-kach bedzie miala takie same parametry nazwe i typ zwracany. Uzyj jej do zwocenia wiadomosci na temat innych funkcji zawartych w tej dll-ce.
Grzebanie bezposredio w kompilacie jest owszem mozliwe, ale nie ma chyba takiego automatycznie dzialającego programu... Nadal jest to typowa ręczna robota, pozostająca domeną krakerów.
to się nazywa overcoding. Ale do tego potrzebna jest straszliwa wieda o programach pod winde, budowie naglowka PE, asm i paru innych rzeczach. Jak rowniez cholerne doswiadczenie :)
to się nazywa overcoding. Ale do tego potrzebna jest straszliwa wieda o programach pod winde, budowie naglowka PE, asm i paru innych rzeczach. Jak rowniez cholerne doswiadczenie :)
wybacz slownictwo ale pieprzysz glupoty - zbindowanie dwoch programow jest bardzo proste.
Skoro to takie proste to odpowiedziałbyś na pytanie, a nie mówił że proste i nie piszesz
Skoro to takie proste to napisz jak to zrobić
Dodanie na koniec aplikacji funkcji/procedury w flat binary image jest proste. Wystarczy wywołać adres w pamięci końca orginalnego programu.
Nie wiem czemu, ale tylko w assemblerze jest to możliwe, choć każdy inny język programowania jest na niego tłumaczony.
Przykład:
W C nie zadziała:
void* a;
a();
A w assemblerze zadziała:
call a
Gdzie a to wskaźnik.
Już John von Neumann miał wspaniały pomysł - unifikację kodu z danymi, lecz prawie nikt z tego nie korzysta.
Wyjątek - systemy operacyjne, i napisany przeze mnie program do obsługi flat binary image 32bit w MSWindows (wiem, że korzystam z najgorszego kompletnego 32bitOS).
wybacz slownictwo ale pieprzysz glupoty - zbindowanie dwoch programow jest bardzo proste.
zbindowanie tego owszem, ale z tego co ja zrozumiałem, to on chce wstawić swoją funkcję do gotowego programu. Wstawić sobie może, ale jak chce żeby mogła być odpalana np z menu albo po kliknięciu w jakiś button to musi się chłopak niemało namęczyć.
najpierw bym radzil poczytac sobie o naglowku pe i strukturach pliku. potem ofcoz mozna zrobic taki cfancyk ze robisz sobie nowa sekcje w pliku i umieszczasz w niej dodatkowy kodzik... ofcoz musisz zmienic oep na adres do twojego kodu... poza tym przydalaby sie podreczna tablica importow w ktorej zapisane beda odwolania do funkcje api z ktorych bedziesz korzystal... :]
Już piszę bo chyba nie do końca rozumiecie choć ostatnie post o tym mówi. Nie zależy mi by funkcja(lub fragment kodu) były uruchamiane z menu start lub czegoś innego ale przy uruchomieniu programu.
PS. Czy można zdekompilować aplikację do C++ ??
PS2. Czy każda aplikacja może być zdekompilowana do assemblera?
to znaczy cyber kid dobrze myśli !