Основні поняття та положення ООП
Для початку треба визначитися з такими поняттями, як: компілятор, декомпілятор та, найголовнішим, ООП.
Компілятор
Компілятор - це програмне забезпечення, яке перетворює вихідний код високого рівня, який записується розробником мовою програмування високого рівня, в об'єктний код низького рівня (двійковий код) в машинну мову, який може бути зрозумілий процесором. Процес перетворення програмування високого рівня в машинну мову відомий як компіляція.
Процесор виконує об'єктний код, який вказує, коли в арифметичній логічній одиниці процесора потрібні двійкові високі та низькі сигнали.
Компілятори, які створюють об'єктний код, призначений для роботи в системі, називаються крос-компіляторами. Нарешті, компілятор, який перетворює одну мову програмування в іншу, називається мовним перекладачем.
Декомпілятор
Декомпілятор - це програма, яка транслює виконуваний модуль (отриманий на виході компілятора) у відносно еквівалентний вихідний код на мові програмування високого рівня.
Декомпіляція - процес відтворення вихідного коду декомпілятор.
Декомпіляція, зокрема, використовується при зворотній розробці програм.
Вдалість декомпіляції залежить від обсягу інформації, представленої в декомпіліруемой коді. Байт-код, що використовується більшістю віртуальних машин (таких як Java Virtual Machine або .NET Framework Common Language Runtime) часто містить обширні метадані, що роблять декомпіляцію цілком здійсненним, в той час як машинний код скромніший і складний в декомпіляцію. Зокрема важкозчитуваних представляються виклики підпрограм або функцій з непрямою адресацією викликів(в термінах мов програмування високого рівня - виклики через покажчики на функції / процедури).
Якщо відомо якою мовою була написана комп'ютерної програми, то в першу чергу дисасемблеруються і аналізуються бібліотеки часу виконання(RTL - runtime library) компілятора з цієї мови, оскільки в основному компіляція програми зводиться до викликів з різними параметрами процедур з цих бібліотек. Крім того, багато компіляторів дозволяють побачити, в якій асемблерний код перетворюються оператори програми після компіляції. Ці конструкції стають шаблонами для декомпілятор, тому процес декомпіляцію в деякому розумінні схожий на розпізнавання в машинному коді кінцевого набору подібних шаблонів. Найлегше розпізнаються виклики процедур і повернення з них. Вони служать границями для відновлення операторів процедури.
ООП
Достарыңызбен бөлісу: |