logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Szukam sprawdzonego dekompilatora C++ i Javy - rekomendacje?

slavmen 09 Wrz 2005 10:55 9543 7
REKLAMA
  • #1 1803587
    slavmen
    Poziom 12  
    Posty: 84
    Potrzebuję jakiś dobry i sprawdzony dekompilator do C++.
    Próbowałem znależć coś przez Google ale wyniki były raczej mierne:cry:.
    W ostateczności wystarczy jak ktoś poda nazwę, ale dobrze jakby coś dołaczył w załączniku:D

    P.S. Jak ktoś zna również dobry dekompil do Javy też prosiłbym o zabranie głosu.
  • REKLAMA
  • #2 1804764
    Deus
    Poziom 12  
    Posty: 20
    przykro mi, ale muszę cię rozczarować — nie istnieje sensowny dekompilator do c++/było kilka, ale szczerze odradzam próby zabawy tym 'czymś'/. Jedyne co możesz uzyskać to listing w asemblerze przy pomocy odpowiedniego disasemblera /np. IDA/. Ten zaś możesz spokojnie na C\C++ przepisać...
    co do javy to na goglach jest tego sporo /dla przypomniania - tylko dla plików oryginalnie napisanych w javie/.
    Dekompilować można /w uogólnieniu/ tylko programy napisane pod framework'i np. java /w sumie to maszyna wirtualna javy/ i .net.
  • REKLAMA
  • #3 1804940
    one_eddie
    Poziom 25  
    Posty: 973
    Pomógł: 62
    Ocena: 14
    Ja jak autor oprogramowania bardzo ciesze sie iz nie ma sensownego oprogramowania do dekompilacji do kodu c/c++.

    Wg mnie pojawienie sie takiego oprogramowania postawilo by pod znakiem zapytania tworzenie w tym jezyku wiekszosci oprogramowania.

    Kazdy mogl by ukrasc twoj pomysl, rozpracowac program, zlamaczabespieczenia, itp..ogolnie blee :)
  • #4 1805245
    Deus
    Poziom 12  
    Posty: 20
    co za różnica czy otrzymany kod jest w C czy asm - i to i to idzie przy odpowiedniej wiedzy sprawnie przeanalizować - chodzi mi głównie o reverse engineering.
  • #5 1805417
    one_eddie
    Poziom 25  
    Posty: 973
    Pomógł: 62
    Ocena: 14
    Deus: zapominasz o optymalizacji, kod pisany w c/c++ podlega zmianom przez kompilator. Faktycznie dzialanie kodu jest identyczne - to co napisalismy odwzorowane jest w kodzie. Ale kod jest trudniejszy w analizie. Zreszta jezyk ASM na takim poziomie ktory umozliwia analize kodu, jest znany przez ludzi ktorzy nie musza krasc innym pomyslow oniewaz sami wymysla ich dziesiatki.
  • REKLAMA
  • #6 1806115
    Deus
    Poziom 12  
    Posty: 20
    nie, nie zapominam o optymalizacji - mnie analizuje się lepiej kod zoptymalizowany - bez takich cudów jak:
                    xor     ebx, ebx 
    ...
                    mov     ax, cs
                    mov     [ebp+.var_12], ax
                    xor     eax, eax
                    cmp     word [ebp+.var_12], 8    
                    setnz   al 
                    cmp     eax, ebx 
                    jnz     .loc_1B3E2 
    ; kod ze sterownika skompilowanego w VC++

    ale w sumie różnica w rozumieniu kodu jet minimalna...
    Nie chodzi mi tu o wykradanie kodu z programu ale o modyfikacjie i poprawianie programów przez osoby trzecie /ew. wyszukiwanie luk w oprogramowaniu/...
  • #7 1814000
    slavmen
    Poziom 12  
    Posty: 84
    Cytat:
    Nie chodzi mi tu o wykradanie kodu z programu ale o modyfikacjie i poprawianie programów przez osoby trzecie /ew. wyszukiwanie luk w oprogramowaniu/...


    Dokładanie oto i mi chodzi. Jeśli ktoś chce się sprawnie bawić reinżynerią to i tak musi mieć dobrze opanowanego asemblera - wtedy wystarczy dobry deasembler i/lub kilka dodatkowych programów np. SoftIce.

    Mnie chodzi bardziej o aspekty edukacyjne: jestem na etapie nauki C# i taki dekompilator byłby czasem bardzo przydatny. Rzecz jasna do analizy mało skomplikowanych programów, bo z tymi bardziej skomplikowanymi byłby pewnie problem: dekompilacja by pewnie jeszcze bardziej utrudniła mi zrozumienie jak dany program działa.:|
  • REKLAMA
  • #8 1814133
    Sam Sung
    Poziom 33  
    Posty: 2014
    Pomógł: 227
    Ocena: 583
    one_eddie napisał:
    Ja jak autor oprogramowania bardzo ciesze się iz nie ma sensownego oprogramowania do dekompilacji do kodu c/c++.
    Wg mnie pojawienie się takiego oprogramowania postawilo by pod znakiem zapytania tworzenie w tym jezyku wiekszosci oprogramowania.
    Kazdy mogl by ukrasc twoj pomysl, rozpracowac program, zlamaczabespieczenia, itp..ogolnie blee :)

    Należy jednak wziąć pod uwagę, że istnieje cała masa oprogramowania wydawanego na zasadach wolnych licencji lub chociaż z otwartym kodem źródłowym. Wśród setek tysięcy projektów na takich stronach, jak freshmeat.net czy sourceforge.net, można znaleźć tak ważne projekty, jak Linux, PostgreSQL, MySQL, PHP, Apache. Autorzy nie boją się wcale, że ktoś np. łatwiej rozpracuje dzięki temu firewalla w linuksie czy też luki w zabezpieczeniach dostępu do baz danych. Przeciwnie, otwarty kod pozwala na łatwiejsze wyłapanie i szybsze poprawienie błędów.

Podsumowanie tematu

✨ Nie istnieje sensowny dekompilator do języka C++, ponieważ kod C++ po kompilacji jest silnie zoptymalizowany i przekształcony, co utrudnia odtworzenie oryginalnego kodu źródłowego. Zamiast tego stosuje się disasemblery, takie jak IDA, które generują listing w asemblerze, co przy odpowiedniej wiedzy pozwala na analizę i reverse engineering. Dekompilacja jest bardziej efektywna w przypadku języków działających na maszynach wirtualnych, takich jak Java czy .NET, gdzie dostępne są liczne narzędzia do dekompilacji plików oryginalnie napisanych w tych językach. W kontekście Javy istnieje wiele dekompilatorów dostępnych w internecie. Dyskusja podkreśla także, że otwarty kod źródłowy (np. projekty na sourceforge.net czy freshmeat.net) ułatwia analizę i poprawę oprogramowania, a brak dekompilatorów do C++ jest postrzegany jako zabezpieczenie przed kradzieżą pomysłów i łamaniem zabezpieczeń. Do celów edukacyjnych i analizy prostych programów w C# przydatne są dekompilatory, jednak w przypadku bardziej skomplikowanych aplikacji dekompilacja może utrudnić zrozumienie działania kodu. Wspomniane narzędzia do analizy kodu to m.in. IDA i SoftIce.
REKLAMA