kod żródłowy po kompilacji





ldusza - 18 Sty 2007 15:15
witam.
NIewiem czy jest takie coś możliwe, ale mam taką sprawę.
1. Czy i jak można sprawdzić w jakim języku został napisany program już po kompilacji gdy jest w formie ".exe"
2. Czy moge wydobyć z niego kod źródłowy? Jeżeli mogę, to w jaki sposób?

A teraz dokładniej.
Znajomy ma taki problem, że ma pewien program, który chciałby przerobić pod siebie. Zwrócił się do mnie o pomoc, ale niestety niebyłem w stanie odpowiedzieć na jego pytanie. Męczy mnie już to od jakiegoś czasu :/
Proszę Was o pomoc.

Pozdrawiam





klina - 18 Sty 2007 17:05
Można wrócić do kodu w postaci komend Asemblera, ale analiza takiego kodu to dość żmudna sprawa. Jest tak dlatego żeby właśnie nie "grzebać" w komercyjnych programach (można je w ten sposób zcrackować). Niestety nie orientuję się w narzędziach darmowych do deasemblacji.



jankolo - 18 Sty 2007 20:42

1. Czy i jak można sprawdzić w jakim języku został napisany program już po kompilacji gdy jest w formie ".exe"
Najczęściej kompilator zostawia swoją sygnaturę w skompilowanym pliku. Należy plik exe obejrzeć przy pomocy dowolnego edytora szesnastkowego.

2. Czy moge wydobyć z niego kod źródłowy? Jeżeli mogę, to w jaki sposób?
Z kodu binarnego nie daje się odtworzyć źródłowej postaci programu w takim języku, w jakim faktycznie był pisany. Można przy pomocy programów noszących ogólną nazwę deassembler stworzyć wersję żródłową pliku wykonalnego taką, jak gdyby pisany był assemblerem. Zwracam uwagę, że taki kod źródłowy nie ma nic wspólnego z prawdziwym kodem źródłowym programu

... ma pewien program, który chciałby przerobić pod siebie
Bez bardzo głębokiej znajomości programowania w Assemblerze na danej platformie sprzętowej oraz systemowej jest to niemożliwe. W wielu przypadkach prościej jest napisać nowy program. Poza tym przerabianie kodu programu bez pisemniej zgody jego właściciela jest naruszeniem praw autorskich.



ZeeWolf - 19 Sty 2007 00:31
Wotam.
Sekunda, Panowie - dlaczego coś co jest niezwykle trudne nazywacie niemożliwym? Owszem, istnieją dekompilatory różnych języków wysokiego poziomu, ale kod który otrzymujemy przy ich pomocy prawie nigdy nie jest identyczny z kodem pierwotnym. Jeżeli plik .exe nie jest kodowany, czy pakowany, bez trudu powinieneś znaleźć ślad po kompilatorze (często w postaci tekstowej) - wtedy pozostaje tylko pokombinować z doborem dekompilatora (parę ich można znaleźć w googlach). Jeżeli Twój kolega ma pojęcie o programowaniu, a program nie jest zbyt skomplikowany, istnieje szansa, że się Kolega się w tym połapie a może nawet uda mu się coś zmienić i nie popsuć . Jeżeli natomiast próbujecie łamać program komercyjny - życzę szczęścia - programowanie w asm w porównaniu do RI to pikuś .
Podsumowując - jest to możliwe, i to bez deasemblacji, ale z pewnością nie jest łatwe.
Pozdrawiam.





jankolo - 19 Sty 2007 01:31

dlaczego coś co jest niezwykle trudne nazywacie niemożliwym?
Kolego, ja napisałem co następuje:

Bez bardzo głębokiej znajomości programowania w Assemblerze na danej platformie sprzętowej oraz systemowej jest to niemożliwe
Czy kolega dostrzega różnicę? Ja niemożliwość uwarunkowałem, kolega potraktował jąako bezwarunkową.