Wątek przeniesiony 2020-08-25 15:10 z Algorytmy i struktury danych przez somekind.

plik exe - dekompilacja > kosmetyczna zmiana tekstu > kompilacja

0

Witam Szanownych Forumowiczów :)

Bardzo proszę o pomoc zorientowanych w temacie :)

W pliku exe będącym głównym elementem oprogramowania potrzebuję zmienić kilkadziesiąt znaków tekstu (adres zamieszkania).
Tyle co zdołałem wyczytać, pliki exe powstają zazwyczaj w wyniku kompilacji, więc żeby zmienić ich zawartość potrzebny jest dekompilator oraz kompilator do ponownego wygenerowania zmienionego pliku exe. Trzeba również wiedzieć w jakim języku został program napisany i użyć odpowiednich narzędzi do wykonania powyższych czynności.

Nie wiem jak zabrać się za to, niestety. Czy mogę prosić o Waszą podpowiedź w tej kwestii, aby pozyskać odpowiednią wiedzę i spróbować to zrobić?

Z góry dziękuję za każdą pomoc i pozdrawiam :)

PS
Jeżeli niewłaściwy dział, z góry przepraszam i proszę o przeniesienie w odpowiednie miejsce.

4

Zmiana stringów nie wymaga dekompilacji, ot zwykły hexedytor wystarczy, o ile twój nowy tekst "się zmieści" tzn jest krótszy od istniejącego. Jakby to było coś napisane w jakimś Pythonie/Javie/C# to faktycznie można by zdekompilować i skompilować ponownie, ale jeśli to natywna binarka to tak prosto nie ma. Można ją co najwyżej patchować, ale też w ramach istniejącego "miejsca"

1

Jesteś pewny, że te dane są wkompilowane w exe? To jest jakieś ogólnie dostępne narzędzie czy jakiś program dedykowany?

1
Shalom napisał(a):

Zmiana stringów nie wymaga dekompilacji, ot zwykły hexedytor wystarczy, o ile twój nowy tekst "się zmieści" tzn jest krótszy od istniejącego. Jakby to było coś napisane w jakimś Pythonie/Javie/C# to faktycznie można by zdekompilować i skompilować ponownie, ale jeśli to natywna binarka to tak prosto nie ma. Można ją co najwyżej patchować, ale też w ramach istniejącego "miejsca"

Wielkie dzięki. Przy okazji dowiedziałem się czegoś nowego :)

Tomek Pycia napisał(a):

Jesteś pewny, że te dane są wkompilowane w exe? To jest jakieś ogólnie dostępne narzędzie czy jakiś program dedykowany?

Jestem pewny, a teraz to już byłem pewny. To program dedykowany.
Dzięki za zainteresowanie :)

vpiotr napisał(a):

Sprobuj tym:
https://www.thewindowsclub.com/modify-exe-res-file-windows-resource-hacker

Skorzystałem z tego narzędzia i zrobiłem to co chciałem. Bardzo dziękuję Drogi vpiotr

0

Witam ponownie :)

Mam jeszcze jeden problem, ale ponieważ nie wiedziałem do jakiego działu wstawić temat, postanowiłem, że będę kontynuował ten.

Mam zdjęcie w formacie BMP.
Podglądam kod zdjęcia zwykłym notatnikiem i widzę coś takiego jak w załączniku - wycinek-foto1.jpg.
Podglądam kod tego samego zdjęcia programem Resource Hacker i widzę coś takiego jak w załączniku - wycinek-foto2.jpg

Potrzebuję podmienić to zdjęcie za pomocą Resource Hacker, tak więc domyślam się, że potrzebuję kod zdjęcia zmienić / konwertować do postaci takiej jak - wycinek-foto2.jpg.

Mogę prosić o pomoc i informację jak mogę to uzyskać :)

Z góry serdecznie dziękuję :)

1

Resource hacker pokazuje ci dane hex-encoded po prostu, ale to kwestia ich wyświetlania. Raczej "surowe" dane są po prostu binarne i nie musisz nic "konwertować".

Moja rada: w ogóle nie przeglądać plików binarnych edytorem tekstu bo nie ma to sensu. Użyj hexedytora.

0

Wielkie dzięki za szybką odpowiedź :)

Shalom napisał(a):

Resource hacker pokazuje ci dane hex-encoded po prostu, ale to kwestia ich wyświetlania. Raczej "surowe" dane są po prostu binarne i nie musisz nic "konwertować".

Moja rada: w ogóle nie przeglądać plików binarnych edytorem tekstu bo nie ma to sensu. Użyj hexedytora.

Pobrałem HxD, otworzyłem w nim to samo zdjęcie, ale ten kod wygląda inaczej niż w załączniku - wycinek-foto2.jpg.
Screen-a załączam poniżej.

0

Gdzie i jako co jest to "logo" w resource hackerze które chcesz podmienić? To co pokazałeś to był początek tego pliku który chcesz podmienić?

1
Grzegorz_n napisał(a):

Wielkie dzięki za szybką odpowiedź :)

Shalom napisał(a):

Resource hacker pokazuje ci dane hex-encoded po prostu, ale to kwestia ich wyświetlania. Raczej "surowe" dane są po prostu binarne i nie musisz nic "konwertować".

Moja rada: w ogóle nie przeglądać plików binarnych edytorem tekstu bo nie ma to sensu. Użyj hexedytora.

Pobrałem HxD, otworzyłem w nim to samo zdjęcie, ale ten kod wygląda inaczej niż w załączniku - wycinek-foto2.jpg.
Screen-a załączam poniżej.

Ale pokrywa się z tym, co miałeś w notatniku. Nie wiem jak Resource Hacker traktuje pliki BMP, ale ewidentnie nie jest do nich stworzony.

1

Najpierw wyjaśnij, co chcesz podmienić. Zdjęcie w pliku . exe? Po co otwierasz bmp w edytorze tekstu i co ma ci to dać?

0

Dzięki Wam Wszystkim za zaangażowanie :)

Jeszcze raz od początku.
Mam plik exe po uruchomieniu którego pokazuje mi się menu (do zarządzania całym programem), a obok logotyp który potrzebuję podmienić na inny.
Ten program używa tego samego logotypu jeszcze w innych plikach, ale są to już plik zewnętrzne, które pobierają sobie logotyp w postaci pliku graficznego z rozszerzeniem BMP, czyli nie są na stałe "zaszyte" w tych plikach, jak to jest w przypadku pliku exe o którym napisałem na wstępie.

Logotyp w pliku exe jak i w plikach zewnętrznych wygląda identycznie, to też pomyślałem, że podejrzę edytorem kod pliku BMP, skopiuję go i wkleję w miejscu dotychczasowego logotypu w pliku exe. Chciałem to uczynić za pomocą programu Resource Hacker, gdyż po otwarciu nim mojego pliku exe, znalazłem miejsce gdzie logotyp jest zapisany w postaci takiej jak na załączniku - wycinek-foto2.jpg. Oczywiście jest to tylko wycinek całego kodu, bo chodziło mi o pokazanie formatu w jakim jest on zapisany w pliku exe, a widocznym w za pomocą Resource Hacker. Upewniłem się również, czy da się podmienić ten logotyp, usuwając cały zapis o zdjęciu logotypu i po usunięciu kodu logotyp po prostu zniknął. Tak więc idąc tym tokiem rozumowania wyszedłem z założenia, że skoro będę miał kod nowego obrazka z logotypem, oczywiście w tym samym formacie i go wkleję w w to samo miejsce, to osiągnę cel. To dlatego próbowałem podejrzeć kod w zwykłym notatniku, a potem za pomocą HxD, żeby sprawdzić format kodu obrazka.

Oczywiście to co napisałem powyżej to jedynie moja teoria, czyli teoria człowieka, który nie zna się na programowaniu, a chciał sobie samodzielnie poradzić z prostą rzeczą, a przynajmniej wydawało mi się, że z prostą bo chyba jednak tak nie jest.

Napiszę jeszcze w którym miejscu znajduje się zaszyty w exe logotyp, widziany przez Resource Hacker:

RCData
TFRMMAIN : 0
object img1: TImage
Left = 20
Top = 8
Width = 273
Height = 81
Picture.Data = {
0954506E67496D61676589504E470D0A1A0A0000000D494844520000010A0000
0043080600000064EB4BD90000301C4944415478DAED5D099C8ED5F73F63EC8C
5DD977624296245159932C492221D24245964A524488C896A894A5886CD90A65
8968252A3B5953F67D9919EBFFFB7DCE7DE75DE67D9FE79916EAFF7BCEE7F37E
5078E4D17F8F98A73B191BABBF4E1E5078E4D17F8F1E97BFA01DFC19F280C223
8FFE7B4413E8BB57B3420F283CF2E8BF471E5078E491478E744D8082B9849371
22EE91471E5D63A29BD6D0AB59218182B768D211E36F4A1BEB91471EFD4364B9
C0E0C32B9AE75ECD8AFF0F1C5C32091B04F55F0000000049454E44AE426082}
end

To jest jedynie wycinek całego kodu, który liczy sobie dokładnie 378 takich linijek Liczyłem na to, że gdy miedzy klamrami { wkleję kod nowego obrazka z logotypem }, to po prostu tyle wystarczy.

Myślę, że teraz wyjaśniłem wszystko jak należy :)

0

To Delphi, ma jakiś tam swój sposób kodowania bitmap w zasobach. Przekopiować zawartości pliku .bmp tu nie możesz, zresztą widzisz sam że to w zasobach do dane tekstowe, a nie binarne.

Najprościej będzie użyć Delphi, wstawić do okna TImage i bitmapę do niego i stamtąd wziąć dane, które zostały wygenerowane. Albo może są inne edytory niż ResourceHacker, które pozwalają na edycję zasobów Delphi (prawdopodobnie są)

0
Meini napisał(a):

Najprościej będzie użyć Delphi, wstawić do okna TImage i bitmapę do niego i stamtąd wziąć dane, które zostały wygenerowane

O kurcze... to ja nie wiem jak to zrobić. Kompletnie nic mi to nie mówi, co napisałeś powyżej.
Znajdę jakiś poradnik w sieci, a jeżeli tak to gdzie szukać?

Meini napisał(a):

Albo może są inne edytory niż ResourceHacker, które pozwalają na edycję zasobów Delphi (prawdopodobnie są)

Spróbuję poszukać, ale też nie wiem czy znajdę odpowiednie narzędzie. Jak tego szukać?

0

Nie no nie róbcie sobie jaj ludzie xD
Zdekoduj tego hexa i widać że to jest PNG a nie BMP po prostu. Jest tylko poprzedzony jakimś prefixem \tTPngImage ale dalej to już jest goły plik PNG i nic więcej.
Czyli bierzesz sobie obrazek PNG, kopiujesz hexedytorem zawartość i wklejasz tam dodając jako prefix to 0954506E67496D616765 i voila.
Tylko żeby ci się rozmiary zgadzały.

0

Mam z tym problem. Ustalmy szczegóły proszę.

Shalom napisał(a):

Czyli bierzesz sobie obrazek PNG, kopiujesz hexedytorem zawartość i wklejasz tam dodając jako prefix to 0954506E67496D616765 i voila.

Uruchamiam HxD.
Wczytuje plik PNG za pomocą: Menu plik > Otwórz
Pokazuje mi się zawartość w liczbach szesnastkowych, którą kopiuję, a następnie wklejam w miejsce poprzedniego obrazka poprzedzając go prefixem: 0954506E67496D616765

Stary kod nie miał spacji między znakami, a nowy ma spację co 2 znaki.
Stary kod układał mi się tak jak wyżej wiersz po wierszu i w prawie regularnej kolumnie, a nowy rozłazi się w cały świat.
Czy te dwie rzeczy mają znaczenie?

Shalom napisał(a):

Tylko żeby ci się rozmiary zgadzały.

Czy chodzi o rozmiar w bajtach, czy o ilość znaków?
Jeżeli chodzi o bajty, to zrobiłem mniejszy, bo trudno zrobić taki sam. Mniejszy może być?
Jak o ilość znaków jak mam zrobić, żeby był taki sam, bo domyślam się, że mniejszy może być.

Mimo wszystko nie chce się to skompilować.

0

AAAA czy ty rozumiesz jaka jest różnica między bajtami a ich hexową reprezentacja? HxD pozwala kopiować hex-enkodowane bajty, ale pozwala tez kopiować dane "surowe" jak kopiujesz z tego okienka po prawej i tak masz właśnie zrobić.
Nie wiem czy resource hacker wspiera wklejanie hexenkodowanych bajtów czy surowych, musisz to sobie rozkminić. A spacje możesz pousuwać...

Chodzi o wymiary obrazka, widzisz że ta struktura ma wpisane też wymiary więc muszą sie zgodzić albo trzeba je poprawić.

0

Zajrzyj tu: http://www.restuner.com/howto-edit-Delphi-forms-DFM.htm będzie łatwiej - masz też przykład obrazka jak podmienić

0

Udało się - podmieniłem logotyp na nowy :)
Trochę wcześniej, tzn. jak już dostałem konkretna instrukcję od Shalom, po wklejeniu kodu i dopisaniu prefixu, nie mogłem skompilować pliku. Doszukałem się problemu polegającego na tym, że każda jedna linijka wklejonego kodu była za długa. Dopiero jak linijkę z kodem skróciłem o połowę, czyli drugą połowę przeniosłem do kolejnego wiersza i tak zrobiłem z pozostałymi, to plik dał się skompilować i odpalił z nowym logotypem.

Meini napisał(a):

Zajrzyj tu: http://www.restuner.com/howto-edit-Delphi-forms-DFM.htm będzie łatwiej - masz też przykład obrazka jak podmienić

Bardzo dziękuję za link:)
Pomimo tego, że już wcześniej poradziłem sobie, chętnie zerknę na ten programik i porównam z ResourceHacker. Pewnie kiedyś znowu się przyda takie lub inne narzędzie.

Serdecznie dziękuję Wszystkim Forumowiczom, którzy poświęcili swój czas i chcieli mi pomóc :)
Szczególne podziękowania składam na ręce Shalom :)
Pozdrawiam :)

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