Значење и употреба декомпилације

Једноставно говорећи, декомпилација је обрнута компилација: превођење извршне датотеке у језик вишег нивоа.

Претпоставимо да изгубите извор вашег Делпхи пројекта и имате само извршну датотеку: обрнути инжењеринг (декомпилација) је користан ако оригинални извори нису доступни.

Хм, "извори нису доступни", значи ли то да можемо декомпилирати Делпхи пројекте других људи? Па, да и не ...

Да ли је могућа истинска декомпилација?

Не наравно да не. Потпуно аутоматизована декомпилација није могућа - ниједан декомпајлер не може тачно да репродукује оригинални изворни код.

Када се Делпхи пројекат састави и повеже за производњу самосталне извршне датотеке, већина имена која се користе у програму се претвара у адресе. Овај губитак имена значи да би декомпилер морао да створи јединствена имена за све константе, променљиве, функције и процедуре. Чак и ако се постигне одређени степен успеха, генерираном „изворном коду“ недостаје смислена имена променљивих и функција.
Очигледно, синтакса изворног језика више не постоји у извршној датотеци. Декомпилеру би било веома тешко интерпретирати серију упутстава за машински језик (АСМ) које постоје у извршној датотеци и одлучити која је била оригинална инструкција извора.

instagram viewer

Зашто и када користити декомпилацију

Обрнути инжењеринг може се користити из неколико разлога, од којих су неки следећи:

  • Опоравак изгубљеног изворног кода
  • Миграција апликација на нову хардверску платформу
  • Утврђивање постојања вируса или злонамерног кода у програму
  • Исправка грешке када власник апликације није доступан да изврши исправку.
  • Опоравак туђег изворног кода (на пример за одређивање алгоритма).

Да ли је то легално?

Обрнути инжењеринг НИЈЕ ломљив, мада је понекад тешко повући танку линију између та два. Рачунарски програми заштићени су законима о ауторским правима и заштитним знаковима. Различите земље имају различите изузетке од права власника ауторских права. Они најчешћи наводе да је у реду декомпирати: у сврху интерпретације тамо где спецификација интерфејса није доступна, за сврхе исправке грешака где власник ауторских права није доступан да изврши исправку, да би одредио делове програма који нису заштићени Ауторско право. Наравно да бисте требали бити веома опрезни / обратите се свом адвокату ако сумњате да ли имате дозволу растављања еке датотеке неког програма.

Белешка: ако тражите Делпхи пукотине, генераторе кључева или само серијске бројеве: на погрешној сте локацији. Имајте на уму да је све што овдје пронађете написано / представљено само у истраживачке / образовне сврхе.

За сада Борланд не нуди ниједан производ који би могао декомпонирати извршну датотеку (.еке) или „Делпхи састављену јединицу“ (.дцу) назад у изворни изворни код (.пас).

Делпхи компајлирана јединица (ДЦУ)

Када се Делпхи пројекат састави или покрене састављена јединица (.пас) датотеке. По дефаулту је састављена верзија сваке јединице смештена у засебну датотеку бинарног формата са истим називом као и јединица датотеке, али са екстензијом .ДЦУ. На пример унит1.дцу садржи код и податке деклариране у датотеци унит1.пас.

То значи да ако имате неке, на пример, компонентни извор компилиран, све што морате да урадите је да га преокренете и добијете код. Погрешно. Формат датотеке ДЦУ је недокументиран (власнички формат) и може се мијењати од верзије до верзије.

После преводиоца: Делпхи Реверсе Енгинееринг

Ако желите да покушате да декомпилирате извршну датотеку Делпхи-а, ево неких ствари које бисте требали знати:

Изворне датотеке програма Делпхи обично се чувају у две врсте датотека: датотеке АСЦИИ кода (.пас, .дпр) и датотеке ресурса (.рес, .рц, .дфм, .дцр). Дфм датотеке садрже детаље (својства) објеката садржаних у обрасцу. Приликом стварања еке, Делпхи копира информације у .дфм датотеке у готову датотеку .еке. Датотеке обрасца описују сваку компоненту вашег обрасца, укључујући вриједности свих трајних својстава. Сваки пут када променимо позицију обрасца, натпис дугмета или доделимо поступак догађају компоненти, Делпхи упише те модификације у ДФМ датотеку (а не код поступка догађаја - ово се чува у пас / дцу датотека). Да бисмо добили „дфм“ из извршне датотеке, морамо да разумемо који су типови ресурса смештени у Вин32 извршној датотеци.

Сви програми које је саставио Делпхи имају следеће одељке: ЦОДЕ, ДАТА, БСС, .идата, тлс, .рдата, .рсрц. Најважнији са становишта рашчлањивања су одељци ЦОДЕ и .рсрц. У „Додавање функционалности у Делпхи програм"у чланку су приказане неке занимљиве чињенице о Делпхи формату извршних датотека, информацијама о класи и ДФМ ресурсима: како доделити догађаје како би се руковали другим руководиоцима догађаја дефинисаним у истом облику. Још више: како додати свој приручник за догађаје, додати код извршном документу, који ће променити наслов дугмета.

Међу многим врстама ресурса који се чувају у еке датотеци, РТ_РЦДАТА или ресурс дефиниран апликацијом (сирови подаци) садрже информације које су биле у ДФМ датотеци прије компилације. Да би извукли ДФМ податке из еке датотеке можемо позвати ЕнумРесоурцеНамес АПИ функција... За више информација о вађењу ДФМ-а из извршне датотеке погледајте: Кодирање истраживача Делпхи ДФМ чланак.

Уметност обрнутог инжењерства традиционално је била земља техничких чаробњака, упозната са језиком монтаже и програмима за уклањање погрешака. Појавило се неколико Делпхи декомпилера који омогућавају било коме, чак и са ограниченим техничким знањем, инжењеринг већине Делпхи-ових извршних датотека.

Ако вас занимају обрнути инжењеринг програми Делпхи, предлажем вам да погледате следећих неколико "декомпилера":

Декомпилер извршних датотека (ЕКСЕ) и динамичке библиотеке (ДЛЛ), написан у Делфи и извршен у Виндовс32 окружењу. Крајњи циљ пројекта је развој програма способног да обнови највећи део почетних Делпхија изворни кодови из компајлиране датотеке, али ИДР, као и други Делпхи декомпилатори, то још увек не могу. Без обзира на то, ИДР је у значајном стању који олакшава такав процес. У поређењу са другим добро познатим Делпхи-овим декомпилерима, резултат ИДР анализе има највећу потпуност и поузданост.

Ревендепро проналази готово све структуре (класе, типове, процедуре, итд.) У програму и генерише пасцал репрезентацију, процедуре ће бити написане у алата за склапање. Због неких ограничења у асемлеру, генерисани излаз се не може поново саставити. Извор овог декомпилера је слободно доступан. Нажалост, ово је једини декомпилер који нисам успео да употријебим - када се покуша декомпилирати нека Делпхи извршна датотека.

ЕМС Соурце Ресцуер је чаробна апликација једноставна за коришћење која вам може помоћи да вратите изгубљени изворни код. Ако изгубите изворе пројекта Делпхи или Ц ++ Буилдер, али имате извршну датотеку, тада овај алат може да спаси део изгубљених извора. Ресцуер производи све пројектне обрасце и модуле са свим додељеним својствима и догађајима. Израђене процедуре догађаја немају тело (није декомпилер), већ имају адресу кода у извршној датотеци. У већини случајева спасилац штеди 50-90% вашег времена за рестаурацију пројеката.

ДеДе је веома брз програм који може да анализира извршне датотеке компоноване са Делпхи-јем. Након декомпилације ДеДе вам даје следеће:

  • Све дфм датотеке циља. Моћи ћете их отворити и уредити помоћу Делпхија.
  • Све објављене методе у добро коментираном АСМ коду са референцама на жице, увезене позиве функција, позиве метода класа, компоненте у јединици, блокове Три-Екцепт и Три-Енд. ДеДе подразумевано дохваћа само изворе објављених метода, али можете извршити и другу процедуру у извршном документу ако знате померање РВА помоћу Алата | Раставите мени Проц.
  • Пуно додатних информација.
  • Можете да креирате директоријум пројекта Делпхи са свим дфм, пас, дпр датотекама. Напомена: пас датотеке садрже горе наведени добро коментирани АСМ код. Они се не могу прекомпоновати!
instagram story viewer