Permalänk
Medlem

compilerad kod till c/c++

Hej!

Jag har hört att det finns program som kan skriva färdig compilerad kod till c/c++ om det är skrivet i något av dem språken och undra om det är sant?
Så fall kan någon ge tips på ett sådan program för linux?

tack för svar!

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem
Skrivet av Mejan:

Hej!

Jag har hört att det finns program som kan skriva färdig compilerad kod till c/c++ om det är skrivet i något av dem språken och undra om det är sant?
Så fall kan någon ge tips på ett sådan program för linux?

tack för svar!

Du menar att du vill extrahera ett kompilerat program till kod? dvs decompiler för C/C++?
Eller är det själva kompilatorn du är ute efter?

Visa signatur

"One is always considered mad, when one discovers something that others cannot grasp."
- Ed Wood

Permalänk
Medlem
Permalänk
Hedersmedlem

Tog bort ett inlägg som inte var hjälpsamt.

MVH
Moderator Shimonu

Permalänk
Hedersmedlem

Som nämndes kort ovan så är du ute efter begreppet "decompiler". Läs inte minst om lagrummet för dekompilering i artikeln.

För C/C++ och Linux finns exempelvis Hex-Rays (kommersiell produkt, dyr) och Boomerang (öppen och gratis). Blogginlägg med en exempelkörning med Hex-Rays — kan vara bra att titta på för att se vad en dekompilator faktiskt kan göra, så att man inte tror att det trillar ut perfekt färdig kod bara man trycker på en knapp.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem

jaa exakt en dekompilering låter som rätt ord!

Visa signatur

Смерть -это решение всех проблем. Нет человека - нет проблемы
Comp1: Ubuntu 16.04 Comp2: Arch Linux
Comp3: Ubuntu Server 16.04 Comp4: Centos 6.5
Comp5: Linux mint 16 Comp6: Raspberry pi (olika OS hela tiden)
Phone: Motorola Google Nexus 6

Permalänk
Medlem
Skrivet av phz:

Som nämndes kort ovan så är du ute efter begreppet "decompiler". Läs inte minst om lagrummet för dekompilering i artikeln.

För C/C++ och Linux finns exempelvis Hex-Rays (kommersiell produkt, dyr) och Boomerang (öppen och gratis). Blogginlägg med en exempelkörning med Hex-Rays — kan vara bra att titta på för att se vad en dekompilator faktiskt kan göra, så att man inte tror att det trillar ut perfekt färdig kod bara man trycker på en knapp.

C# och Java är inga problem att reversera från objekt till källkod, men det beror ju på att metainformationen om klasserna finns kvar. Däremot så är det möjligt att reversera C++ och C, plus ett antal andra språk till klasser igen, så länge man vet vilken kompilator som använts och man har tillgång till dess grammatik och regler.

Men om man inte har någon som helst metainformation om klassnamn, funktionsnamn osv så blir reverseringens nomenklatura rätt omänsklig att läsa, eftersom man helt enkelt är tvungen att döpa klassen till något helt generat efter någon viss regel, eller helt enkelt slumpa funktionsnamn.

Däremot kommer det vara möjligt att se vad programmet interagerar med i operativsystemet och därigenom kan man gissa sig till funktionaliteten hos olika delar av programmet. Det går ju även att omvandla objektkoden till assembler och läsa denna.

Permalänk
Medlem

Men just när det gäller linux är de flesta program open source så ofta finns källkoden till alla program tillgänglig. Trevligt om man vill studera hur andra gjort när de skapat programmen. Inget svar på frågan dock. Kör man open source är behovet av decompiler inte särskilt stort. Kör man inte open source så är det ändå tveksamt till vilken nytta man har av en decompiler eftersom det antagligen ändå inte är tillåtet att reverse-engineera skyddad programkod.

Kan i och för sig vara intressant att förstå hur det fungerar om man själv vill skydda sin källkod från obehörig insyn.

Permalänk
Medlem
Skrivet av ronnylov:

Men just när det gäller linux är de flesta program open source så ofta finns källkoden till alla program tillgänglig. Trevligt om man vill studera hur andra gjort när de skapat programmen. Inget svar på frågan dock. Kör man open source är behovet av decompiler inte särskilt stort. Kör man inte open source så är det ändå tveksamt till vilken nytta man har av en decompiler eftersom det antagligen ändå inte är tillåtet att reverse-engineera skyddad programkod.

Kan i och för sig vara intressant att förstå hur det fungerar om man själv vill skydda sin källkod från obehörig insyn.

En av anledningarna kan vara att porta ett spel med closed source till en helt annan plattform/processor.
http://boards.openpandora.org/topic/15820-starcraft

Permalänk
Medlem
Skrivet av Mejan:

jaa exakt en dekompilering låter som rätt ord!

Tyvärr är det rätt kört då, du kan få ut lite men du får ingen struktur i det och optimeringar etc gör att det oftast är lättare att ge sig på det i hex.

Visa signatur

"One is always considered mad, when one discovers something that others cannot grasp."
- Ed Wood