Source z .exe

Witajcie. To mój pierwszy post…

Ale chodzi mi o konkretną sprawę…

Mam pewną aplikację napisaną w Microsoft Visual C# / Basic .NET i chciałbym wyciągnąć z niej kod źródłowy (source) wystarczy mi tylko program dalej już sobie jakoś poradzę.

Moje zdanie to że raczej się nie da…

Ale to tylko moje zdanie…

Rolek to nie ejst taka prosta sprawa, że odpalasz program, podajesz mu ścieżkę do *.exe i dostajesz kod źródłowy, poczytaj o takich pojęciach jak Reverse engineering czy dekompilacja (polecam chociażby angielskojęzyczną wiki) to FAQ też mi się podoba link

Poszukaj czegoś, co się nazywa .NET reflector. Ale nie oczekuj cudów.

Ryan dzięki… to już coś…

Nigdy nie odzyskasz kodu zrodlowego jaki mial autor aplikacji, chocby z tego prostego powodu ze nazwy zmiennych i setki innych rzeczy nie sa zapisywane do exe tylko przeszktalcane na offset w pamieci. Conajwyzej mozesz przeprowadzic dekompilacje, ale dostaniesz wtedy kod w assemblerze.

Szkoda… Chciałem poprawić parę rzeczy… ale trudno… dzięki za pomoc.

Autor pytał o C#/VB. Poza tym z binarki w wersji checked (z informacjami dla debuggera) i symbolami możesz wyciągnąć nazwy zmiennych.

Nie dostanie kodu źródłowego bo w procesie kompilacji przez kompilator następuje zamiana instrukcji danego języka na języka maszynowy (assembler) i tylko w takiej postaci może go modyfikować, niestety trzeba znać assemblera a to trudny język.

Ale chyba nie w .NET, prawda?

somekind: W .NET następuje kompilacja do kodu pośredniego MSIL, który też do najprostszych języków nie należy :wink:

Ryan napisał - .NET Reflector jest rozwiązaniem. Jest też ildasm który dekompiluje aplikacje .NET do kodu MSIL (chyba standardowo z .NET Framework dostarczany).

Wiem o tym. Dlatego zadałem retoryczne pytanie o ten asembler :slight_smile:

I to nie jest już MSIL tylko CIL.

A tu są jego instrukcje: http://dotnet.di.unipi.it/EcmaSpec/PartitionIII/index.html

A wracając do wypowiedzi marduk666 - asembler i kod maszynowy to też raczej nie to samo.

Czepiasz się, tak wiem że assembler powstał na bazie języka maszynowego i poprzez zastąpienie liczb odpowiadających fragmentom rozkazów kodu maszynowego ich symbolicznymi odpowiednikami możliwie jest łatwiejsze zrozumienie przez człowieka. Dla mnie jest to prawie to samo.

Ja się czepiam?

To co powiesz o kompilatorach :lol:

sa programy ktore dekompiluja sa to dekompilatory

http://www.google.pl/search?hl=pl&client=firefox-a&rls=org.mozilla%3Apl%3Aofficial&hs=Vys&q=dekompilatory&btnG=Szukaj&lr=

:google:

Wiadomo że sąprogramy które dekompilują, tylko że otrzymujesz całkiem inny kod niż ten który miał autor w momencie kompilacji, jest to kod assemblera.

Tyle, że nie odzyskują oryginalnego kodu, gdyż jest to niemożliwe. -> google