Mój przyjaciel pobierał złośliwe oprogramowanie z Facebooka i jestem ciekawy, co robi bez zarażania się. Wiem, że tak naprawdę nie można zdekompilować pliku .exe, ale czy mogę przynajmniej wyświetlić go w asemblerze lub dołączyć debugger?
Edytuj, aby powiedzieć, że nie jest to plik wykonywalny .NET, brak nagłówka CLI.
debugging
winapi
assembly
decompiling
Swilliams
źródło
źródło
Odpowiedzi:
Za pomocą debugera możesz interaktywnie przechodzić przez zestaw programu.
Za pomocą dezasemblera możesz wyświetlić zestaw programu bardziej szczegółowo.
Za pomocą dekompilatora możesz zmienić 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ą bezpłatnych narzędzi, takich jak PEiD - jeśli program jest spakowany, musisz go najpierw rozpakować LUB Wykryj to łatwe, jeśli nigdzie nie możesz znaleźć PEiD. DIE ma obecnie silną społeczność programistów na github ).
Debugery:
Dezasemblery:
Dekompilatory:
Niektóre powiązane narzędzia, które mogą się przydać w tym, co robisz, to edytory zasobów, takie jak ResourceHacker (bezpłatny) i dobry edytor hex, taki jak Hex Workshop (komercyjny).
Ponadto, jeśli przeprowadzasz analizę złośliwego oprogramowania (lub korzystasz z SICE) , z całego serca sugeruję uruchomienie wszystkiego na maszynie wirtualnej, a mianowicie VMware Workstation . W przypadku SICE ochroni Twój rzeczywisty system przed BSOD, aw przypadku złośliwego oprogramowania ochroni 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 i W32Dasm oraz kilku mniejszych narzędzi.
Pamiętaj też, że dezasemblacja, a nawet debugowanie oprogramowania innych osób jest zazwyczaj co najmniej sprzeczne z umową licencyjną użytkownika końcowego :)
źródło
doskonałe posty psoula odpowiadają na twoje pytanie, więc nie powielę jego dobrej pracy, ale uważam, że pomogłoby to wyjaśnić, dlaczego jest to jednocześnie całkowicie prawidłowe, ale także strasznie głupie pytanie. W końcu jest to miejsce do nauki, prawda?
Nowoczesne programy komputerowe są tworzone przez szereg konwersji, zaczynając od wprowadzenia czytelnego dla człowieka zbioru instrukcji tekstowych (zwanego „kodem źródłowym”), a kończąc na czytelnym dla komputera zestawie instrukcji (nazywanym alternatywnie „binarnym” lub „maszyną” kod").
Sposób, w jaki komputer uruchamia zestaw instrukcji kodu maszynowego, jest ostatecznie bardzo prosty. Każda czynność, którą może podjąć procesor (np. Odczyt z pamięci, dodanie dwóch wartości) jest reprezentowana przez kod numeryczny. Gdybym ci powiedział, że cyfra 1 oznacza krzyk, a cyfra 2 oznacza chichot, a następnie podniósł karty z 1 lub 2 na nich, oczekując, że będziesz krzyczeć lub chichotać odpowiednio, korzystałbym z tego samego systemu, którego używa komputer operować.
Plik binarny jest tylko zbiorem tych kodów (zwykle nazywanych „kodami operacji”) i informacji („argumentów”), na które działają kody operacji.
Teraz język asemblera to język komputerowy, w którym każde słowo polecenia w tym języku reprezentuje dokładnie jeden kod operacji na procesorze. Istnieje bezpośrednie tłumaczenie 1: 1 między poleceniem asemblera a kodem operacyjnym procesora. Dlatego zestaw kodowania dla procesora x386 różni się od zestawu kodowania dla procesora ARM.
Demontaż jest po prostu następujący: program odczytuje plik binarny (kod maszynowy), zastępując kody operacyjne ich odpowiednikami w języku asemblera, i wyświetla wynik w postaci pliku tekstowego. Ważne jest, aby to zrozumieć; jeśli twój komputer potrafi odczytać plik binarny, to możesz również odczytać plik binarny, albo ręcznie, korzystając z tabeli kodów operacyjnych w ręku (ick), albo poprzez deasembler.
Dezasemblery mają kilka nowych sztuczek, ale ważne jest, aby zrozumieć, że deasembler jest ostatecznie mechanizmem wyszukiwania i zastępowania. Dlatego każda umowa EULA, która tego zabrania, ostatecznie wieje gorącym powietrzem. Nie można jednocześnie zezwolić komputerowi na odczyt danych programu, a także zabronić komputerowi odczytu danych programu.
(Nie zrozum mnie źle, próbowano to zrobić. Działają one równie dobrze jak DRM w plikach utworów.)
Istnieją jednak zastrzeżenia dotyczące metody demontażu. Nazwy zmiennych nie istnieją; coś takiego nie istnieje w twoim CPU. Wywołania biblioteczne 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 umie siedzieć i czytać asemblera bez bólu głowy. Dla amatora po prostu tak się nie stanie.
W każdym razie jest to nieco przesadne wyjaśnienie, ale mam nadzieję, że to pomoże. Każdy może skorygować wszelkie zniekształcenia z mojej strony; minęło trochę czasu. ;)
źródło
Dobre wieści. IDA Pro jest obecnie bezpłatny dla starszych wersji: http://www.hex-rays.com/idapro/idadownfreeware.htm
źródło
Każdy przyzwoity debugger może to zrobić. Wypróbuj OllyDbg . (edycja: ma świetny deasembler, który nawet dekoduje parametry wywołań WinAPI!)
źródło
x64dbg
jest dobrym i aktywnym debuggerem typu open source.źródło
Jasne, spójrz na IDA Pro . Oferują wersję eval, więc możesz ją wypróbować.
źródło
Jeśli próbujesz dowiedzieć się, co robi złośliwe oprogramowanie, może być o wiele łatwiej uruchomić je w ramach czegoś takiego jak bezpłatne narzędzie Process Monitor które będzie raportować za każdym razem, gdy spróbuje uzyskać dostęp do systemu plików, rejestru, portów itp.
Korzystanie z maszyny wirtualnej, takiej jak bezpłatny serwer VMWare, jest bardzo pomocne w tego rodzaju pracy. Możesz zrobić „czysty” obraz, a następnie powrócić do tego przy każdym uruchomieniu szkodliwego oprogramowania.
źródło
Możesz uzyskać pewne informacje, przeglądając je w asemblerze, ale myślę, że najłatwiej jest uruchomić maszynę wirtualną i zobaczyć, co robi. Upewnij się, że nie masz żadnych otwartych udziałów ani czegoś takiego, przez co może skakać;)
źródło
Warto również sprawdzić bumerang .
źródło
To, czego chcesz, to rodzaj oprogramowania o nazwie „Disassembler”.
Szybkie google daje to: Link
źródło
Nie mogę uwierzyć, że nikt jeszcze nie powiedział nic o Debuggerze odporności .
Immunity Debugger to potężne narzędzie 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 naprawionym błędem wymazywania nazw. Ma dobrze obsługiwany interfejs API języka Python dla łatwej rozbudowy, dzięki czemu możesz pisać skrypty python, które pomogą ci w analizie.
Jest też dobry napisany przez Petera z zespołu Corelan mona.py , doskonałe narzędzie btw.
źródło
Jeśli chcesz uruchomić program, aby zobaczyć, co robi bez infekowania komputera, użyj go z maszyną wirtualną, taką jak VMWare lub Microsoft VPC, lub programem, który może piaskownicować program taki jak SandboxIE
źródło
Jeśli nie masz czasu, zgłoś szkodliwe oprogramowanie do cwsandbox:
http://www.cwsandbox.org/
http://jon.oberheide.org/blog/2008/01/15/detecting-and-evading-cwsandbox/
HTH
źródło
Możesz użyć dotPeek, bardzo dobrego do dekompilacji pliku exe. To jest darmowe.
https://www.jetbrains.com/decompiler/
źródło
Powiedziałbym, że w 2019 r. Warto sprawdzić Ghidra ( https://ghidra-sre.org/ ). Jest open source (i darmowy) i ma fenomenalne możliwości analizy kodu, w tym możliwość dekompilacji aż do dość czytelnego kodu C.
źródło
Zestaw eksploratora może robić, co chcesz.
źródło