Resource Cracker

Resource Cracker to darmowy program dla Windows do podglądu i edycji zasobów w plikach wykonywalnych oraz w samodzielnych plikach zasobów. Otwórz plik, wybierz zasób i obejrzyj go jako podgląd, edytor strukturalny albo surowe bajty.

Otwórz moduł i edytuj zasoby

Rodzaj pliku jest rozpoznawany po zawartości, nie tylko po rozszerzeniu. Kilka plików może być otwartych jednocześnie. Każdy plik to karta. Przeciągnij kartę, żeby zmienić kolejność. Środkowy przycisk myszy albo Ctrl+W zamyka kartę.

Lewy panel to drzewo zasobów. Typy są rodzicami. Zasób jest pokazany jako nazwa i język, na przykład 1 [1033]. Typ oznaczony * ma pod sobą zmieniony albo nowy zasób. Nowy zasób jest rysowany na zielono.

Prawy panel ma trzy widoki zaznaczenia: Podgląd, Edytor i Hex edytor. Ctrl+1 do Ctrl+4 przełącza otwarte widoki. Te same operacje dodawania, zastępowania, usuwania i zapisu są dostępne z wiersza poleceń.

Obsługiwane pliki

Upuść plik na okno albo użyj Ctrl+O. Upuść folder, żeby przeszukać go w poszukiwaniu modułów. Plik, Otwórz przy użyciu ładowarki Windows pokazuje moduł tak, jak widzi go ładowarka Windows. Ten widok jest tylko do odczytu.

Format Rozszerzenia Uwagi
PE32 i PE64+ .exe .dll .ocx .cpl .scr .sys .drv .ax .efi Edycja i zapis.
NE (16-bit) .exe .dll .drv Zapis przepisuje tablicę zasobów i bajty zasobów. Nie przesuwa segmentów programu. Zapis jest odrzucany, a plik zostaje bez zmian, gdy nowa tablica nachodziłaby na segment albo inny zasób, zasób jest większy niż jeden wpis NE, nazwa jest dłuższa niż 255 bajtów, identyfikator całkowity jest powyżej 32767, zasób został obcięty przy odczycie albo jeden typ ma więcej zasobów, niż mieści lista typów NE.
.NET IL (CIL) .exe .dll Zasoby Win32. Węzeł Zasoby zarządzane wymienia zasoby zarządzane. To nie jest zasób Win32, który się przepisuje.
.NET ReadyToRun .exe .dll Edycja katalogu zasobów Win32.
.NET Native AOT .exe .dll Edycja katalogu zasobów Win32.
C++/CLI (IJW) .exe .dll Obrazy mixed-mode. Zasoby Win32 edytuje się tak jak w natywnym PE.
Metadane Windows .winmd Pliki WinMD, które mają katalog zasobów.
Netmodule .netmodule Samodzielne moduły .NET.
Pliki językowe .mui .mun Zasoby Multilingual User Interface.
Skompilowane zasoby .res Otwieranie, edycja i zapis skompilowanego pliku zasobów.
Skrypt zasobów .rc Edycja w oknie. Kompilacja do .res z wiersza poleceń.
Folder Folder upuszczony na okno jest przeszukiwany w poszukiwaniu modułów.

Ikony, kursory i bitmapy

Podgląd obrazu. Malowanie w edytorze obrazów. Eksport jako PNG, BMP, JPEG, GIF, TIFF albo WebP. Podmiana obrazu przez upuszczenie pliku na podgląd.

Grupy ikon i kursorów są właścicielami pojedynczych obrazów. Edycja grupy aktualizuje te obrazy razem. W masce wiersza poleceń ICON oznacza grupę ikon, a CURSOR grupę kursorów, nie pojedynczy obraz.

Grupa ikon eksportuje się jako .ico. Grupa kursorów jako .cur.

Podgląd dialogu

Po zaznaczeniu dialogu podgląd rysuje go z szablonu zasobu: kontrolki, podpisy i style.

Ten sam dialog można otworzyć w projektancie wizualnym albo jako skrypt .rc. Ctrl+1, Ctrl+2 i Ctrl+3 przełączają widoki otwarte dla zaznaczenia.

Projektant dialogów

Klawisze strzałek przesuwają zaznaczone kontrolki. Ctrl przesuwa o jedną jednostkę dialogową. Shift zmienia rozmiar. Ctrl+klik albo Shift+klik dodaje do zaznaczenia. Przeciągnięcie po pustym miejscu rysuje ramkę zaznaczenia.

Del usuwa zaznaczone kontrolki. Ctrl+C, Ctrl+X i Ctrl+V kopiują, wycinają i wklejają. Esc czyści zaznaczenie i wychodzi z trybu kolejności tabulacji.

Formularze Delphi VCL

Delphi trzyma formularze VCL jako zasoby w stylu dialogu. Otwórz plik wykonywalny, zaznacz formularz i edytuj go w projektancie albo jako skrypt, tak samo jak standardowe RT_DIALOG.

Menu, łańcuchy, akceleratory, wersja

Menu. Podgląd menu. Edycja pozycji w edytorze menu albo jako skrypt. Alt+Up i Alt+Down przesuwają pozycję. Alt+Left zmniejsza wcięcie. Alt+Right zwiększa wcięcie. Insert dodaje pozycję. Del ją usuwa.

Tabela łańcuchów. Blok ma szesnaście łańcuchów. Edycja w siatce.

Akceleratory. Edycja tabeli skrótów.

Wersja. Edycja stałych pól VS_FIXEDFILEINFO i tabel łańcuchów (komentarz, firma, wersja pliku, nazwa produktu i pozostałe).

Edytor manifestu

RT_MANIFEST jest pokazany jako XML. Dokument edytuje się w miejscu. Edytor oznacza typowe problemy w tożsamości zestawu, sekcji zgodności i żądanym poziomie wykonania.

16-bitowe pliki NE

16-bitowy New Executable można edytować i zapisać. Zapis przepisuje zasoby w miejscu. Jeśli nowa tablica zasobów albo zasób nie mieści się w formacie NE, zapis się zatrzymuje, a oryginalny plik zostaje bez zmian.

Podgląd i edytory strukturalne obsługują te same typy co w pliku PE: ikony, dialogi, menu, łańcuchy i informacje o wersji.

Hex edytor

Każdy zasób można edytować jako surowe bajty. Ctrl+G przechodzi do offsetu. Insert przełącza wstawianie i nadpisywanie. Bajty w wierszu i grupowanie ustawia się w Narzędzia, Opcje, Hex edytor.

Typy niestandardowe (liczba albo nazwa spoza standardowych typów RT_) są pokazane jako #numer albo jako nazwa typu. Otwierają się w hex edytorze i można je zrzucić jako surowe bajty.

Edycja zasobu jako skrypt .rc

Zasoby, które da się opisać skryptem (dialogi, menu, tabele łańcuchów, akceleratory, informacje o wersji), można edytować jako tekst skryptu zasobów i wyeksportować jako plik .rc.

Widok skryptu i edytor wizualny zapisują ten sam zasób. Użyj tego, w którym zmiana jest krótsza.

Skompilowane pliki .res

Plik .res to katalog zasobów bez nagłówka PE. Otwórz go, edytuj dowolny zasób i zapisz z powrotem. Zasoby można też kopiować między plikiem .res a plikiem wykonywalnym.

Skrypty zasobów

Otwórz skrypt .rc w oknie i edytuj go jako tekst. Z wiersza poleceń -action compile kompiluje plik .rc (-open) do pliku .res (-save). Kompilacja jest używana osobno, nie razem z innymi akcjami, i nie jest krokiem wewnątrz pliku skryptu.

Eksport

Ctrl+E zapisuje zasób w innym formacie, gdy taki format istnieje. Bitmapy, ikony i kursory można zapisać jako PNG, BMP, JPEG, GIF, TIFF albo WebP. Grupę ikon można zapisać jako .ico, a grupę kursorów jako .cur. Zasoby opisane skryptem można zapisać jako skrypt .rc.

Ctrl+D zrzuca zapisane bajty bez zmian. Plik, Eksportuj wszystkie zasoby zapisuje każdy zasób bieżącego pliku. Przeciągnij zasób z drzewa na Eksplorator, żeby go wyeksportować.

Opcje

Narzędzia, Opcje obejmuje język, motyw (Z systemu, Jasny albo Ciemny), kopię .bak przed pierwszym zapisem w sesji, ostatnie pliki, czcionkę edytora, domyślny widok dla każdego typu zasobu, układ hex, dopasowanie obrazu, kolory szachownicy za przezroczystymi obrazami oraz pracę w tle.

Motyw Z systemu podąża za Windows. Zmiana języka obowiązuje po potwierdzeniu opcji.

Ciemny motyw

Jasny, Ciemny albo Z systemu. Z systemu śledzi motyw aplikacji Windows. Drzewo, edytory i widok hex używają tego samego motywu.

Pliki językowe MUI

Pliki .mui i .mun to moduły zawierające same zasoby. Otwórz taki plik i edytuj łańcuchy, dialogi, menu i pozostałe zasoby tak samo jak w głównym pliku binarnym.

F2 zmienia nazwę zasobu albo jego identyfikator języka. Język 0 to Neutralny. Pozostałe języki używają identyfikatora języka Windows, na przykład 1033 dla angielskiego (Stany Zjednoczone).

Obsługiwane typy zasobów

Standardowe typy Win32 są wymienione pod czytelną nazwą i stałą RT_. Plik może też zawierać typ niestandardowy. Dodaje się go przez Akcja, Dodaj zasób z pliku i wpisanie nazwy albo numeru.

Typ Stała Id Edytor
Kursor RT_CURSOR 1 Podgląd, edytor obrazów, eksport
Bitmapa RT_BITMAP 2 Podgląd, edytor obrazów, eksport
Ikona RT_ICON 3 Podgląd, edytor obrazów, eksport
Menu RT_MENU 4 Podgląd, edytor menu, skrypt
Dialog RT_DIALOG 5 Podgląd, projektant dialogów, skrypt
Tabela łańcuchów RT_STRING 6 Siatka łańcuchów. Bloki po 16 łańcuchów
Katalog czcionek RT_FONTDIR 7 Hex edytor, zrzut surowy
Czcionka RT_FONT 8 Hex edytor, zrzut surowy
Akceleratory RT_ACCELERATOR 9 Tabela skrótów
RCData RT_RCDATA 10 Podgląd tekstu albo obrazu, gdy bajty pasują; w przeciwnym razie hex
Tabela komunikatów RT_MESSAGETABLE 11 Odczyt komunikatów
Grupa kursorów RT_GROUP_CURSOR 12 Podgląd każdego obrazu. Eksport jako .cur
Grupa ikon RT_GROUP_ICON 14 Podgląd każdego obrazu. Eksport jako .ico
Wersja RT_VERSION 16 Informacje stałe i tabele łańcuchów
Dołączenie dialogu RT_DLGINCLUDE 17 Podgląd tekstu albo hex
Plug and Play RT_PLUGPLAY 19 Hex edytor, zrzut surowy
VXD RT_VXD 20 Hex edytor, zrzut surowy
Kursor animowany RT_ANICURSOR 21 Podgląd, edytor obrazów
Ikona animowana RT_ANIICON 22 Podgląd, edytor obrazów
HTML RT_HTML 23 Podgląd tekstu albo hex
Manifest RT_MANIFEST 24 Edytor XML ze sprawdzeniem typowych problemów
Typ niestandardowy nazwa albo numer Hex edytor i zrzut surowy

Do czego to służy

Inżynieria wsteczna

Inżynieria wsteczna

Przejdź drzewo zasobów PE, podejrzyj dialog albo ikonę, albo zrzut surowych bajtów. Ctrl+F szuka w bieżącym widoku. F3 znajduje następne trafienie. Alt+Left i Alt+Right cofają i przechodzą dalej po zaznaczonych zasobach.

Lokalizacja

Lokalizacja

Edytuj tabele łańcuchów, dialogi i menu, a potem zmień identyfikator języka klawiszem F2 albo poleceniem changelanguage. Otwórz pasujący plik .mui, gdy łańcuchy leżą poza głównym plikiem binarnym.

Instalatory

Instalatory i pakowanie

Wyodrębnij grupę ikon, podmień bitmapę albo usuń blok wersji, a potem zapisz plik wykonywalny. Pierwszy zapis w sesji może skopiować oryginał do pliku .bak obok niego.

Win32 i Delphi

Win32 i Delphi

Standardowe dialogi i formularze Delphi VCL otwierają się w projektancie. Przesuwaj i zmieniaj rozmiar kontrolek w jednostkach dialogowych albo edytuj ten sam szablon jako skrypt.

Wiersz poleceń

Skrypty budowania

Dowolny przełącznik uruchamia tryb wsadowy i nie otwiera okna. Proces zwraca 0 przy sukcesie i 1, gdy polecenie się nie powiedzie. Ścieżka bez przełączników otwiera ten plik w oknie.

Skrypt zasobów

Skrypty zasobów

Edytuj zasób jako tekst .rc albo skompiluj skrypt do .res przez -action compile. Dodanie z innego PE, .res albo .rc kopiuje zasoby pasujące do maski.

Obrazy

Ikony i bitmapy

Maluj, podmieniaj przez upuszczenie i eksportuj PNG, BMP, JPEG, GIF, TIFF, WebP, .ico oraz .cur. Ctrl++, Ctrl+- i Ctrl+0 zmieniają powiększenie. Ctrl+kółko powiększa obraz.

Manifest

Manifest i wersja

Edytuj manifest aplikacji jako XML. Edytuj VS_FIXEDFILEINFO i tabele łańcuchów wersji bez łatki w hexie.

Wiersz poleceń

Sama nazwa pliku otwiera okno. Dowolny przełącznik uruchamia tryb wsadowy i nie otwiera okna. Przełącznik zaczyna się od - albo /. Nazwę można skrócić, dopóki zostaje jednoznaczna, więc -o to -open, a -a to -action. Wartość podaje się jako następny argument albo po = lub :.

-open jest wymagane, z wyjątkiem -help, które nie otwiera pliku. -save jest wymagane, gdy polecenie zmienia plik. Zapis na tę samą ścieżkę aktualizuje plik w miejscu. Inna ścieżka -save zapisuje kopię.

Gdy pominiesz -log, komunikaty trafiają do Resource Cracker.log w bieżącym katalogu. CON wypisuje je na konsolę. NUL nie wypisuje nic.

Maska to Type,Name,Language. Pusta część pasuje do każdej wartości. Przecinki są wymagane, gdy występuje późniejsza część. Typ może być liczbą, nazwą RT_ albo słowem takim jak BITMAP, ICON, DIALOG, VERSION albo MANIFEST.

"Resource Cracker.exe" -open app.exe -action extract -mask ICON -save C:\out

Zapisuje każdą grupę ikon. -save jest folderem, gdy pasuje więcej niż jeden zasób. Gdy pasuje jeden zasób, plikiem docelowym jest -resource albo -save.

"Resource Cracker.exe" -open app.exe -resource logo.png -action addoverwrite -mask BITMAP,1,1033 -save app.exe

add kończy się błędem, gdy ten typ, nazwa i język już istnieją. addskip zostawia istniejący zasób bez zmian. addoverwrite go zastępuje. modify zastępuje istniejący zasób i pomija go, gdy go nie ma. Dodanie jednego zwykłego pliku wymaga typu i nazwy w masce.

"Resource Cracker.exe" -open app.exe -action delete -mask VERSION -save app-noversion.exe

delete usuwa każdy zasób pasujący do maski. Pusta część maski pasuje do każdej wartości tej części.

"Resource Cracker.exe" -open script.rc -action compile -save script.res

Kompilacja jest używana osobno. Nie łączy się jej z innymi akcjami i nie jest poleceniem wewnątrz pliku skryptu.

"Resource Cracker.exe" -open app.exe -action changelanguage(1033) -mask DIALOG,100, -save app.exe -log CON

changelanguage(n) ustawia identyfikator języka każdego trafienia. Końcowy przecinek zostawia część języka pustą, więc aktualizowany jest każdy język dialogu 100. -log CON wypisuje dziennik na konsolę, z której uruchomiono program.

"Resource Cracker.exe" -script commands.txt
[FILENAMES]
Open=C:\in\app.exe
Save=C:\out\app.exe
Log=C:\out\app.log

[COMMANDS]
-add logo.png, BITMAP,1,1033
-addskip extra.res, ,,
-addoverwrite picture.ico, ICON,1,0
-modify note.txt, RCDATA,NOTE,0
-extract C:\out\icons, ICON
-delete VERSION
-changelanguage(1033) DIALOG,100,

Wiersze zaczynające się od // są komentarzami, poza tekstem w cudzysłowie. Open można zapisać jako Exe. Save można zapisać jako SaveAs. Open jest wymagane. Save jest wymagane, gdy polecenie zmienia plik. Skrypt musi mieć co najmniej jedno polecenie.

Akcje

Akcja Skutek
add Dodaje zasób. Kończy się błędem, gdy ten typ, nazwa i język już istnieją.
addskip Dodaje go albo zostawia istniejący bez zmian.
addoverwrite Dodaje go albo zastępuje istniejący.
modify Zastępuje istniejący zasób. Pomija go, gdy go nie ma.
delete Usuwa każdy zasób pasujący do maski.
extract Zapisuje pasujące zasoby. Celem jest plik albo folder, gdy pasuje więcej niż jeden.
changelanguage(n) Ustawia identyfikator języka każdego trafienia.
compile Kompiluje skrypt .rc do pliku .res. Używana osobno.

Pytania?

Jeśli chcesz zapytać o Resource Cracker, albo coś jest niejasne, napisz do mnie.