Inżynieria odwrotna
Opublikowany: 2022-03-10Ostatnia aktualizacja: 21 marca 2022 r.
Opowiem o tym, czym jest inżynieria wsteczna i dlaczego jest ważna. Wiele osób, które nie są programistami, myśli, że wiedzą, czym jest inżynieria wsteczna, ponieważ widzieli to w filmach, ale jest to błędne przekonanie. Inżynieria odwrotna ma wiele znaczeń dla wielu różnych ludzi, a to, co wam powiem, będzie bardzo różniło się od definicji kogoś innego.
W przypadku oprogramowania White Label inżynieria wsteczna zasadniczo polega na zastanowieniu się, jak działa program i co może zrobić. Mówiąc dokładniej, inżynieria wsteczna polega na wykorzystaniu istniejącego programu i poznaniu jego wewnętrznego działania, dzięki czemu można zmodyfikować program, aby robił rzeczy inne niż zamierzone przez autora. Możesz dowiedzieć się więcej o tym, co oznacza biała etykieta, przeglądając naszą stronę!
W tworzeniu oprogramowania mówimy, że dokonujesz inżynierii wstecznej, kiedy rozbierasz to na części i dowiadujesz się, jak to działa. Inżynieria odwrotna jest korzystna w nauce korzystania z oprogramowania i jego działania. Może być również używany w wielu różnych rzeczach, takich jak marketing cyfrowy, obrona firmy, hakowanie i wiele innych.
Inżynieria odwrotna w marketingu
Jeśli zamierzasz stworzyć nową kampanię marketingową, możesz przeprowadzić inżynierię wsteczną oprogramowania, aby dowiedzieć się, co robi lub jak powinno działać. Następnie możesz zmodyfikować kod, aby dostosować go do swoich potrzeb. To samo możesz zrobić z reklamami lub innymi rodzajami marketingu. Możliwe jest również uzyskanie informacji o konkurentach, specyfikacji i wydajności produktu oraz wielu innych rzeczy.
Kiedy chcesz coś stworzyć, najpierw musisz zacząć od projektu. Możesz użyć narzędzi, które pomogą Ci w tworzeniu projektu, ale powinieneś również przetestować go ze swoimi materiałami, ponieważ ważne jest, aby wiedzieć, czy elementy będą odpowiednio współdziałać. Czasami trzeba wygłupiać się w programach i dowiedzieć się, jak działają, tworząc fałszywe dane wyjściowe. Możesz nawet prowadzić samochód z wizerunkiem prawdziwego samochodu, zwłaszcza jeśli chcesz zobaczyć, jak się zachowuje. Nazywamy to jazdą wirtualną lub wirtualną jazdą.
Co to jest inżynieria odwrotna?
Jest to proces analizy programu komputerowego w celu określenia jego wewnętrznej struktury, kodu źródłowego, algorytmów i przepływu danych. Celem inżynierii wstecznej jest zrozumienie, jak działa program komputerowy i co znajduje się w programie. Tam, gdzie czytasz te informacje, mogą się one nazywać analizą awarii, dezasemblacją, inżynierią wsteczną lub debugowaniem. Lubię „debugowanie”, ponieważ brzmi bardziej jak czynność wykonywana przez programistę, gdy tak nie jest. W dzisiejszych czasach większość programistów nawet nie zdaje sobie sprawy, że są inżynierami wstecznymi.
Inżynieria wsteczna to proces polegający na wykonywaniu przez oprogramowanie, program (lub cracker) działania, do którego programista nigdy nie zamierzał (ale czasami się zdarza). W tym scenariuszu haker znalazł lukę w kodzie programu i wymyślił, jak jej użyć, aby uzyskać pożądany efekt. Na przykład hakerzy mają gry poddane inżynierii wstecznej i wiedzą, jak działają lub jakich informacji mogą się nauczyć.
Dlaczego to jest ważne?
Prawie każde oprogramowanie na rynku jest poddawane inżynierii wstecznej. Istnieje kilka programów, których nie można odwrócić. Nawet aplikacje Microsoftu zostały poddane inżynierii wstecznej. Nawet całe firmy nie robią nic poza inżynierią wsteczną oprogramowania dla pieniędzy.
Inżynieria odwrotna nabiera coraz większego znaczenia, odkąd rząd USA uchwalił przepisy dotyczące ochrony oprogramowania lub zarządzania prawami cyfrowymi (DRM). Nie byłoby oprogramowania z DRM, gdyby nie zostało poddane inżynierii wstecznej, a programy poddane inżynierii wstecznej nie byłyby chronione przez DRM. Jest więcej powodów, dla których inżynieria odwrotna jest ważna, ale to temat na całą książkę (lub serię książek).
Inżynieria wsteczna zmieniła świat. Całkowicie zmieniło sposób życia ludzi. Ma wiele zalet:
- Możesz sprawić, by oprogramowanie robiło to, co chcesz.
- Możesz dowiedzieć się, jak usunąć z programu rzeczy, których nie powinno tam być.
- Łatwiej jest rozbić coś na części i dalej to analizować.
Jakie są korzyści inżynierii odwrotnej?
Możesz zobaczyć, co robi i poznać jego wewnętrzne mechanizmy, odwracając program. Możesz wprowadzać zmiany w programie bez wpływu na inne programy lub system operacyjny. Jest to istotna zaleta, ponieważ większość programów musi być kompatybilna z bibliotekami i systemami operacyjnymi dostarczonymi przez ich wydawców. Wprowadzanie zmian w programie może nie tylko poważnie uszkodzić system, ale także innych użytkowników. Inżynieria wsteczna daje dostęp do wszystkich wewnętrznych mechanizmów, bibliotek i informacji o tym, jak to działa. Możesz tworzyć programy, które mogą korzystać z bibliotek i systemów operacyjnych bez płacenia za nie.
Jaki jest proces inżynierii odwrotnej?
To skomplikowane pytanie, ponieważ odpowiedź zależy od twojego programu inżynierii wstecznej. Najlepszą odpowiedzią, jaką mogę ci udzielić, jest: „To zależy…”. Nowoczesne programy mają kod zapobiegający debugowaniu, inżynierii odwrotnej i zapobiegający nadpisywaniu. Oznacza to, że inżynieria wsteczna wiąże się z intensywnym stosowaniem zaciemniania, które marnuje czas i może czasami prowadzić do awarii programu.
Zaciemnianie to technika inżynierii wstecznej, która utrudnia inżynierię wsteczną programu. Podprogramy, funkcje i inne części programu są zwykle przenoszone do różnych miejsc w pamięci, a struktury danych są zmieniane za pomocą magicznych liczb. Czasami kod jest szyfrowany lub skanowany w poszukiwaniu określonych słów, które mogą dostarczyć informacji o jego strukturze. Nie zawsze jest to wystarczające do pokonania inżynierów wstecznych, więc czasami program zawiesza się podczas próby demontażu za pomocą określonych narzędzi. W wielu krajach jest to nielegalne, nawet jeśli posiadasz kopię oprogramowania i nie modyfikowałeś jej w żaden sposób.
Jak odwrócić oprogramowanie/programy do inżynierii wstecznej?
Jeśli nie jesteś przyzwyczajony do odwracania oprogramowania inżynierskiego, dobrze jest zacząć od dostępnych programów. Najlepiej byłoby, gdybyś spróbował nauczyć się narzędzi specyficznych dla inżynierii odwrotnej, zanim wskoczysz na głęboką wodę. Dobrym narzędziem dla początkujących jest IDA Pro. (IDA oznacza analizę wykrywania włamań). Jest bezpłatny, łatwo dostępny i może odwrócić prawie każdy program, o ile jest 32-bitowy. IDA Pro działa poprzez analizę skompilowanego lub zdezasemblowanego kodu, a następnie wyświetla go w sposób ułatwiający czytanie, zrozumienie, a nawet edycję. IDA Pro jest dobrym narzędziem dla inżyniera wstecznego, ale nie nadaje się do wszystkich sytuacji.
Innym narzędziem jest GDB, które jest narzędziem do debugowania, takim jak Visual Studio. Jednak GDB będzie debugować kod podczas wykonywania, podobnie jak Visual Studio. Różnica polega na tym, że możesz wprowadzić zmiany w kodzie podczas wykonywania, a następnie spowodować awarię programu. Umożliwi to zobaczenie błędu w logice (zakładając, że mechanizm przeciwdziałania debugowaniu/przeciwdziałaniu inżynierii wstecznej go nie maskuje). Następnie możesz naprawić błąd lub kontynuować wykonywanie, dopóki jakaś inna część programu nie spowoduje problemu.
Jakie są zagrożenia inżynierii odwrotnej?
W większości krajów inżynieria wsteczna oprogramowania jest nielegalna. Jednak w niektórych sytuacjach w USA nie jest to nielegalne, o ile posiadasz kopię programu i możesz udowodnić, że została ona nabyta legalnie (za pomocą numeru seryjnego lub klucza CD). Istnieją również wyjątki dotyczące mechanizmów przeciwdziałania kopiowaniu i piractwu, które pozwalają jedynie na cele edukacyjne. Aby przeprowadzić inżynierię wsteczną programu, musisz mieć wystarczającą ilość informacji, aby to zrobić. Zwykle oznacza to zrozumienie kodu źródłowego programu, którym dokonujesz inżynierii wstecznej. Nie zawsze jest to łatwe, nawet jeśli potrafisz odczytać kod źródłowy, głównie jeśli zastosowano mechanizm antydebugowania/anty-inżynierii wstecznej.
Mam nadzieję, że będziesz miał lepsze pojęcie o tym, co oznacza inżynieria wsteczna i jak ją zastosować w różnych przypadkach. Mam również nadzieję, że zdobędziesz większą wiedzę w tej dziedzinie i pomożesz swojej firmie i klientom rozwijać się przy użyciu ich narzędzi wiedzy w bardziej nowoczesny sposób.