Czy możliwe jest" dekompilowanie " systemu Windows.exe? Albo chociaż obejrzyj Zgromadzenie?

Mój znajomy pobrał jakieś złośliwe oprogramowanie z Facebook ' a i jestem ciekaw, co robi, nie zarażając się. Wiem, że nie możesz dekompilować .exe, ale czy mogę przynajmniej zobaczyć go w Assembly lub dołączyć debugger?

Edytuj, aby powiedzieć, że nie jest to plik wykonywalny. Net, bez nagłówka CLI.

Author: swilliams, 2008-11-07

15 answers

Za pomocą debugera możesz interaktywnie przejść przez skład programu.
Za pomocą disassembler , możesz wyświetlić bardziej szczegółowy montaż programu.
Za pomocą dekompilatora , możesz przekształcić program z powrotem w częściowy kod źródłowy, zakładając, że wiesz, w czym został napisany (co możesz dowiedzieć się za pomocą darmowych narzędzi, takich jak PEiD - jeśli program jest spakowany, musisz go najpierw rozpakować lub Detect-it-Easy jeśli nigdzie nie możesz znaleźć PEiD. DIE has silna społeczność programistów na github obecnie).

Debuggery:

  • OllyDbg , Darmowy, 32-bitowy debuger, do którego można znaleźć liczne wtyczki i skrypty stworzone przez użytkownika, aby uczynić go jeszcze bardziej użytecznym.
  • WinDbg , Darmowy, całkiem sprawny debuger Microsoftu. WinDbg jest szczególnie przydatny do przeglądania wewnętrznych systemów Windows, ponieważ wie więcej o strukturach danych niż inne Debugery.
  • SoftICE , SICE dla przyjaciół. Działalność komercyjna i rozwojowa zakończyła się w 2006 roku. SoftICE jest rodzajem hardcorowego narzędzia, które działa pod systemem operacyjnym (i zatrzymuje cały system podczas wywoływania). SoftICE jest nadal używany przez wielu profesjonalistów, chociaż może być trudny do uzyskania i może nie działać na niektórych urządzeniach (lub oprogramowaniu - mianowicie nie będzie działać na kartach Vista lub NVIDIA gfx).

Disassemblery:

  • IDA Pro (komercyjna) - top linii disassembler/debugger. Używane przez większość profesjonalistów, takich jak analitycy złośliwego oprogramowania itp. Kosztuje sporo groszy (istnieje wersja Darmowa, ale jest dość ograniczony)
  • W32Dasm (Darmowy) - trochę przestarzały, ale robi robotę. Wierzę, że W32Dasm jest obecnie abandonware i istnieje wiele hacków stworzonych przez użytkowników, aby dodać kilka bardzo przydatnych funkcji. Musisz się rozejrzeć, aby znaleźć najlepszą wersję.

Dekompilatory:

  • Visual Basic: VB Decompiler, komercyjny, produkuje nieco identyfikowalny bajt.
  • Delphi: Dede, Darmowy, tworzy dobrej jakości kod źródłowy.
  • C: HexRays , komercyjny, plugin do IDA Pro tej samej firmy. Daje świetne wyniki, ale kosztuje duże pieniądze i nie będzie sprzedawany byle komu (tak słyszałem).
  • . Net(C#): dotPeek, Darmowy, dekompiluje. NET 1.0-4.5 do C#. Wsparcie dla .dll, .exe,zip,vsix,nupkg,winmd pliki.

Niektóre powiązane narzędzia, które mogą się przydać w cokolwiek robisz, to edytory zasobów, takie jak ResourceHacker (Darmowy) i dobry edytor hex, taki jak Hex Workshop (komercyjny).

Dodatkowo, jeśli robisz analizę złośliwego oprogramowania (lub używasz SICE) , z całego serca sugeruję uruchomienie wszystkiego wewnątrz maszyny wirtualnej, a mianowicie VMware Workstation. W przypadku SICE ochroni Twój rzeczywisty system przed BSOD, a w w przypadku złośliwego oprogramowania będzie chronić Twój rzeczywisty system przed programem docelowym. Możesz przeczytać o analizie złośliwego oprogramowania za pomocą VMware tutaj .

Osobiście korzystam z Olly, WinDbg & W32dasm i kilku mniejszych narzędzi użytkowych.

Pamiętaj również, że demontaż lub nawet debugowanie cudzego oprogramowania jest zwykle co najmniej sprzeczne z EULA:)

 372
Author: anon6439,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-17 17:58:14

Doskonały post Psoula odpowiada na twoje pytanie, więc nie będę powielał jego dobrej pracy, ale czuję, że pomoże to wyjaśnić, dlaczego jest to od razu całkowicie poprawne, ale też strasznie głupie pytanie. W końcu to jest miejsce do nauki, prawda?

Nowoczesne programy komputerowe są wytwarzane przez szereg konwersji, począwszy od wprowadzania czytelnej dla człowieka instrukcji tekstowej (zwanej "kodem źródłowym"), a skończywszy na czytelnej dla komputera instrukcji (zwanej alternatywnie "binary "lub" machine code").

Sposób, w jaki komputer uruchamia zestaw instrukcji kodu maszynowego, jest ostatecznie bardzo prosty. Każda czynność jaką może wykonać procesor (np. odczyt z pamięci, dodanie dwóch wartości) jest reprezentowana przez kod numeryczny. Gdybym ci powiedział, że liczba 1 oznacza krzyk, a liczba 2 oznacza chichotanie, a następnie trzymane karty z jednym lub dwoma na nich oczekując, że krzyk lub chichotanie odpowiednio, użyłbym tego, co jest zasadniczo tym samym systemem, którego komputer używa do operuj.

Plik binarny jest tylko zbiorem tych kodów (Zwykle nazywanych "kodami op") i informacji ("argumentami"), na których działają kody op.

Język asemblowania jest językiem komputerowym, w którym każde słowo polecenia w języku reprezentuje dokładnie jeden kod operacyjny na procesorze. Istnieje bezpośrednie tłumaczenie 1:1 pomiędzy poleceniem języka asemblacji a kodem operacyjnym procesora. To dlatego zespół kodowania dla procesora x386 różni się od zespołu kodowania dla ramienia procesor.

Demasemblowanie jest po prostu takie: program odczytuje kod binarny (kod maszynowy), zastępując kody op ich odpowiednikami poleceń języka asemblacji i wysyła wynik jako plik tekstowy. Ważne jest, aby to zrozumieć; jeśli twój komputer może odczytać plik binarny, możesz również odczytać plik binarny, albo ręcznie z tabelą kodu op w dłoni (ick) lub za pomocą disassemblera.

Disassemblery mają kilka nowych sztuczek i w ogóle, ale ważne jest, aby zrozumieć że demontaż jest ostatecznie mechanizmem wyszukiwania i wymiany. Dlatego każda EULA, która tego zabrania, ostatecznie wieje gorącym powietrzem. Nie można od razu zezwolić komputerowi na odczyt danych programu, a także zabronić komputerowi odczytywania danych programu.

(nie zrozum mnie źle, były próby, aby to zrobić. Działają tak samo jak DRM na plikach piosenek.)

Istnieją jednak zastrzeżenia do podejścia do demontażu. Nazwy zmiennych nie istnieją; taka rzecz nie istnieje dla Twojego CPU. Wywołania bibliotek są mylące jak diabli i często wymagają demontażu kolejnych plików binarnych. A montaż jest trudny do odczytania w najlepszych warunkach.

Większość profesjonalnych programistów nie potrafi siedzieć i czytać języka asemblera bez bólu głowy. Dla amatora to się nie stanie.

W każdym razie, jest to nieco przekreślone Wyjaśnienie, ale mam nadzieję, że pomoże. Każdy może czuć się swobodnie, aby poprawić wszelkie nieprawidłowości z mojej strony; minęło trochę czasu. ;)

 38
Author: Jason L,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-07 21:12:47

Każdy przyzwoity debuger może to zrobić. Spróbuj OllyDbg . (edit: który ma świetny disassembler, który nawet dekoduje parametry połączeń WinAPI!)

 11
Author: utku_karatas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-07 18:50:29

Dobre wieści. IDA Pro jest teraz za darmo dla starszych wersji: http://www.hex-rays.com/idapro/idadownfreeware.htm

 11
Author: Matthew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-07 20:18:18

x64dbg jest dobrym i otwartym debugerem, który jest aktywnie utrzymywany.

 8
Author: BullyWiiPlaza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-17 13:26:20

Jasne, spójrz na IDA Pro . Oferują wersję eval, dzięki czemu można ją wypróbować.

 6
Author: Douglas Mayle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-07 18:49:58

Jeśli próbujesz dowiedzieć się, co robi złośliwe oprogramowanie, może być znacznie łatwiejsze uruchomienie go pod czymś takim jak darmowe narzędzie Process Monitor , które będzie raportować za każdym razem, gdy próbuje uzyskać dostęp do systemu plików, rejestru, portów itp...

Również korzystanie z maszyny wirtualnej, takiej jak darmowy serwer VMWare, jest bardzo pomocne w tego rodzaju pracy. Możesz zrobić "czysty" obraz, a następnie wrócić do tego za każdym razem, gdy uruchamiasz złośliwe oprogramowanie.

 5
Author: joeld,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-07 18:59:16

To, co chcesz, to rodzaj oprogramowania zwanego "Disassemblerem".

Szybkie Google daje to: http://www.geocities.com / ~sangcho/disasm.html

 5
Author: Corey Trager,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-07 18:59:28

Możesz uzyskać pewne informacje oglądając go w assembly, ale myślę, że najłatwiejszą rzeczą do zrobienia jest odpalenie maszyny wirtualnej i zobaczenie, co ona robi. Upewnij się, że nie masz otwartych akcji ani czegoś takiego, przez co może przeskoczyć;)

 4
Author: Rob Prouse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-07 18:49:17

Bumerang może być również warty sprawdzenia.

 3
Author: Andru Luvisi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-08 00:26:46

Jeśli chcesz uruchomić program, aby zobaczyć, co robi bez zainfekowania komputera, użyj maszyny wirtualnej, takiej jak VMWare lub Microsoft VPC, lub programu, który może sandbox program jak SandboxIE

 2
Author: Joel Lucsy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-07 21:12:36

Jeśli nie masz czasu, prześlij złośliwe oprogramowanie do cwsandbox:

Http://www.cwsandbox.org/

Http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/

HTH

 2
Author: plan9assembler,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-16 04:40:23

Nie mogę uwierzyć, że nikt nie powiedział nic o Debuggerze immunitetu , jeszcze.

Debugger odporności jest potężnym narzędziem do pisania exploitów, analizowania złośliwego oprogramowania i inżynierii wstecznej plików binarnych. Początkowo był oparty na kodzie źródłowym Ollydbg 1.0, ale z nazwami Poprawiono błąd resoution. Posiada dobrze obsługiwane API Pythona dla łatwej rozszerzalności, dzięki czemu można pisać skrypty Pythona, aby pomóc ci w analizie.

No i jest dobry Piotr z Corelan team napisał called mona.py , excelent tool btw.

 2
Author: jyz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-06 13:41:39

Możesz użyć dotPeek, bardzo dobry do dekompilacji pliku exe. Jest za darmo.

Https://www.jetbrains.com/decompiler/

 1
Author: Do Nhu Vy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-23 03:58:29

Explorer suite może robić, co chcesz.

 0
Author: FloatFish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-09 08:45:50