Основним результатом діяльності групи розробників є не діаграми, а програмне забезпечення, тому моделі і засновані на них реалізації повинні відповідати один одному з мінімальними витратами по підтриманню синхронізації між ними. Найчастіше розроблені моделі перетворяться в програмний код. Зворотним проектуванням (Reverse engineering) називається процес перетворення в модель коду, записаного на якій-небудь мові програмування. В результаті цього процесу ви отримуєте величезний обсяг інформації, частина якої знаходиться на більш низькому рівні деталізації, ніж необхідно для побудови корисних моделей. У той же час зворотне проектування ніколи не буває повним. Справа в тому, що пряме проектування, яке передує зворотньому проектуванню, веде до втрати інформації, так що повністю відновити модель на основі коду не вдасться, якщо тільки інструментальні засоби не включали в коментарях до вихідного тексту інформацію, що виходить за межі семантики мови реалізації.
Ідентифікуються правила для перетворення з обраної мови реалізації. Це можна зробити на рівні проекту або організації в цілому.
За допомогою інструментального засобу вказується код, який буде підданий зворотного проектування.
Використовуючи інструментальні засоби, створюється діаграма класів шляхом опитування отриманої моделі. Слід почати, наприклад, з одного або декількох класів, а потім розширити діаграму, слідуючи вздовж деяких відносин або додавши сусідні класи. При цьому можна розкрити або заховати деталі змісту діаграми в залежності від ваших намірів. У статті ми підібрали список чудових ресурсів реверсування, які можуть знадобитися на практиці.
Практикуйте зворотне проектування. Будьте обережні зі шкідливим програмним забезпеченням.
Cerbero Profiler – Select all -> Copy to new file
AppEncryptor – Інструмент для дешифрування
Class-Dump – Використання опції зняття захисту
readmem – Інструмент скидання процесів OS X Reverser