(לחלוטין לא הבנתי מה אתה רוצה לעשות, זה לא נשמע נכון במיוחד)מה שעושים כשרוצים "לפרוץ" תוכנה זה בעצם לקחת תוכנית מוכנה
שיש לנו רק EXECUTABLE ללא קוד מקור, ואנו רוצים לשנות
את ההתנהגות שלה במקצת, בפרט אנו רוצים לסלק איזו שהיא בדיקה
או לסלק הודעה מעצבנת או משהוא כזה.
בשביל לעשות כזה דבר אנחנו צריכים לשנות את הקובץ,
אנחנו יכולים לעשות לו reverse assembly אבל נקבל המון המון
מידע שלא פשוט לקרוא.
בשביל לאתר את המקום הרלוונטי אנחנו לרוב נשתמש בdebuger
נריץ את התוכנית דרכו לכשנקבל את ההודעה המעצבנת או הודעה
שהבדיקה נכשלה, אנו נסתכל בdebuger איפה נמצאת התוכנית
וכן נסתכל על המחסנית לראות את שרשרת הקריאות.
קל לראות שרשרת קריאות בגלל שלפי הC Calling convention
דוחפים בכל stack frame את הBP הקודם.
אז אנחנו קוראים רק את הקוד הרלוונטי, מזהים איפה יש את
הבדיקה ומבטלים אותה, יש לנו שני כלים עיקריים,
האחד הפיכת פקודות לNOP וסילוקן מהקוד,
השני החלפת je בjne אפשר כמובן לעשות שינויים יותר מורכבים,
אלו דורשים לרוב הבנה יותר עמוקה של הקוד אותו אנו משנים.
האילוץ המרכזי שלנו הוא שאנו לא יכולים לשנות את גודל הקובץ
זה הורס הכל, אנחנו לא יכולים לעשות שינוי שהוא לא החלפת
תוכן של חלק מסוים מהקוד במשהוא אחר באותו גודל בדיוק.
DRYICE