تقييم الموضوع :
  • 2 أصوات - بمعدل 3
  • 1
  • 2
  • 3
  • 4
  • 5
المساعدة في فك تشفير ملف bin
#61
سؤال فقط
نحن نعلم ان في البيئة العادية يقوم مثلا برنامج الأولي dbg بتحويل كود سي او سي ++ او دلفي الي لغة asm
في معمارية المعالجات مثلا amd و arm و mips و intel باستخدام اداة radare2 عندما اقوم بتنقيح الملف بعد فك الضغط عليه تضهر بهيئة 64 بيت 

[صورة مرفقة: 934986887.png]




سؤال 
هل من الممكن تنقيح الملف بهاته الطريقة  اي عل هيئة 64 بيت من دون اختيار المعالج arm و mips ي
رَبِّ إِنِّي لِمَا أَنْزَلْتَ إِلَيَّ مِنْ خَيْرٍ فَقِيرٌ 
أعضاء أعجبوا بهذه المشاركة :
#62
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 كذلك
سبحان الله وبحمده، سبحان الله العظيم
أعضاء أعجبوا بهذه المشاركة :
#63
هلا اخي [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 ممكن توضيح
رَبِّ إِنِّي لِمَا أَنْزَلْتَ إِلَيَّ مِنْ خَيْرٍ فَقِيرٌ 
أعضاء أعجبوا بهذه المشاركة : Gu-sung18
#64
إقتباس :دائما مايضهر لدي 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

[صورة مرفقة: VJ7o8Rh.png]
او يمكنك عمل ذلك قبل تشغيل البرنامج
[صورة مرفقة: LowxvSS.png]
يمكنك كذلك ان تكتب الامر
i
من داخل المنقح  وبعدما تتعرف على البرنامج تضبط نوع المعالج والمسجلات
[صورة مرفقة: E4OpmDv.png]
ضبط المعالج كـ arm
[صورة مرفقة: ZnQcqwG.png]
في حال نسيت اسم المعالج واردت قائمة بالمعالجات المدعومة
e asm.arch=?


[صورة مرفقة: 7YYkGrN.png]

كذلك يوجد امر سوف يفيدك جداً وهو امر يشرح سطور الاسمبلي التي تظهر على الشاشة وكان مفيد جداً لي
[صورة مرفقة: QebxcJ7.png]

الصورة فوق هي قبل تنفيذ الامر
نفذ
e asm.describe

واذا كانت القيمة false اجعلها true
e asm.describe = true
[صورة مرفقة: DJDO2IR.png]
انظر كيف ستظهر
[صورة مرفقة: Y6tKiis.png]
[صورة مرفقة: DvM4bsN.png]
سبحان الله وبحمده، سبحان الله العظيم
أعضاء أعجبوا بهذه المشاركة :
#65
امر 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 كتب : كذلك يوجد امر سوف يفيدك جداً وهو امر يشرح سطور الاسمبلي التي تظهر على الشاشة وكان مفيد جداً لي
[صورة مرفقة: QebxcJ7.png]

ما مدي دقة المعلومات التي يقدمها
رَبِّ إِنِّي لِمَا أَنْزَلْتَ إِلَيَّ مِنْ خَيْرٍ فَقِيرٌ 
أعضاء أعجبوا بهذه المشاركة :
#66
(13-07-2020, 07:32 AM)Polia كتب : اضن ان المعلومات التي يقدمها RABIN لملفات BIN قليلة مقارنة بـ EXE 

ملفات الانظمة المضمنة (embedded system) تحوي معلومات قليلة وشاذة ولا تلتزم بمعايير قياسية عكس ملفات انظمة الحواسيب، مثلاً صيغة EXE هي تابعة لويندوز ولها معايير قياسية وتوثيق رسمي من خلال الرجوع له يمكنك معرفة جميع التفاصيل.
بعض الانظمة المضمنة تحتاج ادوات خاصة بها للتعرف عليها والتعامل معها.

ارفع الملف اذا كان ممكن.
 
إقتباس :ما مدي دقة المعلومات التي يقدمها

المعلومات التي يقدمها دقيقة لانه يشرح ماذا تعني التعليمة. خلي بالك انه يشرح كل تعليمة على حدى وليس تحليل للبرنامج ككل.  يقدم فقط الـDescrpition لتعليمات الاسمبلي

مثلاً  يقول لك ماذا تعني التعليمات  ldr x1, address
ldr x1, 0x41e808

ماذا تعني mov ماذا تعني ماذا تعني add  ماذا تعني b
كذلك في لغة الاسمبلي التعليمة اذا اتى ورائها تعليمة (تعليمات) معينة يشرح ماذا تعني هذه التعليمة (او التعليمات) بالاضافة الى التعليمة الاساس. هذا حسب الساينتكس تبع لغة برمجة اسمبلي.

هذا كمثال من لغة اسمبلي ARM:
[صورة مرفقة: 1RYFOh4.png]
سبحان الله وبحمده، سبحان الله العظيم
أعضاء أعجبوا بهذه المشاركة : Polia
#67
(13-07-2020, 11:25 AM)Gu-sung18 كتب : ا تعني mov ماذا تعني ماذا تعني add  ماذا تعني b
كذلك في لغة الاسمبلي التعليمة اذا اتى ورائها تعليمة (تعليمات) معينة يشرح ماذا تعني هذه التعليمة (او التعليمات) بالاضافة الى التعليمة الاساس. هذا حسب الساينتكس تبع لغة برمجة اسمبلي.

هذا كمثال من لغة اسمبلي ARM:

شكرا لك حقيقة اريد التخصص في الهندسة العكسية لملفات الـ bin
رَبِّ إِنِّي لِمَا أَنْزَلْتَ إِلَيَّ مِنْ خَيْرٍ فَقِيرٌ 
أعضاء أعجبوا بهذه المشاركة :
#68
هل يوجد طريقة لمعرفة المعالج الدي يتعامل معه الملف هل هو 16 ام 32 bit
رَبِّ إِنِّي لِمَا أَنْزَلْتَ إِلَيَّ مِنْ خَيْرٍ فَقِيرٌ 
أعضاء أعجبوا بهذه المشاركة :
#69
في عالم الـ microprocessors ستجد اشكال واصناف من المعالجات وهي ليست محصورة بـ 16 او 32 بت. الامر الاصعب هو تحديد المعالج المستخدم. انت طرحت موضوع سابق يخص هذا الامر ( معرفة معالجات اجهزة الأستقبال) وتبين ان الموضوع صعب.

بعض الـ microprocessors يحتاج ادواتة الخاصة للتعرف علية والتعامل معه ولن تفلح معه الادوات العادية.

الطريقة العامة هي فتح الجهاز (في حال اسم الجهاز لم يأتي بشيء مفيد)  وقرائة اسم المعالج والبحث بالنت عن معلومات عنه وتوثيق رسمي من الشركة المنتجة يشرح كيف يعمل
 والطريقة الثانية التخمين وهي تحوي الكثير من الطرق وانا لا اعرف اغلبها ولكن اشهرها تتمثل بفتح الملف  بالـ disassembler وتجربة عدة معالجات شهيرة ومحاولة معرفة ما اذا كانت  البيانات لها معنى لانها ستكون لها معنى عندما تفتح عن طريق الـ disassembler واختيار  المعالج الصحيح وهذا يتطلب خبرة بعدة معالجات لمعرفة ما اذا كانت التعليمات لها معنى صحيح ام لا.

لذلك قبل اللجوء لطرق التخمين نجرب البحث عن اسم المنتج ونحاول عن طريق جوجل معرفة اسم المعالج وكذلك عرض مسجلاتة و البحث عن الـ Development Kit والتي يستخدمها المبرمجين للتعامل مع هذا الجهاز او المعالج والتي تحوي جميع الادوات والمعلومات الازمة عن الملف المنتج.
سبحان الله وبحمده، سبحان الله العظيم
أعضاء أعجبوا بهذه المشاركة :
#70
(14-07-2020, 10:47 AM)Gu-sung18 كتب : في عالم الـ microprocessors ستجد اشكال واصناف من المعالجات وهي ليست محصورة بـ 16 او 32 بت. الامر الاصعب هو تحديد المعالج المستخدم. انت طرحت موضوع سابق يخص هذا الامر ( معرفة معالجات اجهزة الأستقبال) وتبين ان الموضوع صعب.

بعض الـ microprocessors يحتاج ادواتة الخاصة للتعرف علية والتعامل معه ولن تفلح معه الادوات العادية.

الطريقة العامة هي فتح الجهاز (في حال اسم الجهاز لم يأتي بشيء مفيد)  وقرائة اسم المعالج والبحث بالنت عن معلومات عنه وتوثيق رسمي من الشركة المنتجة يشرح كيف يعمل
 والطريقة الثانية التخمين وهي تحوي الكثير من الطرق وانا لا اعرف اغلبها ولكن اشهرها تتمثل بفتح الملف  بالـ disassembler وتجربة عدة معالجات شهيرة ومحاولة معرفة ما اذا كانت  البيانات لها معنى لانها ستكون لها معنى عندما تفتح عن طريق الـ disassembler واختيار  المعالج الصحيح وهذا يتطلب خبرة بعدة معالجات لمعرفة ما اذا كانت التعليمات لها معنى صحيح ام لا.

لذلك قبل اللجوء لطرق التخمين نجرب البحث عن اسم المنتج ونحاول عن طريق جوجل معرفة اسم المعالج وكذلك عرض مسجلاتة و البحث عن الـ Development Kit والتي يستخدمها المبرمجين للتعامل مع هذا الجهاز او المعالج والتي تحوي جميع الادوات والمعلومات الازمة عن الملف المنتج.

بعد فتح جهاز الدي سأتعامل معه بحثت عن اسم المعالج ووجدت هاته الصورة 

[صورة مرفقة: 537598713.jpg]



بعد بحثي عن معمارية المعالج لم اجد وكل الروابط معطوبة

رابط 

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
رَبِّ إِنِّي لِمَا أَنْزَلْتَ إِلَيَّ مِنْ خَيْرٍ فَقِيرٌ 
أعضاء أعجبوا بهذه المشاركة :


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 21 ) ضيف كريم