क्या कमांड लाइन से बाइनरी फ़ाइल को संपादित करने के लिए विंडोज़ में कोई तरीका है? यानी एक तरीका है जिसे बैच फ़ाइल में लिखा जा सकता है?क्या विंडोज कमांड लाइन का उपयोग कर बाइनरी फाइल को संपादित करना संभव है?
मैं एक मौजूदा फ़ाइल में एक ज्ञात स्थिति पर, एक बाइट संपादित करने में सक्षम होना चाहता हूं।
यह मौजूदा प्रश्न [1] हल हो गया है, लेकिन यह एक लिनक्स समाधान है। मैं विंडोज के लिए कुछ इसी तरह की तलाश में हूं।
पृष्ठभूमि
वहाँ GTA 1 में एक बग जब भाप से डाउनलोड किया जिससे बचाने के खेल डेटा फ़ाइल बाहर निकलने पर दूषित हो जाता है है। नतीजतन, खेल पहली बार ठीक खेला जा सकता है लेकिन बाद में दुर्घटनाग्रस्त हो सकता है। यह पता चला है कि यह फ़ाइल में 5 वें बाइट को बदलकर तय किया जा सकता है (यानी पता 0x04 पर बाइट) x00 से x06 [2] तक।
मैं आसानी से अजगर में ऐसा कर सकते हैं, जैसे:
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)
आदर्श रूप में, हालांकि मैं नहीं बल्कि जो निम्न करता है एक बैच कार्य में ऐसा चाहते हैं:
- फिक्स डेटा फ़ाइल
- जीटीए
मैं कुछ ऐसा कर सकता हूं जो मेरे लिए काम करता है (पायथन का उपयोग करके), लेकिन वह नहीं होगा यादृच्छिक अन्य लोगों की सहायता करें जिनके पास पायथन नहीं है (हाँ मुझे पता है कि & इंस्टॉल करना आसान है, लेकिन फिर भी)। इसी प्रकार, एक फ्रीवेयर उपलब्ध है जो ऐसा करने का दावा करता है, लेकिन मैं अपने पीसी पर एक यादृच्छिक .exe नहीं चलाना चाहता, और मुझे नहीं लगता कि किसी और को भी चाहिए। इसी कारण से, मैं एक बैच फ़ाइल प्रस्तुत करना चाहता हूं, कि लोग निरीक्षण कर सकें, और - यदि वे इसके साथ खुश हैं - स्वयं के लिए दौड़ें।
आपकी मदद के लिए धन्यवाद!
[1] CLI: Write byte at address (hexedit/modify binary from the command line)
[2] http://forums.steampowered.com/forums/showthread.php?t=1597746
[संपादित करें] अजगर स्क्रिप्ट अप फिक्स्ड, के रूप में मैंने पाया यह रूप में है काम नहीं किया (file.read() अपरिवर्तनीय ऑब्जेक्ट , इसलिए आप केवल मानों में से एक को अपडेट नहीं कर सकते हैं)।
लेकिन जो पुष्टि करता है कि * SPLITS.EXE * संशोधित नहीं है? यह एक यादृच्छिक .exe भी हो सकता है। – ComFreek
जैसा कि कॉमफ्रीक कहते हैं, अगर मैं एक यादृच्छिक exe चलाने में खुश था, तो मैं केवल GTALauncher.exe का उपयोग करता हूं जो फ़ाइल को ठीक करता है और जीटीए लॉन्च करता है :-) – sam
ठीक है, यह देखते हुए कि डॉस में ऐसा करने का कोई तरीका नहीं है (कम से कम, नहीं जिस तरह से मैंने कभी खोजा है) आपको स्क्रिप्ट के साथ एक सहायक उपयोगिता भेजनी होगी - या सिर्फ समाधान को .exe के रूप में पैकेज करें और उसे शिप करें। मुझे लगता है कि अंतर यह है कि यदि आप किसी स्क्रिप्ट के साथ एक स्वतंत्र रूप से उपलब्ध तृतीय-पक्ष उपयोगिता भेजते हैं, तो इसकी तुलना अन्य स्रोतों (उम्मीदपूर्वक सम्मानित लोगों) से समान उपयोगिता के विरुद्ध की जा सकती है जबकि एक कस्टम .exe पैकेज नहीं हो सकता है। –