октомври 5, 2016

Компајлерот Дизајн – Вовед

Source: http://www.backerstreet.com/decompiler/introduction.htm

Вовед
Декомпилација е форма на обратен инженеринг на компјутерски програми. Неговата цел е да ги конвертирате Составувач бинарна датотека во изворна датотека. Еден може да го стори тоа поради неколку причини, како на пример да се разбере како работи програмата, или да се обиде да го измените програмата за да ја подобрат или поправи грешката.

Декомпилација е околу за многу години, веројатно уште од луѓето почнаа да ги собере програми од високо ниво јазици на формати на пониско ниво, како што се собирање и машински код.

Неколку обиди биле спроведени во пишување бинарна извршна детранслятор. Оваа страница има некои примери.

Постојат дури и повеќе достапни за успеа околини кои користат бајт код, како Java и C # детранслятор. Богата листа е на располагање во вики трансформација програма.

На овие страници ќе се фокусираме на детранслятор на бинарни извршни, или од машински код на изворниот код, бидејќи тоа е многу потешко отколку детранслятор Јава бајт-код или C #.

Повеќе јазици и компајлери може да произведе машина код, вклучувајќи и некои Java, C # и Visual Basic компајлери. Затоа детранслятор ќе треба да се знае кој јазик се користи за да ги собере на програмата, и ќе треба да имаат поддршка за генерирање на тој јазик. Сепак, повеќето од тешки проблеми во детранслятор се појавуваат кога се користи помалку рестриктивни јазици, имено, Ц, Pascal или C ++.

Поголемиот дел од алгоритми може да се користи за сите јазици, па така најмногу ќе се користи примери напишани во C. Кога ќе се покаже алгоритам, ние ќе користат C или C ++, бидејќи тие се повеќето достапни јазици на Linux и Windows.

Без оглед на јазикот цел, на детранслятор претежно се занимаваат со 3 видови на субјекти:

  • Код објекти (функции, извештаи)
  • Објекти на податоци (глобални и локални променливи)
  • Видови (променлива видови, функција прототипови)

Постојаното проблемот на детранслятор е да се обиде да се изведе една или повеќе од три лица, погоре низа од бајти најде во бинарна датотека. Со цел да го направите ова, тоа е корисно да се знае како се користат алатки за развој (што ние го нарекуваме “напред инженеринг алатки) кога пишување програма, бидејќи тоа е процес што се обидуваме да ја вратите.