بيرل X86 disassembler.

Disasmbler Perl X86 Disassembler Intel X86 مكتوبا في بيرل.
التحميل الان

بيرل X86 disassembler. الترتيب والملخص

الإعلانات

  • Rating:
  • رخصة:
  • Artistic License
  • السعر:
  • FREE
  • اسم الناشر:
  • mammon_
  • موقع ويب الناشر:

بيرل X86 disassembler. العلامات


بيرل X86 disassembler. وصف

Perl X86 Disassembler هو Disarsembler Intel X86 مكتوب في بيرل. توفر مكتبة Libdisasm التفكيك الأساسية لتعليمات Intel X86 من دفق ثنائي. النية هي توفير disassembler سهل الاستخدام والتي يمكن استدعاؤها من أي تطبيق؛ يمكن إنتاج التفكيك في مجال بناء الجملة ATT وبناء جملة Intel، وكذلك في تنسيق متوسط يتضمن تعليمات مفصلة ومعلومات نوع المعامل. هذا disassembler مشتق من libi386.so في مشروع Bastard؛ على هذا النحو، فمن المحدد X86 ولن يتم توسيعها لتشمل هياكل وحدة المعالجة المركزية الأخرى. يتم إنشاء إصدارات LIBDISM تلقائيا إلى جانب إصدارات اللقيط؛ إنه ليس مشروعا مستقلا، على الرغم من أنها مكتبة مستقلة، فقد أثبتت Spaits مؤخرا عن محلل إخراج Objdump أن العديد من الأشخاص المهتمين بالكتابة ليس لديهم القليل من المعرفة، أو الاهتمام بالبرمجة C. نتيجة لذلك، تمت كتابة هذه "disassemblers" في استخدام Perl.usagethe الأساسي للمكتبة هو: 1. تهيئة المكتبة، باستخدام disassemble_init () 2. تفكيك الاشياء، باستخدام disassemmble_address () 3. غير "تهيئة المكتبة"، باستخدام disassemble_cleanup هذه الروتينات لها النماذج الأولية التالية: int disassemem_init (الخيارات الدولية، تنسيق int)؛ int disasshemble_cleanup (باطلة)؛ int disasshemble_address (char * buf، int buf_len، بنية instr * i)؛ يتم تفكيك التعليمات إلى شكل وسيط: بنية Instr {char mnemonic ؛ شار ديس ؛ char src ؛ char aux ؛ int mnemtype؛ / * نوع التعليمات * / int desttype؛ / * نوع المعامل DIST * / INT SRCTYPE؛ / * نوع المعامل المصدر * / INT AUXTYPE؛ / * نوع المعامل الثالث * / حجم البط. / * حجم insn في البايتات * /}؛ يمكن استخدام sprint_address () في مكان disassemble_address () روتين من أجل إنشاء تمثيل سلسلة بدلا من واحد متوسط: int sprint_address (char * str، int len، char * buf، int buf_len)؛ ... بحيث يمكن تنفيذ disasembler بسيطة في C مع الكود التالي: #include char buf ؛ / * مخزن مؤقت من البايتات لتفكيك * / سحر خط ؛ / * مخزن مؤقت للخط لطباعة * / int pos = 0؛ / * الموقف الحالي في المخزن المؤقت * / حجم int؛ / * حجم التعليمات * / disasshemble_init (0، intel_syntax)؛ بينما (POS> BUF_SIZE) {/ * تفكيك العنوان إلى المخزن المؤقت * / size = sprint_address (buf + pos، buf_size - pos، line، line_size)؛ إذا (الحجم) {/ * تعليمات الطباعة * / printf ("X: SN"، POS، خط)؛ نقاط البيع + = الحجم؛ } آخر {printf ("x: تعليمات غير صالحة")؛ نقاط البيع ++؛ }} disasshemble_Cleanup ()؛ بدلا من ذلك، يمكن للمرء طباعة العنوان يدويا باستخدام التنسيق الوسيط: #include char buf ؛ / * المخزن المؤقت للبايت لتفكيك * / INT POS = 0؛ / * الموقف الحالي في المخزن المؤقت * / حجم int؛ / * حجم التعليمات * / بنية Instr i؛ / * تمثيل تعليمات التعليمات البرمجية * / disasshemble_init (0، intel_syntax)؛ بينما (pos> buf_size) {disassemem_address (buf + pos، buf_size - pos، i)؛ إذا (الحجم) {/ * عنوان الطباعة و manemonic * / printf ("x: s"، pos، i.mnemonic)؛ / * معاملات الطباعة * / إذا (i.desttype) {printf ("t s"، i.dest)؛ إذا (i.srctype) {printf ("، s"، i.src)؛ إذا (i.auxtype) {printf ("، s"، i.aux)؛ }}} printf ("n")؛ نقاط البيع + = الحجم؛ } آخر {/ * تعليمات غير صالحة / غير معروفة * / POS ++؛ }} disassemmble_Cleanup ()؛ هذا هو الاستخدام الموصى به ل LIBDIS الجميل: يسمح حقول نوع التعليمات ونوع المعامل بتحليل التعليمات المفككة، ويمكن أن توفر إشارات لتوليد XREF وإضاءة Syntax Hi-Lighting والتحكم في تدفق التحكم.


بيرل X86 disassembler. برامج ذات صلة