На жаль, я втратив свій вихідний код, і у мене просто є вихідний файл, який було зроблено з gcc в Linux, і я не маю доступу до мого ПК зараз.
На жаль, я втратив свій вихідний код, і у мене просто є вихідний файл, який було зроблено з gcc в Linux, і я не маю доступу до мого ПК зараз.
Відповіді:
Отже, у вас була корова, але ви ненароком перетворили її на гамбургер, і тепер ви хочете, щоб ваша корова була назад.
Вибачте, це просто не працює таким чином.
Просто відновіть вихідний файл із резервних копій.
Ах, у вас не було резервних копій. На жаль, Всесвіт не дає тобі відпочити.
Ви можете декомпілювати двійкове. Це не дасть вам вихідний код, але це дасть вам деякий вихідний код з тим же поведінкою. Ви не отримаєте імен змінних, якщо це не було бінарним налагодженням. Ви точно не будете отримувати таку ж логіку, якщо не будете складені без оптимізацій. Очевидно, ви не отримаєте коментарів.
Я використовував Boomerang для декомпіляції деяких програм, і результат був більш читабельним, ніж машинний код. Я не знаю, чи це найкращий інструмент там. У всякому разі, не чекайте чудес.
Кілька інструментів є загальними для зворотного проектування виконуваного файлу.
У більшості випадків, які я бачив, код потрібно було переписати з нуля, підтримувати як програму мовної збірки або відновити шляхом повторного застосування запитів на зміни до старій версії.
Те, що ви хочете зробити, називається "декомпілюванням". Там є багато декомпіляторів, і тут не практично їх висвітлювати.
Однак, як загальне зауваження: Перетворення з джерела C у виконуваний машинний код є втратним. Наприклад:
Рідко зустрічається код, як писати. Більшість компіляторів сьогодні різко змінить ваш код, щоб оптимізувати його. Отже, коли ви декомпілюєте, компілятор може лише здогадуватися, як повинен був виглядати вихідний код, він не може знати, яким був ваш код, тому що цього немає. Якщо декомпілятор хороший, отриманий код, принаймні, можна буде скласти назад в еквівалентний виконуваний файл, і тоді ви можете почати повільно переробляти його для читання. Але, швидше за все, декомпілятор видасть абсолютно нечитабельний код спагетті, і розшифрувати його буде величезний головний біль. Іноді це може призвести до меншої роботи, щоб просто переписати програму з нуля.