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:

Risitex86 (ia32)x86_64MipsPowerPCmc68kARM
DisamblesuesiE kryerE kryerE kryerE kryerE kryerE planifikuar
PE COFF fillesaE kryerE kryern/an/an/an/a
ELF fillesaE kryerE kryerE kryerE kryerE kryerE planifikuar
COFF fillesaE kryerE kryern/an/aE kryern/a
Mac OS X fillesaE kryerE kryern/aE planifikuarn/aE planifikuar
Dwarf2 informacioni simbolikE kryerE kryerE kryerE kryern/aE planifikuar
COFF informacioni simbolikE planifikuarn/an/an/aE planifikuarn/a
Konventat e thirruraNe progresNe progresNe progresE planifikuarE planifikuarE planifikuar
32 dhe 64 bitNe progresNe progresn/an/an/an/a
Pike-notueseE planifikuarE planifikuarn/an/an/an/a
Debug I WindowsNe progresE planifikuarn/an/an/an/a
Gdb DebugNe progresNe progresn/an/an/an/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.