القصه در این چمن چو بید مجنون میبالم و در ترقیِ معکوسم!
عدهای این طور ادعا میکنند که زبان آلمانی، زبان فلسفه است و فرانسوی زبان عشق و شاعری است. این بار گذر ما به زبان اسمبلی افتاده است. همان عدهی مذکور مدعی هستند که این زبان، کلید هر نرمافزار متنبستهای است! یعنی اگر شما میتوانید اسمبلی بخوانید، دیگر متنبسته بودن یک شوخی کودکانه است و همه چیز برای شما متنباز است و میتوانید عملکردش را بفهمید! 😎
هوم، البته باید عرض کنم که کار دشواری است. یعنی این طور عرض کنم که صد رحمت به زبان ژاپنی و چینی! اما میخواهیم در این منزل، الفبای این کار را یاد بگیریم و از این به بعد، هر بار به کد همگذاری (همان اسمبلی!) برنامهای رسیدید و به کد منبع آن دسترسی نداشتید، آن برنامه را مثل گلابی تحلیل کنید و سر از کارش دربیاورید!
قبل از هرچیزی، تلاش کردیم مهمترین ابزارهایی را که در این راه دشوار به آنها نیاز خواهید یافت، به شما معرفی کنیم و مختصری از مفاهیم مهندسی معکوس را شرح بدهیم. بدین منظور، دل خویش به دریا فکنید و ویدیوی زیر را ببینید
خب اگر ویدئو را دیده باشید، مجموعهای از پروندهها هست که شاید به آنها نیاز داشته باشید:
- کد برنامه
- [elf64]
- [elf64_stripped]
- [elf64_static]
- [pe64]
- [pe64_stripped]
- پروندۀ crackme برای ابزار pin
شفافسازی: در ویدیو مقدمه سیستم رونی زمانیکه در حال تست ابزار Pin است دچار فروپاشی میشود و این بخش از ویدئو را بعدا اصلاح کردهایم!
و اما ابزارهایی که در این ویدئو معرفی شده است:
-
رادار
عجیب است که چنین ابزار گل و عزیزی رایگان است! پروژهی رادار، تجلی هنر برنامهنویسی دقیق، توسعهی گروهی نرمافزار متنباز و خلاصه خفن بودن است. به نظر میرسد کاری نیست که آدمیزاد بخواهد در رادار انجام بدهد و نتواند! شاید روزی برای شاگردان خود در کلاسهای درس مهندس معکوس، بگویید که آن ایام قدیم یک بسم الله میگفتیم و یک ترمینال باز میکردیم و میپریدیم توی r2 و دیگر بقیهاش آسان بود! (یا میتوانید بگویید سخت بود البته به نظرم واقعا سخت هم هست! هر جور دوست دارید خاطره را تعریف کنید.) به هر حال نکتهی مهم این است که رادار رایگان است!
- رادار ۲
- The radare2 bible
- رادار۳ [404]
- اسکریپتنویسی پایتون برای رادار۲ [1] [2]
- اسکریپتنویسی سایر برنامهها برای رادار۲
-
بستههای دیکامپایلر برای رادار۲
[Ghidra!]
[r2dec]
همچنین میتوانید با استفاده از عبارت 'r2pm search dec' هر بستهای را ببینید.
- cutter
- objdump (from binutils)
- ltrace
- strace
- gdb (The King)
- hexedit
- ghex
- pin
- IDA pro (cracked!)