• サぺルOP
    link
    fedilink
    Polski
    arrow-up
    1
    ·
    7 months ago

    To takie wszechstronne narzędzie. Widziałem jak ktoś robił w tym plik o określonej wielkości i kodował w asm.

    • Lacky
      link
      fedilink
      arrow-up
      1
      ·
      7 months ago

      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.

      • naurM
        link
        fedilink
        Polski
        arrow-up
        1
        ·
        7 months ago

        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.

        • Lacky
          link
          fedilink
          arrow-up
          2
          ·
          7 months ago

          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.

          • naurM
            link
            fedilink
            Polski
            arrow-up
            1
            ·
            7 months ago

            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.

            • サぺルOP
              link
              fedilink
              Polski
              arrow-up
              1
              ·
              7 months ago

              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.

              • naurM
                link
                fedilink
                Polski
                arrow-up
                1
                ·
                7 months ago

                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.

                • サぺルOP
                  link
                  fedilink
                  Polski
                  arrow-up
                  1
                  ·
                  7 months ago

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

      • サぺルOP
        link
        fedilink
        Polski
        arrow-up
        1
        ·
        7 months ago

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

        • Lacky
          link
          fedilink
          arrow-up
          1
          ·
          7 months ago

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

          • サぺルOP
            link
            fedilink
            Polski
            arrow-up
            1
            ·
            7 months ago

            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.

            • Lacky
              link
              fedilink
              arrow-up
              1
              ·
              7 months ago

              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.

              • サぺルOP
                link
                fedilink
                Polski
                arrow-up
                1
                ·
                7 months ago

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