
يحتوي هذا المشروع على أدوات متعددة لتطبيقات وألعاب Mac OS الكلاسيكية للهندسة العكسية.
الأدوات في هذا المشروع هي:
apt-get install zlibg1-dev .)cmake . ثم make .يجب أن يبني هذا المشروع بشكل صحيح على إصدارات حديثة بما فيه الكفاية من MacOS و Linux.
Resource_dasm هو disassembler لشوكات موارد Mac OS الكلاسيكية. يستخلص الموارد من شوكة الموارد لأي ملف ويحول العديد من تنسيقات موارد Mac OS الكلاسيكية (الصور والأصوات والنص ، إلخ) إلى تنسيقات حديثة.
أمثلة:
قم بتصدير جميع الموارد من ملف معين وتحويلها إلى تنسيقات حديثة (يتم كتابة الإخراج إلى دليل <filename>. OUT ./resource_dasm files/Tesserae ):.
قم بتصدير جميع الموارد من جميع الملفات في مجلد ، وكتابة ملفات الإخراج إلى بنية مجلد موازية في الدليل الحالي: ./resource_dasm "files/Apeiron ƒ/" ./apeiron.out
./resource_dasm "files/MacSki 1.7/MacSki Sounds" ./macski.out --target-type=snd --target-id=1023 --save-raw=yes بتصدير مورد محدد من ملف معين ، بالتنسيقات الحديثة والأصلية:.
تصدير موارد تطبيق PowerPC وتفكيك رمزها: ./resource_dasm "files/Adventures of Billy" ./billy.out ./m68kdasm --pef "files/Adventures of Billy" ./billy.out/dasm.txt
قم بتصدير جميع الموارد من أرشيف موهوك: ./resource_dasm files/Riven/Data/a_Data.MHK ./riven_data_a.out --index-format=mohawk
نظرًا لنسخ الملفات عبر أنواع مختلفة من أنظمة الملفات ، قد يكون لديك شوكة موارد الملف في شوكة البيانات لملف منفصل بدلاً من ذلك. لتصدير الموارد من مثل هذا الملف: ./resource_dasm "windows/Realmz/Data Files/Portraits.rsf" ./portraits.out --data-fork
قم بإنشاء ملف موارد جديد ، مع عدد قليل من النصوص والموارد clut ./resource_dasm --create --add-resource=TEXT:[email protected] --add-resource=TEXT:[email protected] --add-resource=clut:[email protected] output.rsrc
إضافة مورد إلى ملف مورد موجود: ./resource_dasm file.rsrc --add-resource=TEXT:[email protected] output.rsrc
حذف مورد من ملف مورد موجود: ./resource_dasm file.rsrc --delete-resource=TEXT:128 output.rsrc
هذا ليس كل ما يمكن أن يفعله Resource_dasm. قم بتشغيله دون أي وسيطات (أو انظر إلى print_usage() في src/resource_dasm.cc) للحصول على وصف كامل لجميع الخيارات.
يمكن لـ Resource_dasm تحويل أنواع الموارد هذه:
Type | Output format | Notes
------------------------------------------------------------------------
Text resources
bstr | .txt (one file per string) | *3
card | .txt |
finf | .txt (description of contents) |
FCMT | .txt | *3
FONT | .txt (description) and image (one image per glyph) | *E
lstr | .txt | *3
MACS | .txt | *3
minf | .txt | *3
mstr | .txt | *3
mst# | .txt (one file per string) | *3
NFNT | .txt (description) and image (one image per glyph) | *E
PSAP | .txt |
sfnt | .ttf (TrueType font) |
STR | .txt | *3
STR# | .txt (one file per string) | *3
styl | .rtf | *4
TEXT | .txt | *3
TwCS | .txt (one file per string) |
wstr | .txt |
------------------------------------------------------------------------
Image and color resources
actb | image (24-bit) | *E *8
acur | .txt (list of cursor frame IDs) |
cctb | image (24-bit) | *E *8
cicn | image (32-bit and monochrome) | *E
clut | image (24-bit) | *E *8
crsr | image (32-bit and monochrome) | *E *1
CTBL | image (24-bit) | *E
CURS | image (32-bit) | *E *1
dctb | image (24-bit) | *E *8
fctb | image (24-bit) | *E *8
icl4 | image (24 or 32-bit) and .icns | *E *0
icl8 | image (24 or 32-bit) and .icns | *E *0
icm# | image (32-bit) | *E
icm4 | image (24 or 32-bit) | *E *0
icm8 | image (24 or 32-bit) | *E *0
ICN# | image (32-bit) and .icns | *E
icns | image, .png, .jp2, .txt, .plist, .bin, etc. | *E *9
ICON | image (24-bit) | *E
ics# | image (32-bit) and .icns | *E
ics4 | image (24 or 32-bit) and .icns | *E *0
ics8 | image (24 or 32-bit) and .icns | *E *0
kcs# | image (32-bit) | *E
kcs4 | image (24 or 32-bit) | *E *0
kcs8 | image (24 or 32-bit) | *E *0
PAT | image (24-bit; pattern and 8x8 tiling) | *E
PAT# | image (24-bit; pattern and 8x8 tiling for each pattern) | *E
PICT | image (24-bit) or other format | *E *2
pltt | image (24-bit) | *E *8
ppat | image (24-bit; color, color 8x8, mono, mono 8x8) | *E
ppt# | image (24-bit; 4 images as above for each pattern) | *E
SICN | image (24-bit, one per icon) | *E
wctb | image (24-bit) | *E *8
------------------------------------------------------------------------
Sound and sequence resources
.mod | .mod (ProTracker module) |
ALIS | .txt (description of contents) |
cmid | .midi |
csnd | .wav or .mp3 | *5
ecmi | .midi |
emid | .midi |
esnd | .wav or .mp3 | *5
ESnd | .wav or .mp3 | *5
INST | .json | *6
MADH | .madh (PlayerPRO module) |
MADI | .madi (PlayerPRO module) |
MIDI | .midi |
Midi | .midi |
midi | .midi |
SMSD | .wav | *A
snd | .wav or .mp3 | *5
SONG | .json (smssynth) | *6
SOUN | .wav | *A
Tune | .midi | *7
Ysnd | .wav |
------------------------------------------------------------------------
Code resources
ADBS | .txt (68K assembly) | *C
adio | .txt (68K assembly) | *C
AINI | .txt (68K assembly) | *C
atlk | .txt (68K assembly) | *C
boot | .txt (68K assembly) | *C
CDEF | .txt (68K assembly) | *C
cdek | .txt (PPC32 assembly and header description) |
cdev | .txt (68K assembly) | *C
CDRV | .txt (68K assembly) | *C
cfrg | .txt (description of code fragments) | *D
citt | .txt (68K assembly) | *C
clok | .txt (68K assembly) | *C
cmtb | .txt (68K assembly) | *C
cmu! | .txt (68K assembly) | *C
CODE | .txt (68K assembly or import table description) | *B *C
code | .txt (68K assembly) | *C
dcmp | .txt (68K assembly) | *C
dcod | .txt (PPC32 assembly and header description) |
dem | .txt (68K assembly) | *C
dimg | .txt (68K assembly) | *C
drvr | .txt (68K assembly) | *C
DRVR | .txt (68K assembly) | *C
enet | .txt (68K assembly) | *C
epch | .txt (PPC32 assembly) |
expt | .txt (PPC32 assembly) |
FKEY | .txt (68K assembly) | *C
fovr | .txt (PPC32 assembly and header description) |
gcko | .txt (68K assembly) | *C
gdef | .txt (68K assembly) | *C
GDEF | .txt (68K assembly) | *C
gnld | .txt (68K assembly) | *C
INIT | .txt (68K assembly) | *C
krnl | .txt (PPC32 assembly) |
LDEF | .txt (68K assembly) | *C
lmgr | .txt (68K assembly) | *C
lodr | .txt (68K assembly) | *C
ltlk | .txt (68K assembly) | *C
MBDF | .txt (68K assembly) | *C
MDEF | .txt (68K assembly) | *C
mntr | .txt (68K assembly) | *C
ncmp | .txt (PPC32 assembly and header description) |
ndlc | .txt (PPC32 assembly and header description) |
ndmc | .txt (PPC32 assembly and header description) |
ndrv | .txt (PPC32 assembly and header description) |
nift | .txt (PPC32 assembly and header description) |
nitt | .txt (PPC32 assembly and header description) |
nlib | .txt (PPC32 assembly and header description) |
nsnd | .txt (PPC32 assembly and header description) |
nsrd | .txt (PPC32 assembly) |
ntrb | .txt (PPC32 assembly and header description) |
osl | .txt (68K assembly) | *C
otdr | .txt (68K assembly) | *C
otlm | .txt (68K assembly) | *C
PACK | .txt (68K assembly) | *C
pnll | .txt (68K assembly) | *C
ppct | .txt (PPC32 assembly and header description) |
proc | .txt (68K assembly) | *C
PTCH | .txt (68K assembly) | *C
ptch | .txt (68K assembly) | *C
pthg | .txt (68K or PPC32 assembly and header description) | *C
qtcm | .txt (PPC32 assembly and header description) |
ROvr | .txt (68K assembly) | *C
RSSC | .txt (68K assembly) | *C
scal | .txt (PPC32 assembly and header description) |
scod | .txt (68K assembly) | *C
SERD | .txt (68K assembly) | *C
sfvr | .txt (PPC32 assembly and header description) |
shal | .txt (68K assembly) | *C
sift | .txt (68K assembly) | *C
SMOD | .txt (68K assembly) | *C
snth | .txt (68K assembly) | *C
tdig | .txt (68K assembly) | *C
tokn | .txt (68K assembly) | *C
vdig | .txt (68K or PPC32 assembly and header description) | *C
wart | .txt (68K assembly) | *C
WDEF | .txt (68K assembly) | *C
XCMD | .txt (68K assembly) | *C
XFCN | .txt (68K assembly) | *C
------------------------------------------------------------------------
MacApp resources
68k! | .txt (description of memory config for 680x0) |
CMNU | .txt (description of menu) |
cmnu | .txt (description of menu) |
errs | .txt (description of error ranges) |
mem! | .txt (description of memory config) |
ppc! | .txt (description of memory config for PPC) |
res! | .txt (string list of always resident segments) |
seg! | .txt (string list of segments) |
TxSt | .txt (description of text style) |
------------------------------------------------------------------------
Miscellaneous resources
ALRT | .txt (alert parameters) |
APPL | .txt (description of contents) |
audt | .txt (description of contents) |
BNDL | .txt (description of contents) |
CMDK | .txt (list of keys) |
CNTL | .txt (description of control) |
CTY# | .txt (description of cities) |
dbex | .txt (description of contents) |
DITL | .txt (dialog parameters) |
DLOG | .txt (dialog parameters) |
FBTN | .txt (description of buttons) |
FDIR | .txt (description of contents) |
fld# | .txt (description of folders) |
flst | .txt (description of font family list) |
fmap | .txt (description of finder icon mappings) |
FREF | .txt (description of file references) |
FRSV | .txt (list of font IDs) |
FWID | .txt (font parameters) |
gbly | .txt (description of Gibbly aka. System Enabler) |
GNRL | .txt (description of contents) |
hwin | .txt (description of help window) |
icmt | .txt (icon reference and comment) |
inbb | .txt (description of contents) |
indm | .txt (description of contents) |
infs | .txt (description of contents) |
inpk | .txt (description of contents) |
inra | .txt (description of contents) |
insc | .txt (description of contents) |
itl0 | .txt (international formatting information) |
ITL1 | .txt (short dates flag value) |
itlb | .txt (internationalization parameters) |
itlc | .txt (internationalization parameters) |
itlk | .txt (keyboard mappings) |
KBDN | .txt (keyboard name) |
LAYO | .txt (description of layout) |
mach | .txt (description of contents) |
MBAR | .txt (list of menu IDs) |
mcky | .txt (threshold values) |
MENU | .txt (description of menu) |
mitq | .txt (description of queue sizes) |
nrct | .txt (rectangle boundaries) |
PAPA | .txt (printer parameters) |
PICK | .txt (picker parameters) |
ppcc | .txt (description of contents) |
ppci | .txt (description of contents) |
PRC0 | .txt (description of contents) |
PRC3 | .txt (description of contents) |
pslt | .txt (description of Nubus pseudo-slot lists) |
ptbl | .txt (description of patch table) |
qrsc | .txt (description of queries) |
RECT | .txt (description of the rectangle) |
resf | .txt (list of fonts) |
RMAP | .txt (type mapping and list of ID exceptions) |
ROv# | .txt (list of overridden resource IDs) |
rtt# | .txt (list of database result handlers) |
RVEW | .txt (description of contents) |
scrn | .txt (screen device parameters) |
sect | .txt (description of contents) |
SIGN | .txt (description of contents) |
SIZE | .txt (description of parameters) |
slut | .txt (description of mapping) |
thn# | .txt (description of 'thng' mapping) |
TMPL | .txt (description of format) |
TOOL | .txt (description of contents) |
vers | .txt (version flags and strings) |
WIND | .txt (window parameters) |
Notes:
*0: Produces a 32-bit image if a corresponding monochrome resource exists
(ICN# for icl4/8, icm# for icm4/8, ics# for ics4/8, kcs# for kcs4/8). If
no monochrome resource exists, produces a 24-bit image instead. All
color information in the original resource is reproduced in the output,
even for fully-transparent pixels. If the icon was originally intended
to be used with a nonstandard compositing mode, the colors of fully-
transparent pixels may have been relevant, but most modern image viewers
and editors don't have a way to display this information.
*1: The hotspot coordinates are appended to the output filename. As in *0,
resource_dasm faithfully reproduces the color values of transparent
pixels in the output file, but most modern image editors won't show
these "transparent" pixels.
*2: resource_dasm implements multiple PICT decoders. It will first attempt
to decode the PICT using its internal decoder, which usually produces
correct results but fails on PICTs that contain complex drawing opcodes.
This decoder can handle basic QuickTime images as well (e.g. embedded
JPEGs and PNGs), but can't do any drawing under or over them, or
matte/mask effects. PICTs that contain embedded JPEGs or PNGs will
result in a JPEG or PNG file rather than the format specified by
--image-format (which is BMP by default). If the internal decoder fails,
resource_dasm will fall back to a decoder that uses picttoppm, which is
part of NetPBM. There is a rare failure mode in which picttoppm hangs
forever; resource_dasm gives it 10 seconds to do its job before killing
it and giving up. If picttoppm is not installed, fails to decode the
PICT, or is killed due to a timeout, resource_dasm will prepend the
necessary header and save the data as a PICT file instead.
*3: Text is assumed to use the Mac OS Roman encoding. It is converted to
UTF-8, and line endings (r) are converted to Unix style (n).
*4: Some rare style options may not be translated correctly. styl resources
provide styling information for the TEXT resource with the same ID, so
such a resource must be present to properly decode a styl.
*5: RMF archives can contain snd resources that are actually in MP3 format;
in this case, the exported sound will be a .mp3 file. Otherwise, the
exported sound is an uncompressed WAV file, even if the resource's data
is compressed. resource_dasm can decompress IMA 4:1, MACE 3:1, MACE 6:1,
A-law, and mu-law (ulaw) compression.
*6: JSON files from SoundMusicSys SONG resources can be played with smssynth
(http://www.github.com/fuzziqersoftware/gctools). The JSON file refers
to the instrument sounds and MIDI sequence by filename and does not
include directory names, so if you want to play these, you'll have to
manually put the sounds and MIDI files in the same directory as the JSON
file if you're using --filename-format.
*7: Tune decoding is experimental and will likely produce unplayable MIDIs.
*8: For color table resources, the raw data is always saved even if it is
decoded properly, since the original data contains 16-bit values for
each channel and the output image file has less-precise 8-bit channels.
*9: icns resources are decoded into many different file types depending on
the contents of the resource. For subfields that have split alpha
channels (that is, the transparency data is in a different subfield),
resource_dasm produces an original image and one with transparency
applied. Some icns resources also contain metadata, which is exported as
.bin, .txt, and .plist files, except for the Icon Composer version used
to create the file, which is ignored. If you want the result in Icon
Composer format, use --save-raw=yes and resource_dasm will save it as a
.icns file.
*A: These resources appear to have a fixed format, with a constant sample
rate, sample width and channel count. You may have to adjust these
parameters in the output if it turns out that these are configurable.
*B: The disassembler attempts to find exported functions by parsing the jump
table in the CODE 0 resource, but if this resource is missing or not in
the expected format, it skips this step and does not fail. Generally, if
any "export_X:" labels appear in the disassembly, then export resolution
succeeded and all of the labels should be correct (otherwise they will
all be missing).
*C: Some coprocessor and floating-point opcodes (F-class) are not
implemented and will disassemble with the comment "// unimplemented".
*D: Most PowerPC applications have their executable code in the data fork.
To disassemble it, use m68kdasm (example above).
*E: The output image format can be specified using --image-format. The
default output format is bmp (Windows bitmap); other supported formats
are png and ppm.
إذا فشل Resource_dasm في تحويل مورد ، أو لا يعرف كيفية ذلك ، فسوف يحاول فك تشفير المورد باستخدام مورد TMPL (القالب) المقابل في حالة وجوده. إذا لم يكن هناك TMPL المناسب ، فإن TMPL فاسد ، أو لا يمكن لـ TMPL فك تشفير المورد ، فسيقوم Resource_Dasm بإنتاج بيانات RAW الخاصة بالمورد بدلاً من ذلك.
تعتمد معظم تطبيقات وحدة فك الترميز في Resource_Dasm على برامج الهندسة العكسية وتخبط من خلال درجات الوثائق القديمة ، لذلك ربما لن تعمل بعض أنواع الموارد النادرة بعد. ومع ذلك ، أريد أن يكون هذا المشروع اكتمالًا قدر الإمكان ، لذلك إذا كان لديك مورد تعتقد أنه يجب أن يكون قابلاً فك التشفير ولكن لا يمكن لـ Resource_dasm فك تشفيره ، فأرسله إلي (ربما عن طريق إرفاق مشكلة github) وسأبذل قصارى جهدي لجعل Resource_dasm يفهمها.
Resource_dasm يقوم بإلغاء ضغط الموارد الشفافية التي تتميز بمدير الموارد على أنها مضغوطة.
لم يتم توثيق مخطط ضغط مدير الموارد رسميًا من قبل Apple أو تم الإعلان عنه ، وبالتالي يعتمد تنفيذ هذه عمليات إزالة الضغط على إعادة الهندسة العكسية ورمز MAC OS الكلاسيكي الآخر. باختصار ، يتم إلغاء ضغط الموارد من خلال تنفيذ رمز 68 كيلو أو PowerPC من مورد DCMP أو NCMP ، والذي يتم البحث عنه في وقت التشغيل في سلسلة ملفات الموارد المفتوحة مثل معظم الموارد الأخرى. (في الممارسة العملية ، عادة ما يتم تضمين DCMP/NCMP ذات الصلة في نفس الملف مثل المورد المضغوط أو في ملف النظام.) هناك تنسيقان مختلفان من الموارد المضغوطة وتنسيقان مقابلان من 68 ألف مضغوط ؛ Resource_dasm ينفذ الدعم لكلا التنسيقين.
يحتوي Resource_dasm على التطبيقات الأصلية لجميع عمليات فك الضغط الأربعة المدمجة في ملف نظام Mac OS. خاصة:
Resource_dasm يحتوي على محاكيات مضمنة في 68 ألفًا و PowerPC لتشغيل عمليات فك ضماؤ غير Default. يمكن لهذه المحاكيات أيضًا تشغيل عمليات إلغاء الضغط الافتراضية ، والتي يتم تضمينها مع Resource_Dasm. الوضع الحالي للضغط المضغوط:
قد يكون هناك عمليات فك ضوئية أخرى لم أرها ، والتي قد لا تعمل. إذا رأيت "تحذير: فشل في فك ضغط المورد" عند استخدام Resource_dasm ، فيرجى إنشاء مشكلة github وتحميل المورد المضغوط المصدر (ملف .bin) الذي تسبب في الفشل ، وجميع موارد DCMP و NCMP من نفس الملف المصدر.
قم بتشغيل sudo make install لنسخ ملفات الرأس والمكتبة إلى المسارات ذات الصلة بعد الإنشاء. بعد التثبيت ، يمكنك #include <resource_file/IndexFormats/ResourceFork.hh> (على سبيل المثال) والربط مع -lresource_file . لا توجد وثائق لهذه المكتبة بما يتجاوز ما هو مكتوب في ملفات الرأس.
تحتوي المكتبة على الوظائف والفئات المفيدة التالية:
باستخدام M68KDASM واضح إلى حد ما. قم بتشغيل m68kdasm --help للحصول على قائمة كاملة بالخيارات.
حاليا M68kdasm يمكن أن تفصل هذه الأنواع من البيانات:
بعض هذه التنسيقات القابلة للتنفيذ تدعم هيكل وحدة المعالجة المركزية التي لا تدعمها M68kdasm ؛ إذا واجهت واحدة من هذه ، فإنه يطبع قطاعات الكود كقطاعات بيانات بدلاً من ذلك.
يمكن لـ M68KDASM أيضًا تجميع POWERPC و X86 و SH-4 في الثنائي الخام. (لا يدعم تجميع نص M68K في ثنائي ، ولكن سيتم تنفيذ ذلك في المستقبل.) يطابق بناء جملة الإدخال المتوقع لكل بنية بناء جملة التفكيك ؛ بالنسبة إلى PowerPC و SH-4 ، ليس هذا هو بناء الجملة القياسي الذي تستخدمه معظم الأدوات الأخرى.
M68Kexec هو محاكي وحدة المعالجة المركزية وتصحيح الأخطاء ل Motorola 68000 و 32 بت PowerPC و X86. غالبًا ما أستخدمه للمساعدة في فهم ما تحاول بعض التعليمات البرمجية القديمة القيام به ، أو مقارنة سلوك الكود الذي قمت بنسخه إلى لغة حديثة مع سلوك الكود الأصلي. بالنسبة لحالات الاستخدام مثل هذا ، سترغب عمومًا في إعداد منطقة إدخال واحدة أو أكثر التي تحتوي على البيانات التي تختبرها ، ومناطق إخراج واحدة أو أكثر من الكود المحتوم للكتابة إليها.
ربما يكون هذا أفضل ما يفسر بالقدوة. يتم استخدام هذا الأمر لتنفيذ وظيفة توليد سياق التشفير من Phantasy Star Online Blue Burst ، لمقارنتها بنفس الوظيفة التي تم تنفيذها في Newserv:
./m68kexec --x86 --trace
--mem=A0000000/2AC43585C46A6366188889BCE3DB88B15C2B3C751DB6757147E7E9390598275CC79547B2E5C00DD145002816B59C067C
--mem=A1000000:1048
--load-pe=files/windows/pso/psobb.exe
--pc=00763FD0
--reg=ecx:A1000000
--push=00000030
--push=A0000000
--push=FFFFFFFF
--breakpoint=FFFFFFFF
خيارات --mem إعداد مناطق الإدخال ؛ تحتوي منطقة A0000000 على بذور التشفير (0x30 بايت) وستتضمن منطقة A1000000 سياق التشفير الذي تم إنشاؤه عند إرجاع الوظيفة. يقوم خيار --load-pe بتحميل الكود المراد تنفيذه و- --pc يخبر المحاكي من أين تبدأ. (بشكل افتراضي ، سيبدأ عند نقطة الإدخال المحددة في القابلة للتنفيذ ، إذا تم إعطاء أي منها ؛ هنا ، نريد أن نستدعي وظيفة محددة بدلاً من ذلك.) يضع خيار --reg this المؤشر في الوظيفة إلى المساحة التي خصصناها لها. خيارات --push قم بتعيين وسيطات الوظيفة وعنوان الإرجاع. سيعود إلى FFFFFFFF ، الذي لا يحتوي على ذاكرة مخصصة ، لكننا قمنا أيضًا بتعيين --breakpoint في هذا العنوان الذي سيوقف مضاهاة قبل إلقاء استثناء مباشرة.
نظرًا لأننا استخدمنا --trace ، يقوم المحاكي بطباعة حالة السجلات بعد كل رمز opcode ، حتى نتمكن من تتبع سلوكه ومقارنته من خلال تنفيذنا الخارجي لنفس الوظيفة. عندما تُرجع الوظيفة وتؤدي إلى حدوث نقطة توقف ، يمكننا استخدام r A1000000 1048 في القشرة لمعرفة البيانات التي تم إنشاؤها ، وكذلك مقارنة ذلك بنتيجة وظيفتنا الخارجية.
Render_bits مفيد للإجابة على السؤال "هل تكون هذه البيانات الثنائية ذات المظهر العشوائي في الواقع صورة أو صفيف ثنائي الأبعاد؟" امنحه تنسيقًا ملونًا وبعض البيانات الثنائية ، وسوف ينتج ملف BMP كامل اللون يمكنك النظر إليه مع عارض الصور المفضل لديك أو محرره. يمكنك أيضًا إعطاء جدول ألوان (. إذا كان الإخراج يشبه القمامة ، فقم بدوره بتنسيق العرض واللون حتى تكتشف المعلمات الصحيحة.
قم بتشغيل Render_bits دون أي خيارات لمعلومات الاستخدام.
يتيح لك Render_text رؤية النص الفعلي الذي سيبدو عليه عند تقديم خط نقطية (مورد Font/NFNT). لاستخدامه ، احصل على ملف .bin من مورد خط أو NFNT (على سبيل المثال مع Resource_Dasm--Save-Raw). ثم قم بتشغيل Render_text بدون وسيطات لمعرفة كيفية استخدامه.
في بعض الأحيان ، في سياق الهندسة العكسية ، ستنتهي بصورة تحتوي على المحتوى والبنية المناسبة ، ولكن الألوان خاطئة تمامًا. هناك احتمالات أنه تم تقديمها مع طاولة الألوان الخاطئة. لإصلاح ذلك ، يمكنك استخدام Reply_Clut لتعيين جميع وحدات البكسل الخاصة بالصورة من مساحة إلى أخرى.
قم بتشغيل replace_clut دون أي خيارات لمعلومات الاستخدام.
تقوم بعض الألعاب بتخزين الصور الكبيرة إلى مجموعة من القوام الأصغر ؛ يمكن لـ Assemble_images أن تجمعها برمجيًا في صورة كبيرة واحدة مرة أخرى. قم بتشغيل Assemble_images دون أي خيارات لمعرفة كيفية استخدامه.
يجد DUPE_Finder موارد مكررة من نفس النوع في ملفات الموارد أو عدة ملفات.
قم بتشغيل DUPE_Finder دون أي خيارات لمعلومات الاستخدام.
hypercard_dasm stack_file [output_dir] ، أو فقط hypercard_dasm لرؤية جميع الخياراتicon_dearchiver archive_file [output_dir] يفصل الرموز إلى ملفات .icns.vrfs_dump VRFS_file [output_dir]يمكن لـ Decode_Data فك تشفير وزيادة ضغط بعض تنسيقات الترميز المخصصة التي تستخدمها مختلف الألعاب. خاصة:
Game/App/Library | Encoding | CLI option | Notes
-------------------------------------------------------------
DinoPark Tycoon | LZSS | --dinopark | %0
DinoPark Tycoon | RLE | --dinopark |
Flashback | LZSS | --presage | %0
MacSki | COOK | --macski |
MacSki | CO2K | --macski |
MacSki | RUN4 | --macski |
PackBits (compress) | PackBits | --pack-bits |
PackBits (decompress) | PackBits | --unpack-bits |
Pathways Into Darkness | Pathways | --unpack-pathways |
SoundMusicSys | LZSS | --sms | %0
Notes:
%0: Although these are all variants of LZSS (and are indeed very similar to
each other), they are mutually incompatible formats.
يمكن استخدام decode_data من تلقاء نفسها لإلغاء ضغط البيانات ، أو يمكن استخدامها كمعالج مسبق خارجي عبر Resource_Dasm لإزالة شفافية بعض التنسيقات. على سبيل المثال ، لاستخدام decode_data لموارد MacSki ، يمكنك تشغيل أمر مثل resource_dasm --external-preprocessor="./decode_data --macski" input_filename ...
يمكن لـ Render_sprite جعل العديد من تنسيقات Sprite المخصصة. بالنسبة لبعض التنسيقات المذكورة أدناه ، سيتعين عليك توفير مورد جدول ألوان بالإضافة إلى مورد Sprite. ملف .bin الذي تنتجه Resource_Dasm من مورد CLUT أو PLTT أو CTBL يكفي ؛ عادةً ما يمكن العثور عليها في نفس الملف مثل موارد Sprite أو في تطبيق اللعبة. قم بتشغيل Render_sprite مع عدم وجود وسيطات لمعلومات الاستخدام.
التنسيقات المدعومة:
Game | Type | CLI option | Need color table | Notes
---------------------------------------------------------------------------
Beyond Dark Castle | PBLK | --PBLK | No |
Beyond Dark Castle | PPCT | --PPCT | No |
Beyond Dark Castle | PSCR | --PSCR-v2 | No |
Blobbo | BTMP | --BTMP | No |
Blobbo | PMP8 | --PMP8 | Yes | $9
BodyScope | Imag | --Imag | Yes | $2 $3
Bonkheads | Sprt | --Sprt | Yes |
Bubble Trouble | btSP | --btSP | Yes |
Dark Castle (color) | DC2 | --DC2 | No | $4
Dark Castle (monochrome) | PPCT | --PPCT | No |
Dark Castle (monochrome) | PSCR | --PSCR-v1 | No |
DinoPark Tycoon | BMap | --BMap | No |
DinoPark Tycoon | XBig | --XBig | No | $2
DinoPark Tycoon | XMap | --XMap | Yes | $2 $7
Dr. Quandary | Imag | --Imag | Sometimes | $1 $2 $3
Factory | 1img | --1img | No |
Factory | 4img | --4img | Yes |
Factory | 8img | --8img | Yes |
Flashback | PPSS | --PPSS | Yes | $2 $8
Fraction Munchers | Imag | --Imag-fm | Sometimes | $1 $2 $3
Greebles | GSIF | --GSIF | Yes |
Harry the Handsome Executive | HrSp | --HrSp | Yes | $9
Lemmings | SHPD | --SHPD-v1 | Sometimes | $0 $1 $2 $5
Marathon | .256 | --.256-m | No | $2
Mario Teaches Typing | Pak | --Pak | Sometimes | $1 $2
Mars Rising | btSP | --btSP | Yes |
Number Munchers | Imag | --Imag-fm | Sometimes | $1 $2 $3
Odell Down Under | Imag | --Imag | Sometimes | $1 $2 $3
Oh No! More Lemmings | SHPD | --SHPD-v2 | Sometimes | $0 $1 $2 $5
Pathways Into Darkness | .256 | --.256-pd | No | $2
Prince of Persia | SHPD | --SHPD-p | Sometimes | $0 $1 $2 $5
Prince of Persia 2 | SHAP | --SHAP | Yes |
SimCity 2000 | SPRT | --SPRT | Yes | $2
SimTower | | | No | $A
Slithereens | SprD | --SprD | Yes | $2
SnapDragon | Imag | --Imag | Sometimes | $1 $2 $3
Spectre | shap | --shap | No | $6
Step On It! | sssf | --sssf | Yes | $2
Super Munchers | Imag | --Imag-fm | Sometimes | $1 $2 $3
Swamp Gas | PPic | --PPic | Sometimes | $0 $2 $3
The Amazon Trail | Imag | --Imag | Sometimes | $2 $3
The Oregon Trail | Imag | --Imag | Sometimes | $1 $2 $3
TheZone | Spri | --Spri | Yes |
Word Munchers | Imag | --Imag-fm | Sometimes | $1 $2 $3
Notes:
$0: render_sprite can't tell from the contents of the resource whether it is
color or monochrome, so it assumes the resource is color if you give a
color table on the command line. If decoding fails with a color table,
try decoding without one (or vice versa).
$1: These games contain some color and some monochrome graphics. It should
be obvious which are which (usually color graphics are in a separate
file), but if not, you can give a clut anyway in these cases and
render_sprite will ignore it if the image is monochrome.
$2: These sprite formats contain multiple images, so render_sprite will
produce multiple image files.
$3: Resources of this type can contain embedded color tables; if you're
rendering a color image that doesn't have a color table, you'll have to
provide one via a command-line option. If the resource (or individual
images therein) contain their own color tables or are monochrome, no
color table is required on the command line, and any provided color
table via the command line will be ignored.
$4: You can get DC2 sprites from the DC Data file with
`resource_dasm --index-format=dc-data "DC Data"`.
$5: The graphics files contain resources that refer to segments of the data
fork in the same file. So, this option expects the original Graphics or
BW Graphics or Persia file (with both data and resource forks present),
not an already-extracted resource.
$6: shap resources contain 3D models and 2D top-down projections of them.
When given a shap resource, render_sprite produces an STL file and an
OBJ file for the 3D model, and an SVG file for the 2D top-down view.
$7: Some XMap resources are stored inside CBag archives. You can extract
them with `resource_dasm --index-format=cbag <CBAG_file.bin>`.
$8: This game has only one clut and it's huge - far longer than the usual
256 entries. It seems PPSS image sets are meant to be rendered with a
subset of this clut, but I haven't been able to figure out (yet) how the
game chooses what subset of it to use.
$9: The game doesn't contain any color tables. You can use a 256-color clut
resource from the Mac OS System file, or use the --default-clut option.
$A: The game stores its sprites in normal PICT resources with an incorrect
type. Use `resource_dasm --copy-handler=PICT:%89%E6%91%9C` to decode
them instead of using render_sprite.
icon_dearchiver يفسد الرموز في أرشيف أيقونة (من قبل أليساندرو ليفي مونتالسيني) إلى .icns. قم بتشغيله بدون خيارات لمعلومات الاستخدام.
blobbo_render <Blev-file.bin> <PMP8-128.bmp>ferazel_render في الدليل مع ملفات البيانات ، أو ferazel_render --help لرؤية جميع الخيارات (هناك الكثير!)gamma_zee_render gamma_zee_application levels_filenameharry_render --clut-file=clut.bin ، أو فقط harry_render لرؤية جميع الخيارات (هناك الكثير!)infotron_render في دليل معلومات البياناتlemmings_render --help الخرائط (إصدار MAC): lemmings_render --clut-file=clut.binmshines_render world_file [output_directory]lemmings_render كما هو الحال بالنسبة لخلاصات أصلية ، ولكن أيضًا استخدم خيار --v2realmz_dasm global_data_dir [scenario_dir] out_dir (إذا لم يتم إعطاء السيناريو_DIR ، فإن تفكيك البيانات المشتركة بدلاً من ذلك)