Elektroda.pl
Elektroda.pl
X

Wyszukiwarki naszych partnerów

Kategoria: Kamery IP / Alarmy / Automatyka Bram
Montersi
Kategoria: Akumulatorki / Baterie / Ładowarki

Dekompilacja pliku *.exe na C lub C++

madziulek 06 Lut 2006 17:20
  • #1 06 Lut 2006 17:20
    madziulek
    Poziom 16  

    Witam!
    Wydaje mi sie ze mam dosyc fajny temat!
    Otoz chodzi o dekompilacje plikow wykonywalnych exe na C lub C++???
    Wiem ze to dosc szeroki temat, ale prosze o jakies spostrzerzenia odnosnie jakichs fajnych programow i czy wogole mozna przekompilowac w jakis znosny sposob taki plik zeby mozna bylo cos z niego zrozumiec i pobawic sie w kodzie zrodlowym:)?
    Czekam na wszelkie spostrzerzenia i podpowedzi!!!
    POZDRAWIAM WSZYSTKIM DOLACZAJACYCH SIE DO TEMATU!

  • #2 06 Lut 2006 17:23
    arnoldk_20
    Poziom 35  

    madziulek napisał:
    Witam!
    Wydaje mi sie ze mam dosyc fajny temat!
    Otoz chodzi o dekompilacje plikow wykonywalnych exe na C lub C++???
    Wiem ze to dosc szeroki temat, ale prosze o jakies spostrzerzenia odnosnie jakichs fajnych programow i czy wogole mozna przekompilowac w jakis znosny sposob taki plik zeby mozna bylo cos z niego zrozumiec i pobawic sie w kodzie zrodlowym:)?
    Czekam na wszelkie spostrzerzenia i podpowedzi!!!
    POZDRAWIAM WSZYSTKIM DOLACZAJACYCH SIE DO TEMATU!

    Do C i C++ nie da się ale można do kodów asemblera różnymi disasseblerami

  • #3 06 Lut 2006 20:45
    madziulek
    Poziom 16  

    A czym mozna do assemblera?
    A z assemblera nie mozna na C?
    Znalazlem programy do zmiany duperelstw w tych plikach, ale mi chodzi zeby mozna bylo pogrzebac w kodzie zrodlowym???

    Dodano po 3 [godziny] 3 [minuty]:

    Czy juz nikt sie nie wypowie na ten temat!!!!

  • #4 06 Lut 2006 20:45
    Platon
    Spec od komputerów

    Nie ma takiego programu, zeby na podstawie zdjecia ciasta zrobil przepis :)

  • #5 06 Lut 2006 20:59
    LtLog
    Poziom 29  

    Anakrino
    Salamander

    Nie są to dokładnie dekompilatory c++ działają w sposób opisany po części przez kolegę arnoldk_20, najpierw disassembling następnie na podstawie otrzymanych danych same układają kod. Należy jedynie pamiętać że kod jest zbiliżony w funkcjonalności lecz z całą pewnością rózni się od wyjściowego.

    Pozdrawiam Lt.

  • #6 06 Lut 2006 20:59
    madziulek
    Poziom 16  

    No ale nie rozumiem dlaczego!!!
    Skoro kompilator to kompiluje na exe to dlaczego dekompilator nie moze tego odwrocic spowrotem???

  • #7 06 Lut 2006 21:09
    LtLog
    Poziom 29  

    Ponieważ kompilacja kodu C++ polega na zamianie języka na kod maszynowy.

    Pozdrawiam Lt.

  • #8 06 Lut 2006 21:34
    madziulek
    Poziom 16  

    No dobrze ale kod maszynowy to zbior '0''1' wiec jesli mozna cos zamienic na 01 to czemu pozniej nie mozna tego zamienic spowrotem na literki:)?

    Dodano po 7 [minuty]:

    A jak jest z disassemblerami???
    Czy zna ktos jakis lepszy?

  • #9 06 Lut 2006 22:28
    LtLog
    Poziom 29  

    madziulek napisał:
    No dobrze ale kod maszynowy to zbior '0''1' wiec jesli mozna cos zamienic na 01 to czemu pozniej nie mozna tego zamienic spowrotem na literki:)?


    Bo ten sam problem można przedstawić w różnoraki sposób; korzystając z tego samego języka i otrzymując te same wyniki.

    Pozdrawiam Lt.

  • #10 07 Lut 2006 11:03
    madziulek
    Poziom 16  

    Nie bardzo rozumiem:(???

  • #11 07 Lut 2006 12:02
    LtLog
    Poziom 29  

    Ten sam problem, ten am wynik, a kod różni się od siebie:

    Code:

    class InitializerDemo
    {
    int[] field = {0, 1, 2, 3, 4, 5, 6};
    char[,] chars = {
    {'A', 'B', 'C'},
    {'D', 'E', 'F'},
    };
    InitializerDemo()
    {
    int[] field = new int[]{0, 1, 2, 3, 4, 5, 6};
    string[,] strArray = {{"John", "Doe"}, {"1", "2"}};      
    field[1] = 1 + field[1];      
    strArray[0,2] = "OK";
    }
    }


    Code:

    using System;
    using System.Runtime.CompilerServices;
    class InitializerDemo
    {
    private int[] field = new int[]{0, 1, 2, 3, 4, 5, 6};
    private char[,] chars = new char[,]{
    {'A', 'B', 'C'},
    {'D', 'E', 'F'},
    };
    private InitializerDemo()
    {
    int[] nums = new int[]{0, 1, 2, 3, 4, 5, 6};
    string[,] strs2 = new string[2, 2];
    strs2.Set(0, 0, "John");
    strs2.Set(0, 1, "Doe");
    strs2.Set(1, 0, "1");
    strs2.Set(1, 1, "2");
    string[,] strs1 = strs2;
    nums[1]++;
    strs1.Set(0, 2, "OK");
    }
    }


    A dekompilatro nie może sprawdzić dokładnie jak wyglądał kod w języku ponieważ musiał by sprawdzać każdą możliwą nazę funkcji, klas itp tak aby przy tym samym wyniku i tym samym problemie uzyskać identyczny kod maszynowy. Dekompilacja prostego kilkudzisięcio liniowego programu trwała by wtedy wieki. Dlatego też dekompilatroy nie istnieją, istnieją tylko automaty które na podstawie kodu maszynowego przeprowadzaja disassemblig, a następnie składają kod wg własnego uznania w taki sposób aby wynik końcowy był identyczny choć to nie zawsze się sprawdza.

    Pozdrawiam Lt.

  • #12 07 Lut 2006 20:48
    madziulek
    Poziom 16  

    w sumie to i racja, niestety:(
    A znasz moze jakis dobry disassembler z ktorym by mozna sie pobawic i oczywiscie zkompilowac to pozniej do exe?
    Pozdrawiam

  • #13 07 Lut 2006 20:57
    tzok
    Moderator Samochody

    Częściowo skutecznie można dekompilować programy napisane w VisualStudio (zwłaszcza .NET ale nie tylko), ponieważ one nie są kompilowane do kodu maszynowego a do kodu pośredniego, wykonywanego w środowisku uruchomieniowym.

  • #14 07 Lut 2006 21:00
    madziulek
    Poziom 16  

    tzok napisał:
    Częściowo skutecznie można dekompilować programy napisane w VisualStudio (zwłaszcza .NET ale nie tylko), ponieważ one nie są kompilowane do kodu maszynowego a do kodu pośredniego, wykonywanego w środowisku uruchomieniowym.



    VisualStudio? nie bardzo wiem o jakie programy chodzi, jakie one maja rozszerzenie?

  • #15 07 Lut 2006 21:59
    LtLog
    Poziom 29  

    Koledze tzok chodzi ogólnie o technologię .NET. Aplikację wymagające dodatkowego wsparcia programowego w postaci Framework i jemu podobnych. Kod wtedy przetwarzany jest do tzw bytecode dlatego ich interpretacja jest łatwiejsza z punku widzenia dekompilatora. Do tych języków zaliczyć będzie mozna C#, Jave, Perla, Smalltalk.

    Pozdrawiam Lt.

  • #17 08 Lut 2006 00:24
    jankolo
    VIP Zasłużony dla elektroda

    madziulek napisał:
    ale mi chodzi zeby mozna bylo pogrzebac w kodzie zrodlowym

    Z całego toku dyskusji wynika, że kolega nie ma bladego pojęcia o podstawach programowania komputerów, o programowaniu w C++ i Assemblerze już nie wspominając. Niech kolega da sobie spokój z "grzebaniem" w kodzie źródłowym (niezależnie od tego co to dla kolegi oznacza).

  • #18 08 Lut 2006 15:45
    madziulek
    Poziom 16  

    Jesli chodzi o assembler to przyznam sie ze go nie znam, ale za to znam C i C++ i to bardzo dobrze:/
    a jesli chodzi o "grzebanie" w kodzie zrodlowym to mysle ze wszyscy wiedza o co chodzi, a w tym temacie chce przede wszystkim sie dowiedziec czy jest taka mozliwosc w pliku wykonalnym???

  • #19 08 Lut 2006 16:25
    tzok
    Moderator Samochody

    Otrzymałeś więc odpowiedź, że w dużej mierze zależy to od tego w jakim środowisku został skompilowany program/biblioteka.
    Jeśli kod był skompilowany do języka maszynowego to taka operacja jest nieodwracalna, bowiem program w postaci maszynowej jest liniowy, nie ma klas, obiektów a nawet procedur ani zmiennych, są tylko adresy, dane i kody operacji. Nie ma więc możliwości odtworzenia struktury programu, bo nie da się odtworzyć nawet nazw zmiennych.
    Taki np. Delphi różnie traktuje funkcje (można mieć na to wpływ) - albo umieszcza kod funkcji w miejscu wywołania albo tworzy procedurę (podprogram) do której "skacze".
    Wywołania API WIndowsa pozostaną czytelne ale pozostała część kodu - nie.

    Natomiast programy napisane w VisualBasicu, nie są "do końca" kompilowane, podobnie jak programy pisane w VisualStudio (Visual C++, Visual C# i t.d.) i one dają się zdekompilować do w miarę czytelnej postaci.

  • #20 08 Lut 2006 16:28
    madziulek
    Poziom 16  

    a jesli chodzi o taki program jak haker resurce, mozna w nim cos pozmieniac poza wygladem?
    DZIEKI

  • #22 08 Lut 2006 16:37
    arnoldk_20
    Poziom 35  

    madziulek napisał:
    a jesli chodzi o taki program jak haker resurce, mozna w nim cos pozmieniac poza wygladem?
    DZIEKI

    Jeszcze teksty komikatów można zmienić.
    Ale ten program przerabia nieskompresowane pliki exe (windosowe) i exepodobnych (*.dll *.ocx itp)
    W niektórych przerobionych plikach mogą pojawić się problemy.
    Ale dodatkowych funkcji programowni nie dodasz.

  • #23 08 Lut 2006 16:50
    madziulek
    Poziom 16  

    A mozna co nieco pozmieniac odnosnie dzialania programu?
    Sa tam operatory typy "true" i "false"???

  • #24 08 Lut 2006 17:59
    LtLog
    Poziom 29  

    Czasami są, a czasami nie ma, jak znam życie są do znaczniki dostępności funkcji menu ale na chybił trafił to łatwiej już będzie w totka wygrać niż powiedzieć Ci do czego w tym przypadku służą i co możesz osiągnąć przez ich zmianę; nikt z tu zebranych nie powie Ci jakie zmiany jesteś wstanie wprowadzić w niewiadomej aplikacji, kompilowanej i kompresowanej w niezany nikomu tu sposób. Sprawdź to się przekonasz co jesteś w stanie zrobić.

    Pozdrawiam Lt.

  • #25 08 Lut 2006 18:25
    madziulek
    Poziom 16  

    no wlasnie chodzi o to ze jesli chodzi o tekst to mozna pozmieniac ale jesli zmienilem cos innego to albo wywalalo blad albo nic sie nie zmienialo:(

    Dodano po 16 [minuty]:

    a jak jest z disassemblerami???

  • #26 08 Lut 2006 19:37
    LtLog
    Poziom 29  

    Piszesz że znasz sie na programowaniu, więc widzać zarówno kod jak i rozkład aplikacji powinieneś umieć ocenić które parametry wolno Ci zmienić i jakie poniesie to za sobą konsekwencje.

    Pytasz ciagle o dissasembling więc wkońcu odpowiem, jak pisałeś nie znasz wogólne asemblera więc po co Ci kod w tym języku jeżeli nie będziesz w stanie dokonać rzadnej zaplanowanej zmiany w jego wnętrzu?

    Pozdrawiam Lt.

  • #27 08 Lut 2006 20:17
    madziulek
    Poziom 16  

    chcialbym sie go nauczyc ale najpierw chce miec pewnosc ze jest po co:)?
    Tak wiec???

  • #29 08 Lut 2006 20:40
    madziulek
    Poziom 16  

    a kto by nie chcial:)))

  • #30 18 Gru 2007 17:41
    już nie 3
    Poziom 1  

    Lepiej powiedzcie jak się zabrać do tworzenia nowych , prostych systemów operacyjnych , tak by pominąć "pana microsofta" .:|Jest wtedy szansa na grzebanie w kodzie żródłowym .

  Szukaj w 4mln produktów
Przeglądaj produkty