Nie pamiętam hasła

» Wyszukiwarka

» Kategorie

» Multiprofile

» Kategoria: Internet i Komputery / Tricki i Porady

Głosuj na tak 0 Głosuj na nie
pobierz

Jak napisać program, który edytuje zasoby w jakimś pliku EXE?

Damian Daszkiewicz 14.04.2007, czytano 9,730 razy, pobrano kod HTML 4 razy, komentarzy 0.

[...] Inni z kolei chcieliby napisać pseudo kompilator, który by generował plik EXE (skompilowany wcześniej w jakimś znanym nam języku programowania) z dodanym do tego pliku EXE jakimś kodem. Tak działają różne programy konwertujące np. pliki MP3 do plików EXE które mają za zadanie odtwarzać muzykę. Pewnym problemem jest właśnie podmiana zasobu w dowolnym pliku wykonywalnym [...]

W swojej książce Vademecum Hakera. Edycja plików binarnych dość dokładnie opisałem program Resource Hacker. Program ten potrafi edytować zasoby w pliku EXE (np. można podmieniać ikony, bitmapy, napisy itp.). Niektórzy chcieliby napisać własny program podobny do programu Resource Hacker. Inni z kolei chcieliby napisać pseudo kompilator, który by generował plik EXE (skompilowany wcześniej w jakimś znanym nam języku programowania) z dodanym do tego pliku EXE jakimś kodem. Tak działają różne programy konwertujące np. pliki MP3 do plików EXE które mają za zadanie odtwarzać muzykę. Pewnym problemem jest właśnie podmiana zasobu w dowolnym pliku wykonywalnym.

Sam dość długo poszukiwałem rozwiązania tego problemu. A problem jest ciekawy gdyż windowsy z linii NT (tj. XP/200x/NT) posiadają w pliku kernel32.dll odpowiednie funkcje API które wykonują czarną robotę. Natomiast windowsy z linii 9x (95/98/ME) posiadają uboższą wersję pliku kernel32.dll bez owych funkcji API. Na stronie microsoftu znalazłem bibliotekę unicows.dll która zawiera owe funkcje API, ale nie działa ona pod windowsami z lini NT. Dlatego należy stworzyć dla identyczne programy różniące się jedynie deklaracjami funkcji API dla dwóch różnych rodzajów systemów operacyjnych windows. W załączonym programie skorzystałem z kompilacji warunkowej (zmieniając jedną stałą jest tworzony plik dla odpowiedniej wersji systemu operacyjnego). Oczywiście należałoby w owym programie dać jakiś mechanizm kontroli który sprawdzałby czy pod windowsem XP nie został odpalony program w wersji dla Windowsa 9x, ale nie chciałem zaciemniać kodu.

Pobierz przykładowy program napisany w Microsoft Visual Basic 6.0 (120 KB)

W archiwum są dwa programy. Pierwszy (EdytowanyPlik.exe) ma za zadanie wyświetlić zasób o numerze 101 który jest w tym pliku (w programie Resource Hacker znajdziesz ten zasób w gałęzi CUSTOM). Drugi program (EdytorZasobow.exe) prosi użytkownika i wpisanie jakiegoś tekstu i ten tekst wkompilowuje w plik EdytowanyPlik.exe.

Autorem artykułu jest Damian Daszkiewicz

Podobał Ci się ten artykuł? Oceń na TAK lub NIE.    Głosuj na tak   0   Głosuj na nie



Liczba komentarzy: 0

(nie będzie publikowany)

Artykuł został przedrukowany na następujących stronach:

http://www.p-p-i.ovh.org    http://www.portalinformatyczny.pl    http://www.ebookinfo.pl    http://pogotowiepc.wroclaw.pl/