To takie wszechstronne narzędzie. Widziałem jak ktoś robił w tym plik o określonej wielkości i kodował w asm.
Rizin, to w założeniu miał być fork radare2 z ludzką twarzą. Jak masz gdzieś pod ręką materiał, to podrzuć. Chętnie zobaczę jak ta bardziej ludzka twarz wygląda w praktyce.
Sam używam radare2 jak potrzebuję zrobić jakiś skrypt, który musi pogrzebać coś w binarce. Jest o tyle fajny, że klasyczne narzędzia typu nm, objdump itp muszą pochodzić z toolchaina przeznaczonego dla danej architektury. R2 nie ma tego problemu i wyciągnie informacje z pliku ELF niezależnie czy był zbudowany na x86, ARM czy innego MIPS.
Znalazłem Asm w Pythonie: https://thepythoncode.com/article/arm-x86-64-assembly-disassembly-and-emulation-in-python
Z tego co widzę, R2 używa fridy do tracingu?
Szkoda, liczyłem, że mają jakieś niezależne narzędzie.
Próbowałem kiedyś logować wywołania dość dużego zbioru funkcji w binarce. Niestety okazało się, że proces crashuje, jeśli z hookowanej metody wyleci wyjątek C++. Wydaje mi się, że Frida obsługuje tylko SEH.Nie wiem co chciałeś osiągnąć, ale ja do czegoś takiego używam GDB z kawałkiem skryptu, który najpierw stawia breakpointy na interesujących mnie punktach kodu, po zatrzymaniu wypisuje rzeczy, które mnie interesują (stan rejestrów, zmiennych itp) i automatycznie puszcza proces dalej.
Zależało mi na dobrej wydajności, bo te hookowane funkcje są często wywoływane.
Frida ma chyba możliwość działania w ramach hookowanego procesu, więc liczyłem, że koszt logowania do SQLite będzie niższy.Finalnie chyba będę musiał obadać instrumentację binarnego kodu pluginem do gcc.
Wydaje się jakbyś przesadził z oczekiwaniami. Wydajnie to chyba możesz tam wstawić funkcje inline. Po to uczyłeś się vim/emacs/clang, żeby umieć wstawić to w źródło normalnie. Bardziej ciekawi mnie jak wyglądałaby taka funkcja logująca i co to znaczy “wydajnie” wg ciebie.
Modyfikacja kodu w projekcie jest czasem zbyt trudna ze względu na proces zatwierdzania zmian w repozytorium.
To tak jakbyś powiedział Linusowi, że chcesz dodać logowanie do kilkuset funkcji w kernelu (w różnych modułach).
Teoretyczniei możesz to zrobić, ale wymagałoby to takich fikołków, że łatwiej zrobić wszystko lokalnie na środowisku developerskim.Jeśli miałby być to projekt badawczy to nic bym mu nie mówił, tylko to zrobił i przeprowadził potrzebne testy. Potem mógłbym wpaść na coś lepszego. W każdym razie uzyskałbym jakieś wyniki. Możliwe, że stworzyłbym narzędzie dołączające wywołania do metod/funkcji z listy.
To dlatego, że napisałeś o wydajności. Inaczej użyłbyś standardowych narzędzi.
Nie wiem jakie wymagania ma ta “wydajność”?
To ma taką ludzką twarz jak vim i gdb. Wolałbym użyć Pythona. Ciekawe czy Python ma jakieś moduły dla ASM? Cza sprawdzić.
Tu jest użycie: https://youtu.be/YQvsBkz6Yqs?t=305
Materiał raczej mi się nie podobał.
"To ma taką ludzką twarz jak vim i gdb. "
Czyli bez szału i w sumie na ten moment nie widzę powodu dla którego miałbym porzucać radare2 na rzecz rizin. Może za jakiś czas różnice będą bardziej znaczące na korzyść rizin.
“Znalazłem Asm w Pythonie”
A to tak. Keystone, Capstone i Unicorn to takich trzech jeźdźców niskopoziomowej zabawy. Sporo współczesnych narzędzi tego używa. Przykładowo ImHex używa Capstone.
Ale nikt cię nie zmusza. To tylko informacja o czymś nowym. Serio myślicie, że jeśli często się o czymś wspomina, to trzeba tego używać? Przecież to szereg błędów poznawczych.
Ktoś niedawno wymyślił, że im bardziej jesteś inteligentny i masz do rozwiązania trywialne problemy, tym bardziej utrudniasz sobie życie w innym miejscu. Szczególnie w narzędziach lub środowisku.
Już dawno odpuściłem sobie używanie czegoś na siłę, bo akurat hipsterzy robią dużo szumu. Wychodzę z założenia, że raz na jakiś czas warto wyjść ze swojej bańki narzędziowej, bo a nóż znajdzie się coś co pozwoli zrobić robotę lepiej/szybciej.
Kiedyś się mówiło, że to nie zależy od narzędzia tylko od osoby.
Narzędzia tworzy się raczej dla siebie. Będą używać go podobni ludzie.
Tak jak tworzyło się oprogramowanie w latach jego świetności. Kiedy ktoś sobie pomyślał, że taka opcja może komuś się przydać. Wymyślali to raczej wyjątkowi ludzie, więc zazwyczaj to było dobre, dla podobnych im ludzi, do których komputery były wtedy ograniczone.
Jeśli narzędzie ci nie odpowiada, znaczy to tylko, że nie masz podobnych doświadczeń jak twórca.
To i tak lepsze wyjście niż ludzie, którzy są zmuszeni do określonych narzędzi bo branża, albo coś.