Rec

REC Studio 4 – Kompiluesi i Inxhinierise së Kundërt

Original Source: http://www.backerstreet.com/rec/rec.htm

REC Studio është një dekompilues interaktive.
Ai lexon një skedar të ekzekutueshëm të Windows, Linux, Mac OS X ose skedar të ekzekutueshëm, dhe përpiqet të prodhojë një përfaqësim C të kodit dhe të dhënave të përdorura për të ndërtuar skedarin e ekzekutueshëm.
Është projektuar për të lexuar skedarët e prodhuar për shumë objektiva të ndryshëm dhe është hartuar në disa sisteme pritëse.

REC Studio 4 është një rishkrim i plotë i decompiler origjinal REC. Ai përdor teknika më të fuqishme të analizës, si p.sh. SNA (Single Static Assignment), lejon ngarkimin e skedarëve Mac OS X dhe mbështet binarët 32 dhe 64 bit.
Edhe pse ende në zhvillim e sipër, ajo ka arritur një fazë që e bën më të dobishme se sa Rec Studio e vjetër 2.

Rec Studio 2 faqe janë këtu.

Risite

Siç u përmend, Rec Studio 4 është ende në zhvillim e sipër. Shumica e tipareve të pavarura të objektivave janë përfunduar, siç janë:

Multihost: Rec Studio shkon në Windows XP / Vista / 7, Ubuntu Linux, Mac OS X.
Mbështetja simbolike e informacionit duke përdorur Xhuxhi 2 dhe njohjen e pjesshme të formatit PDB të Microsoft.
C + + njihet pjesërisht: emrat e prishur të krijuara nga gcc janë të demangled, si dhe trashëgimia e përshkruar në xhuxh2 është nderuar. Megjithatë, C ++ është një gjuhë shumë e gjerë dhe e vështirë, kështu që disa karakteristika si shabllona nuk do të mbështeten ndonjëherë.
Llojet dhe definicionet e funksioneve të prototipit mund të specifikohen në skedarët e tekstit. Disa standarde Posix dhe Windows API janë siguruar tashmë në paketën Rec Studio.
Interaktiviteti mbështetet, kufizohet në përcaktimin e seksioneve, etiketave dhe pikave hyrëse të funksionit. Duhet ta përmirësojë atë për të mbështetur përkufizimin në programin e llojeve dhe parametrave të funksionimit.
Kjo tabelë tregon karakteristikat e veçanta të synuara që janë zbatuar deri më tani:

Risite x86 (ia32) x86_64 Mips PowerPC mc68k ARM
Disamblesuesi E kryer E kryer E kryer E kryer E kryer E planifikuar
PE COFF fillesa E kryer E kryer n/a n/a n/a n/a
ELF fillesa E kryer E kryer E kryer E kryer E kryer E planifikuar
COFF fillesa E kryer E kryer n/a n/a E kryer n/a
Mac OS X fillesa E kryer E kryer n/a E planifikuar n/a E planifikuar
Dwarf2 informacioni simbolik E kryer E kryer E kryer E kryer n/a E planifikuar
COFF informacioni simbolik E planifikuar n/a n/a n/a E planifikuar n/a
Konventat e thirrura Ne progres Ne progres Ne progres E planifikuar E planifikuar E planifikuar
32 dhe 64 bit Ne progres Ne progres n/a n/a n/a n/a
Pike-notuese E planifikuar E planifikuar n/a n/a n/a n/a
Debug I Windows Ne progres E planifikuar n/a n/a n/a n/a
Gdb Debug Ne progres Ne progres n/a n/a n/a n/a

Burimet REC nuk janë në domenin publik.

Megjithëse REC mund të lexojë skedarët ekzistues Win32 (aka PE) të prodhuara nga Visual C ++ ose Visual Basic 5, ka kufizime në prodhimin e prodhuar. REC do të përpiqet të përdorë çfarëdo informacioni që është i pranishëm në tabelën e simbolit .EXE. Nëse skedari .EXE është përpiluar pa debugging informacion, nëse është përdorur një skedar bazë të dhënash programesh (.PDB) ose Codeview (C7), ose nëse opsioni i optimizimit të përpiluesit është aktivizuar, prodhimi i prodhuar nuk do të jetë shumë i mirë. Për më tepër, skedarët e ekzekutueshëm të Visual Basic 5 janë një përzierje e kodit Subroutine dhe të dhënave të Formës. Është pothuajse e pamundur që REC të përcaktoj se cila është ajo. E vetmja mundësi është të përdorësh një skedar .cmd dhe të përcaktosh manualisht se cila zonë është kod dhe cila zonë është e të dhënave.

Në praktikë, vetëm skedarët e ekzekutueshëm C prodhojnë një dalje kuptimplote të dekompiluar.

Referenca

Disa dekompilues të tjerë janë në dispozicion nga burime të ndryshme. Shikoni faqen time të kundërt të inxhinierisë për një listë.
Përkundrazi, arkitektura e brendshme e një decompiler është shumë e ngjashme me atë të një përpilues. Literatura me cilësi të lartë ekziston për të dyja. Faqja Design Notes ka informacion mbi problemet që një shkrimtar decompiler përballet kur përpiqen të dekompozojnë programe paksa më komplekse sesa testet e thjeshtë të njësisë.
Faqe e decompilation ka lidhje dhe dokumentacion në lidhje me decompilers në përgjithësi.

Teza e doktoraturës së Mike Van Emmerik avanconte në mënyrë të ndjeshme fushën e decompilation duke përvijuar zgjidhje për problemet themelore në decompilation e programeve binare.

Teknika e përpilimit të kundërt të Cristina Cifuentes Teza e doktoraturës përshkruan në detaje teorinë dhe zbatimin e decompiler dcc për programet 8086 DOS.

Faqja Wotsit ka lidhje me specifikimet e formave të skedarëve të objekteve si COFF dhe ELF.

Disa koncepte që lidhen me analizën e kodeve janë të mbuluara në faqet e Përcaktimit të Debugger.

Libra të tjerë themelorë që kam përdorur gjatë zhvillimit janë:

“Hartuesit – Parimet, Teknikat dhe Veglat”, Aho, Sethi, Ullman, 1986 Addison-Wesley Publishing Co. ISBN 0-201-10088-6.
“Hartimi dhe zbatimi i avancuar i përpiluesit”, Steven Muchnick, 1997 Botuesit e Morgan Kaufmann, ISBN 1-55860-320-4.
“Si punojnë debuggers – algoritme, struktura të të dhënave dhe arkitekturë”, Jonathan Rosemberg, 1996 John Wiley and Sons, ISBN 0-471-14966-7.
Disassemblers përdorur në REC janë marrë nga burime të ndryshme. Kopjimi i skedarit në shpërndarjen ka një listë kredish për secilin prej disassemblers të përdorur në REC. Pjesa tjetër e kodit u shkrua nga vetja gjatë 25 viteve të fundit. Unë do të vazhdoj të përmirësoj REC në kohën time të lirë, por unë nuk mund të garantoj që unë të mund të rregulloj bugs ose të shtoni karakteristika të reja, përpunuesit, ose ushtrive.

Verejtje

Ka shumë diskutime për ligjshmërinë e dekompilimit. Mjetet e Decompiler kanë qenë në dispozicion për një shumëllojshmëri platformash për një kohë të gjatë. Decompilers, së bashku me mjete të tjera si debuggers, redaktorët binar, disassemblers etj duhet të përdoren vetëm kur pronari i një programi ka të drejtën ligjore për të kthyer inxhinier programin.

Është vërtetuar nga gjykatat e Shteteve të Bashkuara dhe vendeve të tjera se është e ligjshme të përdorësh dekompiluesit sipas klauzolës së përdorimit të drejtë të ligjit të autorit.

Për të gjetur se kur është e ligjshme të përdoret një decompiler, duhet të lexoni tekstin e rasteve të mëposhtme:

Sega Enterprises Ltd kundër Accolade, Inc.
Atari Games Corp v. Nintendo of America, Inc.
Lexoni gjithashtu një diskutim mbi ligjshmërinë e përdorimit të një emulatori për të drejtuar një program binar në një host tjetër.
Software Backer Street nuk mbështet përdorimin e mjeteve inxhinierike të kundërt për qëllime të paligjshme.