Odzyskiwanie kodu źródłowego oprogramowania, odtwarzanie źródeł aplikacji ze skompilowanych plików EXE bez dostępu do kodów źródłowych.
Mogę pomóc w odzyskaniu utraconych kodów źródłowych, algorytmów i zasobów wprost ze skompilowanych aplikacji stworzonych w:
Odzyskaj kody źródłowe i algorytmy ze skompilowanych, binarnych plików wykonywalnych EXE dla Windows, ELF dla Linuxa i bibliotek DLL stworzonych w C/C++, w środowiskach takich jak Visual C++, Intel C++ Compiler, GCC, MinGW, G++, Clang, C++Builder, Watcom C++, LCC, Pelles C, Digital Mars i inne.
Odzyskaj kody źródłowe z aplikacji Java oraz J2EE / JEE, apletów, odtwórz kody źródłowe z plików *.class i pakietów JAR oraz WAR. Odzyskaj źródła z pakietów APK i plików DEX dla systemu Android. Odzyskaj kody źródłowe z zaszyfrowanych i poddanych obfuskacji pakietów Java.
Odzyskaj pełne kody źródłowe z aplikacji C#, również zabezpieczonych, włączając te stworzone w takich technologiach jak WinForms, WPF, WCF, ASP.NET.
Odzyskaj kody źródłowe z plików wykonywalnych Visual Basic skompilowanych zarówno do natywnego kodu jak i p-code. Odtwórz źródła aplikacji VB.NET stworzonych dla .NET Framework.
Odtwarzanie kodów źródłowych i algorytmów z aplikacji Delphi i tych stworzonych w innych środowiskach i kompilatorach bazujących na języku Pascal, takich jak Lazarus, FreePascal itp.
Odzyskaj kody źródłowe, bazy danych, zapytania i inne zasoby z aplikacji utworzonych w Visual FoxPro, FoxBASE+, FoxPro 1.*- 2.6, Visual FoxPro 3.0, 5.0, 6.0, 7.0, 8.0 i 9.0.
Odzyskaj źródła skryptów Flash stworzonych w języku ActionScript oraz inne binarne zasoby ze skompilowanych plików Flash SWF, a także z samodzielnych aplikacji Flash skompilowanych do formatu EXE.
* Informacja: w odpowiednich warunkach możliwe jest również odtworzenie kodu źródłowego w innym języku programowania niż ten, w którym oprogramowanie zostało napisane
Odtworzenie kodu źródłowego nie jest prostym zadaniem i wymaga czasu, specjalizowanych narzędzi i doświadczenia w inżynierii wstecznej oprogramowania.
Po pierwsze, oprogramowanie musi zostać przeanalizowane w celu uzyskania informacji, w jakim języku programowania zostało stworzone, jaki kompilator został użyty etc. Na tym etapie wiadomo z jakich bibliotek korzysta biblioteka, jakie technologie zostały użyte (np. czy zostały użyte bazy danych, jakie biblioteki graficzne).
Kolejnym krokiem jest deasemblacja i dekompilacja kodu (o ile to w ogóle możliwe). Od tego momentu wiem jak skompilowany kod wygląda i praca może być kontynuowana. Z odpowiednią wiedzą o strukturze kodu, technikom inżynierii wstecznej (ang. reverse engineering) i znajomości programowania, każda funkcja aplikacji jest analizowana i jej binarny kod tłumaczony jest ręcznie lub poprzez dedykowany dekompilator na kod wybranego języka programowania wysokiego poziomu.
Poniżej znajduje się kod wynikowy w assemblerze x86 z aplikacji stworzonej w C++:
.text:00401000 ; int __cdecl main(int argc, const char **argv, const char **envp)
.text:00401000 _main proc near ; CODE XREF: ___tmainCRTStartup+F8p
.text:00401000 push 40h ; uType
.text:00401002 push offset Caption ; "Hi!"
.text:00401007 push offset Text ; "Hello World!"
.text:0040100C push 0 ; hWnd
.text:0040100E call ds:MessageBoxW
.text:00401014 xor eax, eax
.text:00401016 retn
.text:00401016 _main endp
int __cdecl main(int argc, char *argv[], char *envp[])
{
MessageBox(NULL, L"Hello World!", L"Hi!", MB_ICONINFORMATION);
return 0;
}
To tylko prosty przykład, w prawdziwych warunkach i prawdziwych aplikacjach wszystko jest o wiele bardziej skomplikowane.
Odzyskiwanie kodów źródłowych to mozolna praca i czasami może zająć jedynie dzień, a czasami nawet kilka miesięcy pracy, w zależności od rozmiaru i skomplikowania projektu. Tak więc, co można odzyskać?
Jeśli masz jakieś pytania odnośnie odzyskiwania kodów źródłowych, odtwarzania algorytmów, kosztów projektu — proszę napisz do mnie, chętnie odpowiem na wszystkie Twoje pytania. Pamiętaj, żeby opisać jak najwięcej szczegółów technicznych, co pomoże mi dokładniej zrozumieć i odpowiedzieć na twoje pytania.