נדמה לי שעדיין חסרים קבצים.
הנה מה שהצלחתי להגיע אליו:
קודם כל צריך לערוך את Install.exe:
- לשנות בכתובת 0xA12A את הערך 0x74 ל-0xEB
- לשנות בכתובת 0xE77F את הערך 0x75 ל-0xEB
- הצג/הסתר תוכן
This is equivalent to setting the following breakpoints in the DOSBox debugger:
bp 0E55:00003672 |
bp 0A5A:00002F08
And when each of them hits, change EAX to 1 via:
sr eax 1
השינוי הזה מאפשר לעקוף את בדיקת קוד הרישוי. מה שמעניין בקוד הרישוי הוא שתוכנת ההתקנה מחפשת קבצים שונים להתקנה בהתאם לקוד הרישוי שהוכנס. כלומר, אם נכניס קוד רישוי מסויים, התוכנה תנסה לחלץ את LANGUAGE.ZIP, ואם נכניס קוד אחר, התוכנה עשויה לחפש קובץ ZIP אחר, או לבקש מהמשתמש להכניס תקליטון אחר לכונן.
את תוכנת ההתקנה צריך להריץ מתוך תיקיית השורש של הכונן. כלומר, צריך לעשות Mount לתיקייה שבה נמצאת תוכנת ההתקנה, כך ש-Install.exe ישב בתיקיית השורש (למשל: C:\Install.exe).
הקוד הבא מנתב את ההרצה לחילוץ LANGUAGE.ZIP שאכן נמצא ברשימת הקבצים שקיבלנו.
- מספר סידורי: 222222222
- קוד רישוי: ASDG-ASDgdga34asdfASDF
אבל עדיין יש בעיה: במסך הבא התוכנה לא מצליחה למצוא את LANGUAGE.ZIP כי היא מחפשת בנתיב לא נכון: C:LANGUAGE.ZIP במקום C:\LANGUAGE.ZIP. לא בטוח למה זה קורה. אפשר לתקן את זה באמצעות breakpoint עם הדיבאגר של DOSBox. כאשר התוכנה מתלוננת שהיא לא מוצאת את הקובץ, נקבע Breakpoint שיעצור כאשר מנסים לפתוח קובץ:
bpint 21 3d
כשאנחנו פוגעים ב-Breakpoint, נבדוק את הנתיב שהתוכנה מנסה לפתוח:
d ds:dx
אנחנו אמורים לראות C:LANGUAGE.ZIP. נדרוס את הערך הזה עם הערך הנכון:
sm DS:DX 43 3A 5c 4C 41 4E 47 55 41 47 45 2E 5A 49 50 00
כעת אנחנו אמורים לראות את הערך משתנה ל-C:\LANGUAGE.ZIP. נמשיך את הרצת התוכנה ונראה שמתבצע חילוץ של LANGUAGE.ZIP.
משום מה זה חוזר פעמיים. אולי יש שני קבצי LANGUAGE.ZIP שצריך לחלץ, ולנו יש רק אחד?
כאן אנחנו נתקלים בבעיה האמיתית: לאחר החילוץ, התוכנה מבקשת שנכניס את התקליטון הבא. נראה שהתוכנה יודעת מהו התקליטון הנוכחי לפי תוכן הקובץ DISK.ID. אצלנו התוכן הוא installation diskette. התוכנה מבקשת את התקליטון Demo #1.
בשורה התחתונה, אני לא בטוח שכל הסיפור הזה הוא לא מעטפת לפקודת unzip ושפשוט צריך לחלץ ידנית את התוכן של התקליטון השני.