سؤال فقط
نحن نعلم ان في البيئة العادية يقوم مثلا برنامج الأولي dbg بتحويل كود سي او سي ++ او دلفي الي لغة asm
في معمارية المعالجات مثلا amd و arm و mips و intel باستخدام اداة radare2 عندما اقوم بتنقيح الملف بعد فك الضغط عليه تضهر بهيئة 64 بيت
سؤال
هل من الممكن تنقيح الملف بهاته الطريقة اي عل هيئة 64 بيت من دون اختيار المعالج arm و mips ي
Polia كان من الافضل لو طرحت موضوع مستقل، الموضوع المستقل سيجلب زوار اكثر وكذلك سيكون مرتب عند البحث سواء بجوجل او من خلال المنتدى.
كبداية ollydbg هو منقح مصمم لمعالج واحد (معالجات Intel نواة 32 بت) لذلك عندما يفتح اي ملف فهو يفترض انه انتل 32 بت.
بينما radare2 هو بيئة هندسة عكسية كاملة وهو يفترض اولا معالج النظام الذي يعمل علية ولتنقيح المعالجات الاخرى عليك ان تقول له ذلك.
اولاً قم بمعرفة معالج الملف الذي تحاول تنقيحة
rabin2 -I Your_file
النتيجة
$ rabin2 -I /bin/ls
arch x86
binsz 128456
bintype elf
bits 64
canary true
class ELF64
crypto false
endian little
havecode true
intrp /lib64/ld-linux-x86-64.so.2
lang c
linenum false
lsyms false
machine AMD x86-64 architecture
maxopsz 16
minopsz 1
nx true
os linux
pcalign 0
pic true
relocs false
relro partial
rpath NONE
static false
stripped true
subsys linux
va true
يمكنك كذلك ان تكتب الامر
i
من داخل المنقح
[0x000104d8]> i
[...]
arch arm
baddr 0x10000
bintype elf
bits 32
canary false
endian little
nx false
pic false
relro no
static false
stripped false
[...]
لاختيار المعالج استخدم الامر
asm.arch
لعرض الافتراحات استخدم الامر
asm.arch=?
لتحديد فيما اذا كان 8 او 16 او 32 او 64 بت
asm.bits
مثلاً معالج mips
e asm.arch = mips
او يمكنك عمل ذلك قبل تشغيل البرنامج
radere2 -a mips -b 32 your_file.bin
a- المعالج
b- طول المسجلات
إقتباس :هل من الممكن تنقيح الملف بهاته الطريقة اي عل هيئة 64 بيت من دون اختيار المعالج arm و mips ي
لا يمكن ذلك، عليك بتحديد نوع المعالج وطول المسجلات والى حصلت على معلومات خاطة لمعالج ليس له علاقة بالملف الذي تنقحه.
radare2 يسبة Ida pro ولكنة مفتوح المصدر وكما في Ida pro عليك بتحديد المعالج لتحصل على معلومات صحيحة في radare2 كذلك
هلا اخي
[b]Gu-sung18 حقيقة ردودك انتضرها بفارغ الصبر بارك الله فيك [/b]
(12-07-2020, 02:58 PM)Gu-sung18 كتب : [ -> ]0x000104d8]> i[...]
arch arm
baddr 0x10000
bintype elf
bits 32
canary false
endian little
nx false
pic false
relro no
static false
stripped false
[...]
دائما مايضهر لدي AMD INtel مع ان البينوالك binwalk يقول انه arm
استتفسار أري انك وضعت ./bin/ls ممكن توضيح
إقتباس :دائما مايضهر لدي AMD INtel مع ان البينوالك binwalk يقول انه arm
جرب حسب نتيجة binwalk فمن غير المعقول ان ملف لنظام غير الحواسيب هو معالج AMD او Intel وبعض الادوات تظهر نتائج خاطئة.
الانظمة المضمنة اغلبها ARM و MIPS.
(12-07-2020, 03:12 PM)Polia كتب : [ -> ]استتفسار أري انك وضعت ./bin/ls ممكن توضيح
كنت اعمل من ويندوز ولم يكن تحت يدي برنامج radare2 (عامل dual boot لكل من windows 10 و Linux وكنت فاتح ويندوز) لذلك اضطررت ان اسحب امثلة من النت.
هذه الامثلة من جهازي (أسم الملف elf-Linux-ARM64-bash)
rabin2 -I Your_file
او يمكنك عمل ذلك قبل تشغيل البرنامج
يمكنك كذلك ان تكتب الامر
i
من داخل المنقح وبعدما تتعرف على البرنامج تضبط نوع المعالج والمسجلات
ضبط المعالج كـ arm
في حال نسيت اسم المعالج واردت قائمة بالمعالجات المدعومة
e asm.arch=?
كذلك يوجد امر سوف يفيدك جداً وهو امر يشرح سطور الاسمبلي التي تظهر على الشاشة وكان مفيد جداً لي
الصورة فوق هي قبل تنفيذ الامر
نفذ
e asm.describe
واذا كانت القيمة false اجعلها true
e asm.describe = true
انظر كيف ستظهر
امر rabin لملف bin
[align=left]baddr 0x0[/align]
[align=left]binsz 2745032
bits 64
canary false
crypto false
endian little
havecode false
laddr 0x0
linenum false
lsyms false
maxopsz 16
minopsz 1
nx false
pcalign 0
pic false
relocs false
sanitiz false
static true
stripped false
va false[/align]
اضن ان المعلومات التي يقدمها RABIN لملفات BIN قليلة مقارنة بـ EXE
ملاحضة الملف مفكوك بـ LZMA
(12-07-2020, 08:00 PM)Gu-sung18 كتب : [ -> ]كذلك يوجد امر سوف يفيدك جداً وهو امر يشرح سطور الاسمبلي التي تظهر على الشاشة وكان مفيد جداً لي
ما مدي دقة المعلومات التي يقدمها
(13-07-2020, 07:32 AM)Polia كتب : [ -> ]اضن ان المعلومات التي يقدمها RABIN لملفات BIN قليلة مقارنة بـ EXE
ملفات الانظمة المضمنة (embedded system) تحوي معلومات قليلة وشاذة ولا تلتزم بمعايير قياسية عكس ملفات انظمة الحواسيب، مثلاً صيغة EXE هي تابعة لويندوز ولها معايير قياسية وتوثيق رسمي من خلال الرجوع له يمكنك معرفة جميع التفاصيل.
بعض الانظمة المضمنة تحتاج ادوات خاصة بها للتعرف عليها والتعامل معها.
ارفع الملف اذا كان ممكن.
إقتباس :ما مدي دقة المعلومات التي يقدمها
المعلومات التي يقدمها دقيقة لانه يشرح ماذا تعني التعليمة. خلي بالك انه يشرح كل تعليمة على حدى وليس تحليل للبرنامج ككل. يقدم فقط الـDescrpition لتعليمات الاسمبلي
مثلاً يقول لك ماذا تعني التعليمات ldr x1, address
ldr x1, 0x41e808
ماذا تعني mov ماذا تعني ماذا تعني add ماذا تعني b
كذلك في لغة الاسمبلي التعليمة اذا اتى ورائها تعليمة (تعليمات) معينة يشرح ماذا تعني هذه التعليمة (او التعليمات) بالاضافة الى التعليمة الاساس. هذا حسب الساينتكس تبع لغة برمجة اسمبلي.
هذا كمثال من لغة اسمبلي ARM:
(13-07-2020, 11:25 AM)Gu-sung18 كتب : [ -> ]ا تعني mov ماذا تعني ماذا تعني add ماذا تعني b
كذلك في لغة الاسمبلي التعليمة اذا اتى ورائها تعليمة (تعليمات) معينة يشرح ماذا تعني هذه التعليمة (او التعليمات) بالاضافة الى التعليمة الاساس. هذا حسب الساينتكس تبع لغة برمجة اسمبلي.
هذا كمثال من لغة اسمبلي ARM:
شكرا لك حقيقة اريد التخصص في الهندسة العكسية لملفات الـ bin
هل يوجد طريقة لمعرفة المعالج الدي يتعامل معه الملف هل هو 16 ام 32 bit
في عالم الـ microprocessors ستجد اشكال واصناف من المعالجات وهي ليست محصورة بـ 16 او 32 بت. الامر الاصعب هو تحديد المعالج المستخدم. انت طرحت موضوع سابق يخص هذا الامر (
معرفة معالجات اجهزة الأستقبال) وتبين ان الموضوع صعب.
بعض الـ microprocessors يحتاج ادواتة الخاصة للتعرف علية والتعامل معه ولن تفلح معه الادوات العادية.
الطريقة العامة هي فتح الجهاز (في حال اسم الجهاز لم يأتي بشيء مفيد) وقرائة اسم المعالج والبحث بالنت عن معلومات عنه وتوثيق رسمي من الشركة المنتجة يشرح كيف يعمل
والطريقة الثانية التخمين وهي تحوي الكثير من الطرق وانا لا اعرف اغلبها ولكن اشهرها تتمثل بفتح الملف بالـ disassembler وتجربة عدة معالجات شهيرة ومحاولة معرفة ما اذا كانت البيانات لها معنى لانها ستكون لها معنى عندما تفتح عن طريق الـ disassembler واختيار المعالج الصحيح وهذا يتطلب خبرة بعدة معالجات لمعرفة ما اذا كانت التعليمات لها معنى صحيح ام لا.
لذلك قبل اللجوء لطرق التخمين نجرب البحث عن اسم المنتج ونحاول عن طريق جوجل معرفة اسم المعالج وكذلك عرض مسجلاتة و البحث عن الـ Development Kit والتي يستخدمها المبرمجين للتعامل مع هذا الجهاز او المعالج والتي تحوي جميع الادوات والمعلومات الازمة عن الملف المنتج.
(14-07-2020, 10:47 AM)Gu-sung18 كتب : [ -> ]في عالم الـ microprocessors ستجد اشكال واصناف من المعالجات وهي ليست محصورة بـ 16 او 32 بت. الامر الاصعب هو تحديد المعالج المستخدم. انت طرحت موضوع سابق يخص هذا الامر ( معرفة معالجات اجهزة الأستقبال) وتبين ان الموضوع صعب.
بعض الـ microprocessors يحتاج ادواتة الخاصة للتعرف علية والتعامل معه ولن تفلح معه الادوات العادية.
الطريقة العامة هي فتح الجهاز (في حال اسم الجهاز لم يأتي بشيء مفيد) وقرائة اسم المعالج والبحث بالنت عن معلومات عنه وتوثيق رسمي من الشركة المنتجة يشرح كيف يعمل
والطريقة الثانية التخمين وهي تحوي الكثير من الطرق وانا لا اعرف اغلبها ولكن اشهرها تتمثل بفتح الملف بالـ disassembler وتجربة عدة معالجات شهيرة ومحاولة معرفة ما اذا كانت البيانات لها معنى لانها ستكون لها معنى عندما تفتح عن طريق الـ disassembler واختيار المعالج الصحيح وهذا يتطلب خبرة بعدة معالجات لمعرفة ما اذا كانت التعليمات لها معنى صحيح ام لا.
لذلك قبل اللجوء لطرق التخمين نجرب البحث عن اسم المنتج ونحاول عن طريق جوجل معرفة اسم المعالج وكذلك عرض مسجلاتة و البحث عن الـ Development Kit والتي يستخدمها المبرمجين للتعامل مع هذا الجهاز او المعالج والتي تحوي جميع الادوات والمعلومات الازمة عن الملف المنتج.
بعد فتح جهاز الدي سأتعامل معه بحثت عن اسم المعالج ووجدت هاته الصورة
بعد بحثي عن معمارية المعالج لم اجد وكل الروابط معطوبة
رابط
https://c-sky.github.io/docs/gx6605s.html
البين والك يقول
95196 0x173DC eCos RTOS string reference: "ecos.bin.lzma"
95212 0x173EC eCos RTOS string reference: "ecos.bin.gz"
131584 0x20200 JPEG image data, EXIF standard
131596 0x2020C TIFF image data, big-endian, offset of first image directory: 8
132262 0x204A6 Copyright string: "Copyright (c) 1998 Hewlett-Packard Company"
140214 0x223B6 Copyright string: "Copyright (c) 1998 Hewlett-Packard Company"
149804 0x2492C Copyright string: "Copyright (c) 1998 Hewlett-Packard Company"
196608 0x30000 romfs filesystem, version 1 size: 2784112 bytes, named "rom 5d7a09b0"
3014656 0x2E0000 CramFS filesystem, little endian, size: 806912, version 2, sorted_dirs, CRC 0xB3D914A8, edition 0, 1061 blocks, 419 files