• サぺル@tech.pr0n.plOP
    link
    fedilink
    Polski
    arrow-up
    1
    ·
    12 days ago

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

    • Lacky@tech.pr0n.pl
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      12 days 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.

      • naur@tech.pr0n.plM
        link
        fedilink
        Polski
        arrow-up
        1
        ·
        8 days 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@tech.pr0n.pl
          link
          fedilink
          arrow-up
          2
          ·
          5 days 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.

          • naur@tech.pr0n.plM
            link
            fedilink
            Polski
            arrow-up
            1
            ·
            4 days 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.

            • サぺル@tech.pr0n.plOP
              link
              fedilink
              Polski
              arrow-up
              1
              ·
              3 days 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.

              • naur@tech.pr0n.plM
                link
                fedilink
                Polski
                arrow-up
                1
                ·
                edit-2
                2 days 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.

                • サぺル@tech.pr0n.plOP
                  link
                  fedilink
                  Polski
                  arrow-up
                  1
                  ·
                  edit-2
                  2 days 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ść”?

        • Lacky@tech.pr0n.pl
          link
          fedilink
          arrow-up
          1
          ·
          10 days 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.

          • サぺル@tech.pr0n.plOP
            link
            fedilink
            Polski
            arrow-up
            0
            ·
            9 days 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@tech.pr0n.pl
              link
              fedilink
              arrow-up
              1
              ·
              9 days 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.

              • サぺル@tech.pr0n.plOP
                link
                fedilink
                Polski
                arrow-up
                1
                ·
                8 days 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ś.