Odzyskiwanie Kodu Źródłowego

Odzyskiwanie kodu źródłowego oprogramowania, odtwarzanie źródeł aplikacji ze skompilowanych plików EXE bez dostępu do kodów źródłowych.

Odtwarzanie projektów programistycznych

Mogę pomóc w odzyskaniu utraconych kodów źródłowych, algorytmów i zasobów wprost ze skompilowanych aplikacji stworzonych w:

Język Programowania C/C++

C i C++

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.

Język Programowania Java

Java

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.

Język Programowania C# aka C Sharp

C# aka C Sharp

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.

Język Programowania Visual Basic i VB.NET

Visual Basic i VB.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.

Język Programowania Delphi i Pascal

Delphi i Pascal

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.

Język Programowania Visual FoxPro

Visual FoxPro

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.

Skryptowy Język Programowania AutoIt

AutoIt

Odzyskaj źródła skryptów *.au3 ze skompilowanych aplikacji AutoIt. Odtwarzanie oryginalnych źródeł skryptów poddanych procesowi obfuskacji.

Flash SWF ActionScript

Flash SWF ActionScript

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

Jak odzyskuje się kod źródłowy?

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).

Deasembler IDA

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.

Przykład odzyskania kodu źródłowego

Poniżej znajduje się kod wynikowy w assemblerze x86 z aplikacji stworzonej w C++:

Skompilowany kod. Zrzut z deasemblera kodu x86 prostej funkcji

.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

Odzyskany kod źródłowy. Kod C++ odtworzony z wyjściowego kodu x86

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.

Co można odzyskać?

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ć?

  • cały projekt programistyczny
  • zasoby aplikacji (pliki, obrazki, bazy danych) z zaszyfrowanych lub skompresowanych paczek
  • wybrane funkcje i algorytmy
  • algorytmy szyfrowania i kompresji danych
  • klucze szyfrujące
  • hasła do logowania (np. do połączeń z bazami danych)

Masz pytania?

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.