تقييم الموضوع :
  • 9 أصوات - بمعدل 3.78
  • 1
  • 2
  • 3
  • 4
  • 5
هل يمكن قراءة سورس كود برنامج مبني ب microsoft visual c++ 5.12
#1
السلام عليكم  
 لقد قمت بكسر حماية لودر مبني ب Microsoft visual c++5.12وأسأل ان كانت هناك طريقة لقراءة السورس كود  


وشكرااا
أعضاء أعجبوا بهذه المشاركة : mribraqdbra
#2
وعليكم السلام
يبدو انه لديك مفهوم خاطئ عن الهندسة العكسية وارجاع السورس كود لبرنامج ما.
دعني اوضح أولاً حياة البرنامج التنفيذي، انظر هنا:
[صورة مرفقة: Mxe6LR2.png]
كما موضح اعلاه، فالخطوة الاولى عندما تبرمج برنامج بلغة سي++ فانت ستكتب السورس كود اما في محرر (مثل ++notepad)  او بيئة تطوير (مثل Visual Studio او Xcode) وستحفظ الملف، الملف سيحفظ بصيغة CPP
كما في اعلاه (على سبيل المثال Test.cpp)
الـPreprocessor   هي مرحلة تسبق عملية الترجمة compile إذا تتم معالجة مسبقة للسورس كود قبل تمريره إلى المترجم compiler وكمثال بسيط عندما يكون هناك أمر توجيهي include فإنه يتم البحث عن المكتبة أو الملف المحدد ويتم تضمينه في الملف المصدري. إذ أن مهام المعالجة المسبقة preprocessor لا تتعلق بتنفيذ الكود وترجمته وإنما في بعض الإجرائيات الغير تنفيذية وإنما التوجيهية directive كما سنرى لاحقاً كالبحث عن الكلمات الرمزية المعرفة واستبدالها بالتعريفات الخاصة بها.
الـCompiler سيأخذ السورس كود ويحولة الى لغة الاسمبلي
الـAssembler سيحول اكواد الاسمبلي الى object code  (ملف ينتهي بصيغة o.  على لينكس و OBJ .على ويندوز)
الـ Linker سيأخذ الـ  object code  ويربط معها الـ library  ويحولها لملف تنفيذي (البرنامج النهائي الذي نشغله)
------------
الان نأتي الى البرنامج Test.exe والذي هو حالياً بلغة الالة (اللغة التي يفهمها المعالج وهي متكونة من 1 و 0 ) اذا اردنا ان نقوم بالهندسة العكسية له عن طريق منقح مثل ollydbg او disassembler مثل ida pro
فكل عملها هو مجرد تحويل لغة الاله ( او  عكسها بمعنى ادق) الى لغة الاسمبلي. يوجد برامج تحول لغة الاسمبلي الى لغة سي مزيفة او ما يسمى بـ Pseudocode ولكنه ليس الكود الحقيقي الذي كتبة المبرمج.
بأختصار بمجرد تحول البرنامج الى لغة الاله فمن المستحيل الحصول على السورس كود الخاص به، ذهب، اختفى من الوجود ولن يعود موجودا  داخل البرنامج واقصى ما يمكنك عملة هو الحصول على كود اسمبلي للبرنامج او  كود Pseudocode.
-----------
لمن لم توضح له الفكرة
هذا كود سي++
#include <iostream>
using namespace std;

int main()
{
    cout << "Hello, World!";
    return 0;
}
سيحوله الـCompiler الى كود اسمبلي
_main PROC
  push ebp
  mov ebp, esp
  push OFFSET $SG28103
  push OFFSET std::basic_ostream<char,std::char_traits<char> > std::cout ; std::cout
  call std::basic_ostream<char,std::char_traits<char> > & std::operator<<<std::char_traits<char> >(std::basic_ostream<char,std::char_traits<char> > &,char const *) ; std::operator<<<std::char_traits<char> >
  add esp, 8
  xor eax, eax
  pop ebp
  ret 0
_main ENDP
فهذا كل ما موجود   وكود سي++ في الاعلى اختفى بدون رجعه
سبحان الله وبحمده، سبحان الله العظيم
أعضاء أعجبوا بهذه المشاركة : x-member , [email protected] , mribraqdbra
#3
(17-01-2019, 07:33 PM)djamel كتب : السلام عليكم  
 لقد قمت بكسر حماية لودر مبني ب Microsoft visual c++5.12وأسأل ان كانت هناك طريقة لقراءة السورس كود  
 

السلام عليكم 
بدل أن تبحث عن الكود سورس للبرنامج لأن هذا مستحيل حاول أن تفهم آلية عمله و الخوارزميات التي يعمل بها و قم بكتابة البرنامج من جديد و باللغة التي تجيدها لأن هذا هو أساس الهندسة العكسية 
بالتوفيق.
أعضاء أعجبوا بهذه المشاركة : x-member , mribraqdbra
#4
شكراااا صديقي  وضحت الأمر بشكل جيد جدا شكرااااااااا
أعضاء أعجبوا بهذه المشاركة : mribraqdbra
#5
جزاكم الله خيرا على كل حرف!
ونسال الله التوفيق للجميع!

لماذا ليس هناك نهاية سعيدة؟ لماذا لا ينغلق الموضوع بعد الافادة؟
أعضاء أعجبوا بهذه المشاركة :


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


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