שְׁאֵלָה:
האם יש מפרקי ARM המספקים תפוקה מובנית?
Brendan Dolan-Gavitt
2013-04-16 03:04:53 UTC
view on stackexchange narkive permalink

האם יש מפרקי ARM (או אחרים שאינם x86) שמפרקים הוראה לחלקיה המרכיבים במבנה ידידותי למכונה? באופן אידיאלי זה יהיה משהו כמו XED או distorm3, שמתפרקים למבנה ואז מספקים ממשק API לשאילתת דברים כמו "האם זו שיחה?" "האם זה ענף מותנה?" וכו ', או לקבל את הפעולות של הוראה.

מצאתי סופת זרועות, אך כרגע היא תומכת רק באגודל.

ערוך: כדי להבהיר, אני אני מחפש משהו שאפשר לקרוא לו מתוך תוכנית אחרת ומקווה שיש לו רישוי ליברלי (תואם GPL).

בשביל מה זה שווה אני חושב שזה משהו שכנראה יתווסף ל- ERESI בטווח הקרוב כבר יש להם את זה לאינטל וספארק ומוסיפים תמיכה נוספת ב- ARM.
שְׁלוֹשָׁה תשובות:
QAZ
2013-04-16 03:21:18 UTC
view on stackexchange narkive permalink

DARM (GitHub) מאת Jurriaan Bremer הוא מפרק ARMv7 שנכתב ב- C וזמין ברישיון BSD בעל 3 תנאים. מצב.

דוגמה פשוטה לשימוש ב- DARM יכולה להיות כדלקמן:

  // המבנה שיכיל את כל המטא-נתונים אודות ההוראה המפורקת ... darm_t d; // לפרק אופקוד של 32 ביט ... אם (darm_armv7_disasm (&d, 0xE12FFF14) > = 0) {if (d.instr == I_BX) {// לעשות משהו עם הוראות BX ...} // להדפיס את המפורק במלואו הוראות darm_str_t str; אם (darm_str (&d, &str) > 0) printf ("% s \ n", str.instr);}  
זה נראה כמו מה שהתכוונתי אליו! אני מניח שאוכל אפילו להשתמש גם ב- DARM וגם בסופת הידיים כדי לקבל תמיכה מלאה ...
Jason Geffner
2013-04-16 03:21:47 UTC
view on stackexchange narkive permalink

כן, ה- SDK של IDA Pro מאפשר לך לגשת לחלקי הרכיב של ההוראות באמצעות המחלקה insn_t (ב- ua.hpp).

זה מצוין לדעת, אבל אני מחפש משהו שאפשר לקרוא לו מתוך תוכנית אחרת ומקווה שיש לו רישוי ליברלי.
@BrendanDolan-Gavitt: אולי מצהיר כי בשאלה זה רעיון טוב אז?
Codoka
2016-02-16 22:20:42 UTC
view on stackexchange narkive permalink

תשובה עדכנית יותר לשאלה זו תהיה הצעה לספרייה Capstone. השתמשתי בו לפירוק ARM וזה אמין למדי. IMHO, זוהי ספריית הקוד הפתוח הטובה ביותר שיש.

הספרייה מבוססת על תיאורי ההוראות של LLVM של TabelGen. לכן, תמיכת ה- ISA שלה מלאה כמו LLVM.



שאלה ותשובה זו תורגמה אוטומטית מהשפה האנגלית.התוכן המקורי זמין ב- stackexchange, ואנו מודים לו על רישיון cc by-sa 3.0 עליו הוא מופץ.
Loading...