Czy w systemie Windows istnieje sposób edytowania pliku binarnego z wiersza poleceń? tj. sposób, który można zapisać w pliku wsadowym?Czy można edytować plik binarny za pomocą wiersza poleceń systemu Windows?
Chcę móc edytować pojedynczy bajt, w znanej pozycji, w istniejącym pliku.
To istniejące pytanie [1] zostało rozwiązane, ale jest to rozwiązanie dla systemu Linux. Szukam czegoś podobnego w systemie Windows.
Tło
Istnieje bug w GTA 1, gdy pobrać ze Steama przy czym dane zapisać plik-gra zostanie uszkodzona na wyjściu. W wyniku tego gra może być odtwarzana dobrze za pierwszym razem, ale później ulega awarii. Okazuje się, że można to naprawić, zmieniając 5. bajt w pliku (tj. Bajt pod adresem 0x04) z x00 na x06 [2].
mogę to zrobić w Pythonie łatwo, na przykład:
with open("PLAYER_A.DAT", "rb") as f:
bytes = f.read()
bytes = bytes[:4] + '\x06' + bytes[5:]
with open("PLAYER_A.DAT", "wb") as g:
for b in bytes: g.write(b)
Idealnie chociaż wolałbym zrobić to w trybie wsadowym, który wykonuje następujące czynności:
- poprawek plik danych
- uruchamia GTA
Mogę zrobić coś, co działa dla mnie (używając Pythona), ale to by nie pomagaj losowym innym osobom, które nie mają Pythona (tak, wiem, że łatwo jest zainstalować, ale nadal). Podobnie jest dostępny freeware, który twierdzi, że robi to właśnie, ale nie chcę uruchamiać losowego .exe na moim komputerze, i nie sądzę, żeby ktokolwiek inny też. Z tego powodu chciałbym przedstawić plik wsadowy, który ludzie mogą sprawdzić i - jeśli są zadowoleni z tego, co robi - uruchomić dla siebie.
Dzięki za pomoc!
[1] CLI: Write byte at address (hexedit/modify binary from the command line)
[2] http://forums.steampowered.com/forums/showthread.php?t=1597746
[Edycja] Stała się skrypt Pythona, jak okazało się, że nie działa jak jest (file.read() zwraca niezmienny przedmiotu , więc nie możesz po prostu zaktualizować jednej z wartości).
Ale kto sprawdza, * SPLITS.EXE * nie jest modyfikowany? Może to być losowy .exe. – ComFreek
Jak mówi ComFreek, gdybym był szczęśliwy z uruchamianiem losowego exe, po prostu użyłbym GTALauncher.exe, który naprawia plik i uruchamia GTA :-) – sam
No cóż, biorąc pod uwagę, że nie ma sposobu, aby to zrobić w DOS (przynajmniej nie sposób jaki kiedykolwiek odkryłem) będziesz musiał wysłać narzędzie pomocnicze ze skryptem - lub po prostu spakować rozwiązanie jako .exe i wysłać to. Przypuszczam, że różnica polega na tym, że jeśli wysyłasz dowolnie dostępne narzędzie innej firmy wraz ze skryptem, można go porównać z tym samym narzędziem z innych źródeł (na przykład z renomowanymi), podczas gdy niestandardowy pakiet .exe nie może tego zrobić. –