Moja lista ulubionych i najczęściej wykorzystywanych narzędzi w reverse engineeringu.
1. HIEW
Bezapelacyjnie pierwsze miejsce. Narzędzie (w tym wypadku nie można mówić o nim jak o zwykłym hexedytorze), z którego najczęściej korzystam do edycji plików, kodu, do szybkiego odnajdywania tego co potrzeba.
Mimo konsolowego GUI jest to prawdziwy kombajn, bez którego nie wyobrażam sobie pracy w reversingu.
2. OllyDbg
Kiedyś wpisałbym tutaj SoftICE, jednak jego lata panowania już minęły. OllyDbg mimo pewnych niedogodności względem SoftICE, godnie go zastąpił, głównie ze względu na system wtyczek, które bez wątpienia stanowią dzisiaj o sile tego debuggera (np. ODBScript, dzięki któremu można robić cuda i dzięki któremu na nowo odnalazłem radochę z pracy).
Również duża liczba zmodyfikowanych wersji OllyDbg świadczy o ogromnej rzeszy fanów tego debuggera.
3. IDA
Najlepszy deasembler na świecie, bez niego nie ma mowy o analizie plików binarnych ani prowadzenia projektu, który wymaga kilku miesięcy pracy przy modyfikacji jakiegoś oprogramowania.
Posiada wbudowany system wtyczek, język skryptowy, rozpoznawanie znanych funkcji z całej rzeszy kompilatorów i ich bibliotek oraz masę zaawansowanych funkcji ułatwiających analizę statyczną oraz dynamiczną.
https://www.hex-rays.com/idapro/
4. FileMon i RegMon
Ex aequo na tym samym miejscu. Narzędzia, dzięki którym zaoszczedziłem kupę pracy przy śledzeniu działania aplikacji. Wystarczy odpalić, ustawić filtry i mamy wszystko co potrzeba, potem wystarczy znaleźć odpowiedni ciąg znaków w aplikacji, xref (you know the drill) itd.
Przy okazji nie wiem jak wy, ale do mnie zupełnie nie przemówiło zintegrowane narzędzie ProcMon.
Linki — FileMon RegMon ProcMon
5. Hex Workshop
To czego nie ma HIEW ma Hex Workshop, główną zaletą Hex Workshop jest praca na wielu plikach, co znacznie ułatwia kopiowanie danych z jednego pliku do drugiego, porównywanie binarne plików.
Dodatkowe funkcje umilające życie to m.in. wbudowane hashowanie, przeglądanie zdefiniowanych struktur danych. Bardziej rozbudowanym hexedytorem, który mógłby zastąpić Hex Workshop w mojej bazie narzędzi jest WinHex, jednak zawsze był dla mnie zbyt toporny, aby stał się narzędziem, które klikam w pierwszej kolejności.
6. LordPE
Process viewer i dumper, który mimo już swojego zaawansowanego wieku, nadal jest przydatnym narzędziem, które umożliwia szybki zrzut pamięci wybranego procesu (oraz jego pamięci wirtualnej), odbudowę uszkodzonych struktur plików PE czy też szybką edycję flag sekcji exeków.
7. Universal Extractor i MultiExtractor
Czasami zdarza się, że trzeba rozpakować pliki instalatora, albo z binarki wyciągnąć wszystkie jego zasoby, te 2 narzędzia pozwalają sprawnie i szybko rozpakować wszystkie rodzaje instalatorów stosowane w dystrybucji oprogramowania oraz wyciągnąć chyba wszystkie multimedialne formaty plików ukryte w innych plikach binarnych.
Universal Extractor — http://legroom.net/software/uniextract
MultiExtractor — http://www.multiextractor.com
8. .NET Reflector i JAD
Rozwój techniki sprawił, że nie da się już przejść obojętnie obok aplikacji .NET oraz tych w Javie, dlatego te 2 narzędzia prędzej czy później wylądują u każdego, kto zajmuje się reversingiem.
.NET Reflector — http://www.red-gate.com/products/reflector/
JAD — http://www.varaneckas.com/jad
9. eXeScope
Prosty i szybki viewer zasobów plików wykonywalnych, mimo, że są już zdecydowanie lepsze narzędzia (jak np. te wbudowane w Visual Studio), eXeScope przydaje się gdy trzeba szybko znaleźć coś w zasobach.
10. ImpREC
Narzędzie, bez którego nie obejdzie się żaden unpacking, w pewnym momencie i tak się przyda 🙂
Gdzie szukać innych narzędzi?
Jeśli szukasz narzędzi, odwiedź te strony:
- Programmers’ Tools — ogromna baza z linkami
- Collaborative RCE Tool Library — baza + mirrory plików