לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #2  
ישן 17-04-2008, 19:01
  זוהי יונה זוהי יונה אינו מחובר  
 
חבר מתאריך: 10.04.08
הודעות: 87
אני לא מכיר כלי שעושה את זה
בתגובה להודעה מספר 1 שנכתבה על ידי The IceMan שמתחילה ב "כיצד ניתן לבדוק באיזה קומפיילר קומפלה התוכנה ?"

אבל אתה יכול לחפור לבד.

קומפיילרים שונים מממשים אלמנטים שונים של השפה בצורה שונה. קודם כל תגלה באיזו שפה נכתבה התוכנית שלך. לדוגמה, אם אתה רואה שמות עם :: באמצע, זה יכול להיות CPP; אם אתה רואה פונקציות CRT מדובר ב-C או CPP; אם אתה רואה תלויות ב-MSVBVM אתה יודע שמדובר ב-VB; וכך הלאה.

ברגע שיש לך שפה, אתה יכול להמשיך. אם מדובר ב-VB, לדוגמה, גרסת ה-MSVBVM היא גרסת ה-VB (כלומר, MSVBVM50.DLL זה VB5 ו-MSVBVM60.DLL זה VB6).

אני אניח שאתה מדבר על תוכנית CPP לווינדוס. במקרה הזה אתה יכול להסתכל על שמות של פונקציות "פנימיות". הקונבנציה אצל MS, לדוגמה, היא שפונקציות של המשתמש מתחילות בתוים אלפאנומריים, פונקציות C מתחילות בקו תחתון בודד, ופונקציות CPP מתחילות בשני קוים תחתונים (לדוגמה _CRTStartup ו-_CRTMain הן פונקציות C). אולי אצל אחרים הקונבנציות אחרות. גם מימוש של exceptions נעשה בצורה שונה. לדעתי רק MSVC משתמש ב-SEH כדי לממש execptions.

בקיצור, התשובה היא כן, ניתן לדעת את זה, אבל בהעדר כלי אוטומטי שעושה את זה, יש צורך בכמות מסוימת של forensic analysis כדי לגלות את זה.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 17-04-2008, 22:12
  Dark Knight Dark Knight אינו מחובר  
 
חבר מתאריך: 30.07.05
הודעות: 949
שלח הודעה דרך ICQ אל Dark Knight
בתגובה להודעה מספר 3 שנכתבה על ידי meijin שמתחילה ב "שוב שאלת תם-איך אפשר לחפור..."

פתח אותו עם כתבן של WINDOWS, לדוגמא, וחפש בין הג'יבריש מילים באנגלית...

אגב, כל מני קומפיילרים גם שותלים כל מני טקסטים לתוך הקובץ...
כך, לדוגמא, גיליתי בקובץ שקימפלתי לאחרונה ב-Microsoft Visual Studio 2005 טקסטים שלמים:
ציטוט:
- Attempt to use MSIL code from this assembly during native code initialization
This indicates a bug in your application. It is most likely the result of calling an MSIL-compiled (/clr) function from a native constructor or from DllMain.

- Attempt to initialize the CRT more than once.
This indicates a bug in your application.

Microsoft Visual C++ Runtime Library


הטקסטים הללו, למיטב הבנתי, נכנסים כמו שהם לאיזור הקבועים בזיכרון ומשמשים בעיקר להודעות שגיאה של המערכת.. בחלק הזה מצאתי גם טקסטים שאני הכנסתי לתוכנית כגון:

ציטוט:
Init was already called.
%s %d Init failed.
Init failed.
Init succeeded.
%s %d Insert organization failed.
Inserted organization %d
Insert organization failed with error %d.


וכו' שאלו הם טקסטים שהוכנסו בגירשיים להודעות printf...

כל זה, אגב, טובע בערימות של תווים חסרי משמעות... אז כתבן של ווינדוס וקצת סבלנות (חפש לקראת סוף הקובץ) ובהצלחה!
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #10  
ישן 17-04-2008, 22:17
  זוהי יונה זוהי יונה אינו מחובר  
 
חבר מתאריך: 10.04.08
הודעות: 87
אתה פשוט מסתכל בתוכן שלו.
בתגובה להודעה מספר 3 שנכתבה על ידי meijin שמתחילה ב "שוב שאלת תם-איך אפשר לחפור..."

יש מיליון דרכים להדפיס הודעה למסך, ולפי הדרך שבה זה נעשה ב-EXE ספציפי, אתה יכול לדעת מי עשה את זה.

בפועל, יש תוכנות שעוזרות לעשות את זה:
  • הכלי הבסיסי הוא הדיסאסמבלר שמראה לך פקודות אסמבלי במקום אופקודים בינאריים. עכשיו אתה רוצה להבין מה קורה שם.
  • בשביל זה יש לך כלים מתקדמים יותר שכוללים דיסאסמבלרים בתוכם. הם מתחלקים לשתי קטגוריות עיקריות:
    • כלי RE (ר"ת של Reverse Engineering, הנדוס לאחור) סטטיים, כמו IDA. מדובר בכלים שיודעים לנתח את הקוד בצורה חכמה, בד"כ כוללים עורכים מתקדמים למדי, מאפשרים חיפושים מתקדמים, מראים לך פריטי מידע נוספים על קובץ בינארי מלבד הקוד עצמו (דוגמות מ-IDA: פונקציות שהבינארי מייצא, פונקציות מ-DLL-ים שהוא משתמש בהן, מחרוזות שנמצאו בקוד; הוא מנתח את הקובץ ומראה לך את הקבועים בנפרד; וכו')
      • ישנם כלים שמנסים להיות מתקדמים יותר ולהראות לך קוד בשפות תכנות נורמליות ולא קוד אסמבלי, אבל ההצלחה שלהם נמוכה למדי כשלא מדובר בשפות שרצות על מכונה וירטואלית וכו'. ל-IDA לדוגמה קיים פלאגין בשם Hex Rays שמייצר מעיו פסוודו-קוד C לקוד האסמבלי שעובדים עליו, אבל הוא לא הרבה טוב יותר מהאסמבלי עצמו.
    • דיבאגרים: מדובר בכלים שמאפשרים לך להתחבר לפרוסס או להריץ פרוסס חדש, לעצור אותו כרצונך בכל פקודות אסמבלי, ולבצע אותן אחת אחרי השנייה, תוך כדי מעקב אחרי המחסנית, הזיכרון, מצבי האוגרים וכו'. דיבארים נפוצים לווינדוס הם windbg של MS ו-ollydbg (גם IDA מאפשר דיבוג, אם כי לא התנסיתי בכך), הדיבאגר האגדי של לינוקס הוא gdb וגם עם דוס היה כלי דיבוג פרימיטיבי למדי בשם הישיר למדי debug.
ספציפית במקרה של אייס מן התכוונתי שיפתח IDA ויסתכל מה הוא מוצא שם בפנים.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 18-04-2008, 12:39
צלמית המשתמש של The IceMan
  The IceMan The IceMan אינו מחובר  
\dev\null
 
חבר מתאריך: 08.11.02
הודעות: 11,379
בתגובה להודעה מספר 1 שנכתבה על ידי The IceMan שמתחילה ב "כיצד ניתן לבדוק באיזה קומפיילר קומפלה התוכנה ?"

קצת הטעתי השאלה המדוייקת שלי היתה לנסות לגלות באיזה גרסת קומפיילר קומפלה תוכנה שיש לי

יש לי קוד של פרוייקט מאוד ישן בפסקל שמשתמש בסביבה גרפית ישנה שנקראת GEM
(מעין WINDOWS בסיסי)

הבעיה שבחיפוש מידע על GEM מצאתי את הספרייה TPU שדרכה אני יכול לבצע פעולות של יצירת חלונות וכ"ד
אבל הקוד בפרוייקט שמצאתי לא עושה שימוש ב-UNIT הזה אלה בפונקציות אחרות

הבעיה מתחילה מזה שאני מנסה לקמפל את הקוד המקורי כמו שהוא, ואני לא מקבל את המסך הגרפי,
התוכנה מצליחה לבצעת אתחול לסביבה הגרפית אבל כאשר אני מנסה להציג אלמנט גרפי אני נתקל במסך שחור!

אז אחד הסברות שלי היתה שאולי גרסת הקומפייל עושה בעיות > כי הפרוייקט משנת 96 ואפילו פחות
ואני משתמש בקומפיילר של TP7 , ונסתי גם את TP5.5 ולא עזרה

*Turbo Pascal

תודה רבה לכל העוזרים,
ומצטער שלא דיקתי בשאלה,

נ.ב- שימי נסתי את השימוש ב-STRINGS ,
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 22:47

הדף נוצר ב 0.04 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר