Przegląd narzędzi do reverse engineeringu

Witajcie, właśnie ukazał się nowy numer Magazynu Programista 11/2014, w którym znajdziecie m.in. mój artykuł opisujący najpopularniejsze i te trochę mniej znane narzędzia wykorzystywane w reverse engineeringu, wszystkich zainteresowanych tematem zachęcam do wizyt w Empikach.

Magazyn Programista 11/2014

 

10 komentarzy do “Przegląd narzędzi do reverse engineeringu”

  1. Bartek coraz gorzej z twoimi tekstami o RE ciagniesz programiste na dno pisza takie teksty.Jak mozesz polecac takie badziewie jak Pestudio!
    myslalem ze tym gniotem zachwycaja sie tylko osoby co nie widza nic o plikach PE.
    PEStudio w zasadzie robi tylko strcmp na tablicy importow, takie cos mozna napisac w jeden dzien uzywajac pythona i modul pefile. Nie wspominajac o tym ze autor tego narzedzia to beznadziejny programista a jeszcze gorszy projektant interfejsu uzytkownika, chociaz go troche poprawil w porownaniu do poprzedniej wersji.

    Odpowiedz
    • @AjMonster: Reasumując

      1. Na 23 narzędzia które opisałem, 1 Ci się nie podoba i twierdzisz, że ciągnę magazyn na dno? Rozumiem, że reszta Ci się podobała, więc co narzekasz. 22:1 dla mnie!

      2. Uruchamiałeś chociaż raz Pestudio i sprawdzałeś jakie indicatory wyświetla czy piszesz to z własnego niedoświadczenia? Bo z tego co piszesz mam wrażenie, że dla ciebie tablica importów to pierwsze i ostatnie na co się natknąłeś w strukturze PE. Kończyłeś korespondencyjny kurs reverse engineeringu z Reader’s Digest?

      3. Nikt nie pisze wysokowydajnych narzędzi do manipulacji PE w Pythonie, od tego jest C++. Dowód – nie istnieje ani jeden exe-protector, exe-packer ani wirtualizer, który jest napisany w Pythonie, ani nawet żadne inne narzędzie do RE: w Pythonie (nie licząc tych, które wspierają skryptowanie) bo to by po prostu nie działało (a przecież można skompilować do bytecode, co nie?), w Pythonie piszą głównie pracownicy AV, którzy nie mają czasu pisać porządnego kodu C++ i na szybko potrzebują odxorować parę rzeczy. W której firmie pracujesz?

      4. Twierdzisz, że jesteś w stanie to napisać w jeden dzień – wyzwanie przyjęte, jest 23:37 pisz re-gimbusie do jutra, czekam na rezultaty!

      5. Konsola, python (2.xx czy 3?) i pefile jest najlepsze mówisz :), Ci co wybierali 2013 Top Security Tools (ToolWatch) chyba mieli inne zdanie 🙂

      Odpowiedz
  2. 1. reszta OK. Dodal bym w kategori Deasembler i Dekompilatory alternatywy hopper – hopperapp.com czy radar – radare.org
    Zamiast PE-Bear polecil bym CFF Explorer bo jest bardziej dopracowany i ma ladny hex edytor i obsluge .NET a PE-Bear dal bym do alternatyw
    dolaczajac jeszcze LordPE. Zamiast Hex Workshop polecil bym 010 Editor bo ma obsluge szablonow, skryptow i jest tanszy. Licencja domowa 49.95$

    2. Tak uruchamialem nawet wczesniejsze wersje z starym poprzednim UI i doszedlem do wniosku ze jego autor nie jest zby kompetentny,
    chociaz sie pare sztuczek nauczyl w ciagu ostatnich dwoch lat. nicolas brulez dobrze podsumowal to narzedzie na twiterze
    „Pestudio opened by PeStudio shows same and more worrying facts :)”
    https://twitter.com/nicolasbrulez/status/444425180442411008/photo/1

    Mozna sie tez dowiedziec ze na liscie blacklistowanych stringow sa USER32.dll, KERNEL32.dll czy SendMessage
    Nie konczylem kursu korespondencyjngo z Reader’s Digest (dobry jest?) ale przeczytalem wszystkie ksiazki Dawida Farbaniec 😉

    3. > Nikt nie pisze wysokowydajnych narzedzi do manipulacji PE w Pythonie, od tego jest C++.
    A kto mowi o manipulacja, edycji ? ale wymysliles skomplikowany termin „wysokowydajnych narzedzi do manipulacji PE”
    W PEStudio nie mozesz NIC zmodyfikowac. Nie rozumiem aluzji do exe-protectorow exe-packerow.

    > w Pythonie pisza glównie pracownicy AV, którzy nie maja czasu pisac porzadnego kodu C++ i na szybko potrzebuja odxorowac pare rzeczy
    bzdura, slyszales na przyklad o Dropbox ? poczytaj na wiki

    4. to czekaj dalej na rezulataty „re-gimbusie”, jesli chcesz z kim dyskutowac to go nie obrazaj

    Odpowiedz
    • 1. To czekam na oficjalne przeprosiny na NK.pl 🙂

      2. Fakt, generuje czasami stek bzdur, jednak pokazuje wiele ciekawych informacji, dzięki którym można dla przykładu ukryć fakt np. że PE był modyfikowany. Wszystkie nienaturalne i podejrzane flagi oraz wartości w strukturach PE wykrywasz wzrokowo?

      3. A co ma Dropbox do manipulacji plikami wykonywalnymi i ich strukturami? NIC. Manipulacja strukturami PE w połączeniu z analizą kodu wymaga wysokowydajnych algorytmów.

      5. Nie mam zamiaru z tobą dyskutować, jeśli Ci się nie podoba wróć na blog Farbańca 😉

      Odpowiedz
    • Kompletna bzdura? To gdzie te exe-protectory, exe packery czy wirtualizery w Pythonie?

      Przeczytaj komentarz wyżej, pisałem, że Python jest często wykorzystywany ale jako oskryptowanie istniejących, wydajniejszych aplikacji do RE:.

      No to spójrzmy co mamy w twoim PDF:

      • BeaEnginePython – BEA Engine jest napisany w C i assemblerze, to tylko binding w Pythonie, w LUA też sobie możesz napisać…
      • Bochs Python Instrumentation – patch dla emulatora Bochs, który z tego co wiem jest napisany w C
      • Buggery – „Python wrapper for DbgEng.” heh, czyli wrapper dla WinDbg, napisanego w C/C++ 😉
      • dislib – bazujący na engine diStorm, które jest stworzone w C, cytat ze źródła „If diStorm isn’t available, we won’t disassemble anything”
      • diStorm – binding dla diStorm w Pythonie, diStorm jak wyżej CAŁE jest w C
      • IDAPython – skryptowanie w Pythonie dla IDA, która jest stworzona w C++
      • ImmLIB – „Immunity Debugger’s Python API includes many useful utilities and functions”, Immunity bazuje na kodzie OllyDbg stworzonym w C/C++
      • OllyDbg – kolejny plugin „OllyPython is an OllyDbg plugin that integrates the Python programming language, allowing scripts to run in OllyDbg.”
      • ProcessTap – „Base Project PinTool, (Valgrind, QEMU, DinamoRIO)” PinTool stworzony w C/C++ 🙂
      • PyCodin – „The first version of the tool uses Qemu as the virtualization back-end.”
      • pydasm – „pydasm is a python wrapper for libdasm” libdasm jest napisany w C
      • PyDbgEng – „PyDbgEng is a Python Wrapper For Microsoft Debug Engine”
      • pygdb – „This is a simple python wrapper around GDB”
      • pyHIEW – „PyHiew is a Hiew External Module that allows users to write Python scripts that interface with Hiew.”
      • pykd – „Python extension for WinDbg”
      • Pylibemu – „Pylibemu is a wrapper for the Libemu library.” libemu jest napisane w C
      • PySTP – „PySTP is a Python extension module that interfaces with STP” STP jest stworzone w C++
      • PythonGdb – „Integrate Python scripting into Gdb.”
      • WinAppDbg – „The WinAppDbg python module allows developers to quickly code instrumentation scripts in Python under a Windows environment.”
      • Z3-python – „This is a Python binding to the SMT solver Z3” Z3 stworzony jest w C++

      Co więc mamy? Wrappery, bindingi, pluginy, oskryptowanie do ISTNIEJĄCYCH NARZĘDZI w większości stworzonych w C/C++. Jedynie kilka narzędzi było stworzonych od podstaw w Pythonie, ale tu też znalazły się takie, które były portami narzędzi np. w assemblerze jak biblioteka bazująca na LDE udis.

      Co z tego wynika? Że w Pythonie nie powstało żadne poważne, bazowe narzędzie do reversingu (nie mówiąc o jakimś poważnym narzędziu do zabezpieczania PE).

      Czy to źle? Oczywiście, że nie! Oskryptowanie istniejących narzędzi w Pythonie jest wygodne, sam Python jest przyjaznym językiem do manipulacji binarnych danych, jednak nie jest to język, w którym pisze się poważne i często komercyjne oprogramowanie do reversingu / protektu.

      Jakie z tego płyną wnioski? Radzę uważniej sprawdzać o czym mówisz, bo jak widzisz bardzo prosto sprawdzić takie bzdury.

      Odpowiedz
    • @ann44: Toś mnie przekonał „Miasm uses: LibTCC tinycc to JIT code for emulation mode. See below or LLVM v3.2”

      są jakieś narzędzia w Pythonie, które NIE BAZUJĄ na innych wysokowydajnych narzędziach w C/C++?

      Odpowiedz

Dodaj komentarz