
aktu achtung reagują na niemiecki oficer już widziałeś cześć
hej dzisiaj jest sobota dzień kota drugi dzień konferencji jeszcze trochę przyciągnęło się wszyscy wchodzą
dobra ja myślę że możemy zaczynać a kto się spóźnił bo jest minut chwilę bo to jego problem może włosy już patrzę na to i myślę że można to zrobić zdjęcie mariusz no i przeciągam i w ogóle się odsunęliście a także prezentacji a cześć zostaw łapkę włączyłem właśnie super można nim mówić do mikrofonów system z dobrze bardzo wam dziękuję bogu że przyszliście jestem zaskoczony ilością osób bo szczerze mówiąc sam mają spory problem żeby wstać na dziewiątym dzisiaj dzięki wielkie chciałbym dzisiaj trochę opowiedzieć o dynamicznym projektowaniu ale zanim przejdę do tego co chciałbym powiedzieć kilka słów o sobie jestem na scenie więc mam takie prawo nazywam się mariusz zaworskimi pracuję w firmie functionite i zajmujemy się rozwiązaniami do
monitorowania ruchu sieciowego w parku robimy nagrywarka do ssh jest np jeżeli jesteście zainteresowani to zachęcam wolnym czasie którego niestety nie mam za dużo rozwijam także taki projekt który nazywa się w trybie z najlepszych system operacyjny również prowadzę grupę użytkowników i jest z spotykamy się co miesiąc więc jeżeli bylibyście zainteresowani to serdecznie zapraszam poza tym coś tam czasem blokuje coś tam wpisuję więc jeśli chcielibyście dowiedzieć się więcej o rzeczach które wam dzisiaj poopowiadać to warto warto zajrzeć na mojego bloga 5 twittera o tym będziemy dzisiaj rozmawiać najpierw zrobimy sobie krótkie wprowadzenie do śledzenia ścieżek wykonania procesu następnie porozmawiamy o dwóch bardzo ciekawych rozwiązań chwili obecnej c f g a zakończymy naszą dzisiejszą prezentacją taką ciekawą techniką która
nazywa się french w opowiemy sobie dosłownie w kilku słowach czym są i do czego służą więc śledzenie się że wykonania procesu mamy sobie prosty kod o dziewiątej rano kod najlepszy jest więc mamy sobie dwie funkcje swój bar wykonujemy w pętli losujemy sobie jakąś liczbę jeżeli wypadnie nam liczba nieparzysta to wykonujemy funkcję fu jeżeli wygląda mamy liczbę parzystą to wykonam funkcja barw i teraz pytanie 10 rzeczy które funkcja się wykona ile razy się wykonają kiedy się wykonają ile czasu zajmie wykonanie danej funkcji i właśnie żeby odpowiedzieć sobie na takie pytania możemy użyć właśnie śledzenia programu żeby zobrazować to interesuje nas de facto tworzenia sobie takiej ścieżki czyli które funkcje w jakim etapie były wykonane czyli wchodzimy sobie domain zapominamy
funkcję randkę ale wchodzimy do menu wykonujemy swój wracamy swój znowu wykonujemy w i tak dalej i tak dalej generalnie na tym polega na stworzeniu sobie ścieżki wykonania programów i jakiś czas temu dwa czy trzy lata postaram genialna książka praktyki inżynierii wstecznej tam w robert świecki właśnie popełni taki artykuł na temat śledzenia się że wykonania programu bardzo fajny artykuł jeżeli ktoś nie wiedział polecam wchodzi tam bardzo nisko właśnie do różnych cześć metod śledzenia się że wykonania tego procesu i on wymyślił kilka różnych metod jedną z nich to jest właśnie instrumenty tyle instrumentacji kodu źródłowego którą najczęstszym przypadku sprowadza jak najbardziej znana metoda to jest po prostu dla mnie masy plików do naszego kodu czyli jeżeli jesteśmy
zainteresowani śledzeniem jakiegoś powodu to sobie po prostu dodajemy na początku naszej funkcji airprint że poszliśmy do tej funkcji w momencie w którym zdajemy sobie sprawę że wychodzimy na pewno każdy zna tą metodę każdy przynajmniej raz i próbą oczywiście potrzebujemy do tego kodu źródłowego musimy być w stanie skompilować tą aplikację i tak dalej i tak dalej to jest to bardzo efektywna metoda dla małych aplikacji żeby sobie coś zbadać możemy także wykorzystać bardziej nowoczesne metody jak na przykład instrument organizacja programów w ramach kompilacji polega to na tym że kompilator dostarcza nam zestaw pewnych funkcji które sobie zaimplementujemy to nam różnych miejscach do kompiluje nasz projekt i pilot danej funkcji możemy w ten sposób sobie z informacji zobacz
oczywiście w tych punktach określamy co ma się wydarzyć na przykład po prostu chcemy wypisać która funkcja została wykonana czy faktycznie chcemy zniszczyć coś policzyć czas czy cokolwiek inną metodą żeby śledzić ciężki ciężki wykonania procesu to jest po prostu emulacja całego procesora możemy wtedy sobie na dowolny instrukcji sobie się zatrzymać możemy właśnie w skorzystać z kilku lat oraz i po prostu śledzić sobie co się dzieje w naszym naszej maszynie hs oczywiście także metody programowo sprzętowe jak to robert nazwał ten motocykl musi mieć wsparcie w sprzęcie oraz naszej aplikacji w aplikacji generalnie bo to de facto chodzi o wsparcie na przykład w systemie operacyjnym i tak na przykład bardzo popularny którego wszyscy na pewno korzystacie to jest i 3d po prostu
wywołanie przetrwanie który włącza nam odwagę w ostatnim czasie powstało dużo innych rozszerzeń to co do procesora takich jak interpretować place in private sector i tak dalej i tak dalej nie będę wchodził tutaj w za dużo szczegóły jeżeli byście chcieli poznać i od kuchni jak to wygląda zapraszam to tylko artykułu roberta są także metody sprzętowe takie czyste czyli po prostu wykorzystywane do bohaterów przez i tak podłączamy się pod płytę główną obserwujemy co dzieje się na procesorze wiemy wszystko możemy sobie śledzić kiedy kole zostały wykonane takich funkcji i tak cześć no i po co w ogóle to robić możemy zrobić ze względu na to żeby badać wydajność systemu i do tego głównie wprowadzać po co w ogóle zostały
stworzone dynamiczny tracer żeby jak najmniej przerywać działanie programu i właśnie śledzić ile czasu spędzamy w poszczególnych funkcjach bez konieczności do kompilacji kodu i instrumenty realizacji kodu za bardzo oczywiście do drukowania kodu jeżeli mamy jakiś błąd chcielibyśmy wiedzieć co się dzieje w naszej aplikacji jest to świetna metoda w zastąpieniu lub w uzupełnieniu do jakichś bohaterów analiza programów jeżeli mamy jakieś malware albo w jakiś inny sposób który chcielibyśmy sobie prześledzić zobaczyć jak działa może chcielibyśmy wyodrębnić je kupić jakieś pojedyncze funkcje tego programu chcielibyśmy zbadać to tak że jest to świetna metoda fazy instrumental izolacji w ogóle nie istnieje bardzo przydatne w momencie fazowania wiemy że jeżeli zmienimy której zbity w naszym naszym korpusie to chcemy wiedzieć czy
odblokowaliśmy dodatkowe ścieżki wykonaniu programu czy też nie możemy wykorzystać także fakt fajnie mieć zawsze dodatkowe narzędzia w naszym kraju w opisie tak jak wspominałem będziemy sobie rozmawiać na temat izraela i ee tam na temat tej samej bhp taką książkę takie dwie ważne książki napisałem grę który również będzie przejawiał się pojawia w tej prezentacji ale to jest taki góry jeżeli chodzi o tak to dynamiczne projektowanie i o to chodzi chodzi o to żeby stworzyć taki mechanizm który dostarcza nam jak najwięcej informacji na temat stanu naszego systemu gdzie nie tylko możemy ograniczyć się do stanu systemu jako partnera ale także do stanu jako w pojedynczego procesu najczęściej dynamiczne dynamiczne frameworki łączą dwie metody jest to z reguły informatyzację kodu
źródłowego czyli na przykład jeżeli chcielibyśmy profilowe kernel to z reguły dodajemy jakieś prośby o czym za chwilę w którym będą was informować na temat stanu różnych rzeczy w naszym systemie oraz metody oprogramowanie sprzętowe czyli w the fuck na przykład instrumentów zdajemy sobie sprawy co jest najczęściej wykorzystujemy takie właśnie metody jak i 3d po prostu przetrwanie który generuje nam wyjdzie nam do zobaczenia tak jak wspomniałem te dynamiczne metody są głównie stosowane do do wydajności systemu ale nie tylko to mam nadzieję że się wam to dzisiaj pokażę wam w ogóle dynamiczna chodzi o to żeby jak najwięcej dostarczyć informacji do systemu do frameworku bez konieczności ponownej dekompilacji naszego systemu operacyjnego a także żeby można było to w pewien sposób
skryptowanie czyli de facto tworząc ten framework nie wiemy do czego będzie wykorzystany chcemy deski na tyle obszerny zestaw możliwości żebyśmy różne różne aspekty systemu z babci tak jak wspomniałem uruchomiony skrypt i starają się jak najmniej minimalizować czas w którym będziemy w tym zawieszeniu w przeciwieństwie do na przykład do gbb czy kiedykolwiek próbowaliście coś wrzucić do gta 2 że próbowaliście to de facto dostajemy nagle przetrwanie naszego procesu i możemy sobie badać i patrzeć coś nie no tak ale jeżeli mamy na przykład w usa czymś bardziej złożoną aplikacji wejdziemy sobie do takiego debuggera to inne procesy nagrywam od zabijają i nie możemy sobie i defacto cała maszyna cały stan naszej maszyny całego naszego postgres a umiera w przeciwieństwie oczywiście jeżeli
mówimy że chcielibyśmy wykorzystać ten instrument realizacje do fazowania tutaj to są różne metody możemy oczywiście śledzić same bloki wykonania kodu ale naprawdę najczęściej wykorzystuje się to do najczęściej wykorzystuję metody branży ponieważ jest troszeczkę bardziej optymalna niestety dynamicznym dynamicznych przepraszam a może się trochę od niego odsunę framework dynamicznych głównie skupiamy się na śledzenie bloków kodu lub funkcji dobrze przejdźmy teraz do wirusa od razu taki disclaimer z tracy jesteś moim wspólnikiem troszkę ja dużo bardziej używam lisa niż innych metod więc też troszeczkę więcej sobie o nią porozmawiamy trochę więcej będzie z nim przykładów niż w przypadku mdf-a ale także sobie to np porozmawiamy więc czym jest w ogóle i to jest piękne logo jednorożca więc nie może być źle
nową technologią powstał w 2003 roku na platformę solaris potem był gotowany na różne platformy o czym będziemy rozmawiać zaraz w biznesie w tworzymy sobie skrypt w języku d jest on trochę podobny do oka troszeczkę sobie na niego patrzymy zaraz jest bardzo prosty i sobie zrobić krzywdę czy nie ma takich operacji które zawierają nam system czyli jeżeli spróbujemy coś sobie śledzić ale będziemy próbować badać tą sytuację za pomocą skryptów to nie możemy na przykład wykonać żadnej pętli bo tam najczęściej są błędy i jest zwykle nie pozwala nam w ogóle stworzyć pętli nie mam w ogóle instrukcji warunkowych bo tam też najczęściej są błędy także nie możemy sobie w ogóle zrobić nie ma praktycznie w ogóle ich w
jeżeli założymy sobie lisa ale z niego nie korzystamy nie mamy za czytanego żadnego skryptu nie powinienem w ogóle spowalniać naszego systemu operacyjnego jeżeli stosujemy sobie jeden w jeden konkretny proces nie powinno to mieć wpływu na cały system operacyjny cały z całą ekipą cały ekosystem możemy testować sobie programy o czym wspominałem internet czy konkretne konkretne moduły co możemy śledzić możemy sobie niektóre funkcje były wywołane możemy sobie śledzić i ich argumenty możemy sobie śledzić wyjścia możemy sobie z śledzić cały stos funkcji w moim funkcji jeżeli na przykład mamy sobie funkcję fu chcemy wiedzieć jak nam się dostaliśmy możemy sobie wypisać cały cały zakres funkcji i wiele wiele więcej to trochę nomenklatury więc mamy sobie problem czy to jest coś co będziemy
śledzić czyli coś co chcielibyśmy żeby nasz system de facto w momencie tej z zaistniałej sytuacji żeby nasz system jakoś zareagował i teraz prowadzą składa się z prawa i teraz czyli z jakiegoś modułu który jest dostarczany przez detroit sam modułu czyli moduł oprogramowania może to być po prostu lipcem może to być nasz program może być to postać może być to kernel w konkretnej funkcji którą byśmy chcieli chcieli w śledzić czyli przypadku może to być open może być o ponad może to być jakaś predefiniowana chcę mamy tutaj i to jest jedyny de facto warunek który możemy sobie w trasie w wstawić i to jest moment w którym ma być wykonana co musi się zdarzyć żeby ta prośba została została wykonana i akcję
czyli co chcemy żeby się stało w naszym systemie i tutaj mamy przykład dwóch prób mamy sobie problem z call znaczy próbek które wygląda w ten sposób ona składa się z provider rosyjską moduł został pominięty jeżeli nie chcemy albo chcemy white kartonowo czyli wszystkie albo nas nie interesuje możemy po prostu dany dany element pominąć w podczas tworzenia problem czyli w tym momencie moduł jest pominięty interesuje nas funkcja rate czyli obserwujemy sobie z kolei w momencie kiedy wejdziemy w ten sposób i w momencie kiedy wołacie zostanie wyłączony z powrotem na pozostanie w ue aktualnie odpalona w tym przypadku również obserwujemy sobie provider wszystko również również niemcy bright natomiast w tym przypadku interesuje nas w momencie wejścia i zostanie ona spalona
tylko w momencie kiedy wyjście czyli wielkość return w tej funkcji będzie większy większy niż 10 hm w systemie free jest w moim systemie głównie korzystają z tej samej ponad 50 tysięcy kroków możemy sobie łatwo wypisać po prostu wykorzystuję przełącznik lb-0 mamy w nich wypisane provider moduły funkcje i w nazwy które możemy sobie wykorzystać możemy także zawęzić możemy zapytać na przykład tylko provider wszystko również nam wypisze tylko stole musimy grupować możemy to po prostu w ramach funkcji sobie wyspecyfikowany dać możemy także zapytać bardzo szczegółowo na temat problemu możemy zapytać żeby możemy użyć trybu wyboru z którym pisze nawet które argumenty jakie argumenty są funkcji tutaj nie zmieściłoby się wszystkie informacje które są wypisane na przez wirusa na slajdzie ale de facto
najbardziej interesuje interesowało mnie tutaj argumenty czyli argumenty jakie widz wrócić y 0 mamy klienta prawdopodobnie deskryptor mamy wojna widzimy nawet że jesteś zdrowy czyli pewnie jakiś buffer i zaiste czyli rozmiar który który będziemy czytać więc zobaczmy jak to działa możemy sobie stworzyć właśnie problem powiedzieć co widzisz że interesuje nas prowadzą chwal momencie worka nic nie rób nie mamy żadnych akcji wiec poprostu wpisze za każdym razem kiedy w stanie się jakiś fork w naszym systemie zostaniemy o tym poinformowani niezbyt przydatne ale działa możemy być bardziej możemy zainteresować się troszeczkę bardziej na przykład zapytać trasa jaki proces de facto się formuje się w tym momencie dodajemy sobie jakąś akcję w tym momencie po prostu wpisujemy państwa i wypisujemy egzamin czyli co
chcę się w tej chwili sortować możemy sobie śledzić w naszym systemie wszystkie procesy które aktualnie wykonują pole system polk no dobrze ale wróćmy do naszego przykładu z naszym bardzo ciekawym kątem bardzo złożonym kątem jak informacje możemy z niego sobie wyciągnąć możemy sobie na przykład tak jak w przypadku symboli po prostu zobaczyć niektóre funkcje które funkcje były były zwołane tutaj wykorzystaliśmy specjalny provide który właśnie pozwala śledzić dowolny punkt w naszym systemie target to jest de facto zmienna która zostanie zastąpiona przez konkretny feat podając polecenie myśliwce mówimy wykonam ten konkretny problem więc tutaj widzimy że doszliśmy do funkcji hand weszliśmy do funkcji fu weszliśmy do funkcji random znowu dochód w końcu do baru i tak dalej i tak dalej więc możemy sobie stworzyć
cały ten rejs funkcje do których chodzimy w tym przypadku bardzo prosty sposób właściwie wykonując tylko mówiąc z tej historii że interesują nas funkcji np tutaj właśnie została pominięta de facto nazwą funkcji więc wszystkie usuniemy wszystkie funkcje musimy wyeksportować symboli nie musimy nic robić wystarczy że powiem mu interesują nas wszystkie zdarzenia wejścia wejścia do do funkcji w tym procesie nie możemy sobie policzyć możemy sobie policzyć jakie funkcje ile razy były wykonane używamy do tego tablicy agata i po prostu wpisujemy aktualną nazwę funkcji do i przybliżamy używając prostej funkcji account dostajemy po prostu ilość wywołać żadnej funkcji czyli widzimy że w był wykonany ilość razy bardziej sześć razy a rand tyle samo razy tofu i bar bo tak wynika z
resztą skąd tak jak wspominałem możemy sobie policzyć z to możemy także wypisać co z dowolnym momencie tutaj mamy w tym przypadku agregację stosu i liczbę ile razy ten stos się wykonał tutaj z jakiegoś powodu nie ma symbole dogodam a nawet po prostu jest adres ale widzimy że w mamy jakąś tam funkcji które wywołuje fu mam jakąś funkcję która wywołuje bar i tak dalej i tak dalej nie jest to zbyt skomplikowany przykład więc może nie jest zbyt okazałe ale faktycznie jeżeli gdzieś wejdziemy w jakimś zagłębieniu są funkcje naprzykład albo wyjdziemy do jakiegoś z kolei chcemy wiedzieć jak my w ogóle doszliśmy do tego skala możemy sobie taki start race wypisać m tutaj mamy troszeczkę bardziej złożony
przykład z wykorzystaniem tej samej sobie jakąś strukturę do której przypisujemy jakieś dwie wartości i wywołujemy znowu jakąś funkcję która coś tam robi biznes o tyle ciekawy że masz wsparcie do do procesora więc możemy sobie ich lutować różne rzeczy możemy po prostu sobie zainstalować jakiś sweter w tym przypadku a który który zawiera naszą naszą strukturę i w momencie wywołania funkcji fu czyli znowu tutaj mamy funkcję w momencie wejścia do tej funkcji kopiujemy sobie tę strukturę i wypisujemy poszczególne poszczególne wartości tutaj jest przykład autobusu z tego z tej strony więc możemy także wziąć sobie dowolną strukturę zainstalować ją wykorzystać w biznesie co bardzo upraszczam wiele wiele rzeczy ostatnio mieliśmy taką sytuację kolega mariusz położna zaproponowała że chciałby zobaczyć w pythonie jakie sql
ale wykonuje się tango jakiś tam fragment kodu chciał to zoptymalizować chciał zobaczyć co tam się dzieje więc zapytał jak może to zrobić za pomocą widelca w tym przypadku po prostu znowu otworzymy sobie jakiś provider na konkretny feat w tym przypadku i po prostu wiedzieliśmy że pq egzekucji wykorzystywane przez dresa jako funkcja do do wykonania sql a atakujemy się na w momencie wejścia i w tej funkcji po prostu pierwszy argument dzięki temu dostajemy sobie sql a z całego django bez włączania żadnego debugowania kodu wyzwania żadnych punktów możemy sobie dodać jest mały taki trik na które warto zwrócić uwagę na którym my się natknęliśmy w formie w której się są ustawione na jakąś stałą wartość być może się zdarzyć
tak że nie zmieści się całe zapytanie w naszym buforze który chcemy wypisać tak było w naszym przypadku i niestety ten element był w nowej linii więc nie mogliśmy go zobaczyć więc warto pamiętać o tym żeby podsumować z tracer żeby ten string który trzyma w pamięci był troszeczkę troszeczkę wzdłuż zadamy bokiem mieliśmy okazję być także na konferencji tak jak on na której opowiadaliśmy o tym spotkaniu pod wykresem mieliśmy taki ciekawy przypadek że w pewnym momencie mieliśmy zapytanie które nam wieści okazało się że jest to problem związany z pojedynczym klientom w skrócie w ten link lista to po prostu taka lista która przechowuje wszystkie instrumenty i w momencie kiedy na penisa jest wypełniona dopiero aktualizujemy indeks jeżeli was to
interesuje cię ten temat to zapraszam na jest nagranie speed ikona gdzie o tym wchodzimy do szczegółów do szczegółów ale w każdym razie nie interesowała nas w którym momencie tak lista jest schowana w tym momencie ten lista jest wykorzystywana i te informacje znajdowały się w mbn punktów na przykład ponieważ ta struktura nie byłam nigdzie niestety przekazywana nigdy nie byłam jakimś takim bardzo czytelny sposób dla nas w kodzie dostępna ona była tutaj mamy funkcję która odpowiada właśnie zainteresowanie tej playlisty do do tego indeksu i temat i a które zawierają informacje były obliczany na podstawie kilku różnych różnych funkcji czasami to była masakra czasami to było i nowe funkcje więc niestety ten kod zrobił nam się troszeczkę troszeczkę brzydki i nie
mogliśmy tak prosto w zakresie sobie do tego się wspiąć natomiast zauważyliśmy w pewnym momencie że te dane są gdzieś tam używane gdzieś tam porównywane zdaliśmy sobie kod czyli tutaj właśnie mamy ten vlog numbers it numer to jest de facto minus 1 był porównywalny czy ten vlog jest faktycznie impact znaleźliśmy sobie takim kotem ten kod znaleźliśmy sobie rejestr w którym wykorzystywana była ta struktura i stworzyliśmy sobie bardzo specyficzną prośbę gdzie wkrótce jesteśmy detroit sa na konkretną funkcję ale także na konkretne instrukcje w tej funkcji możemy nawet zejść do poziomu a serwera powiedzieć że interesuje nas ta konkretna funkcja jeżeli wydarzy się ten konkretny kod zrób coś w tym przypadku po prostu skopiowaliśmy sobie taką strukturę z rejestru a x
zbudowaliśmy ją sobie na naszą strukturę którą wcześniej zainwestowaliśmy nie byliśmy w stanie wypisać właśnie te wartości które nas interesują i w przypadku kiedy tej informacji nie są gdzieś tam bardzo widoczne możemy nawet zejść do poziomu a serwera i sobie testować na tym na tym poziomie m ciekawe także zastosowaniem dynamicznego testowania jest szukanie konkretnej funkcjonalności odpowiadającej czemu złożonej gry złożonej aplikacji mamy na przykład ten kalkulator interesuje nas jak ta funkcja jest na ten nieszczęsny plus nie wiemy a w momencie naciśnięcia plusa wykonuje się bardzo dużo rzeczy tą technikę tak naprawdę sprawa m2 0v kolumn to wideo na swoim streamie pokazywać taką technikę gdzie chciał zanalizować jakąś zadanie telefon będzie miał wpływu na maszynę bardzo dużo funkcji nie wiedział którą funkcję
zaczynającą się pakować więc to był taki trik że wyeksportować z 10 oddam pa listę wszystkich funkcji tutaj mamy listę wszystkich adresów funkcji i poszedł jest słowo w słowo it take a break odróżnieniu od dobrej kgb służy temu że zostanie uruchomiony tylko jeden raz czyli w momencie kiedy ten brak się wykonane zostały usunięte z list do hebrajczyków wygięte b i zastosował po prostu komendę wilde czyli po prostu cokolwiek by się nie wydarzyło któregokolwiek z x-men w uderzył mnie to nie interesuje i w tym momencie zaczął sobie chodzić po aplikacji robiąc różne inne rzeczy niż ta która konkretnie go interesowała momencie kiedy już sobie stworzył jakiś tam ślad po wrzucał te funkcje którego nie interesowały naciskając control c
continue wykonywał komendę która go tam interesuje czy witam w naszym przypadku nacisnąć nacisnęliśmy plusa i dostawał teoretycznie tą funkcję która była odpowiedzialna za wykonanie tego za obsługę tego przycisku mówię teoretycznie ponieważ oczywiście może się zdarzyć coś takiego że ta funkcja wystąpi nam wcześniej i po prostu ją pominiemy no ale taką technikę można zastosować do do śledzenia w przypadku której możemy napisać sobie de facto 3 próby możemy się zaadaptować do wszystkich funkcji w naszym procesie nie musimy tworzyć playlisty po prostu lata czujemy się do wszystkich funkcji w momencie kiedy funkcja zostanie wykonana zaznaczamy w naszej tablicy że ta funkcja jest wykonana tutaj robimy sobie także problem na klawiaturę więc jak naciśniemy f12 to przełączamy tryb z zapisywania do trybu
de facto wypisywania i tutaj sobie mamy ten trik który mówi nam że że tata ten przełącznik jest lub nie jest włączony czyli w momencie naciśnięcie w 12 wykonujemy ten zmieniamy ten plfa1 i sprawdzamy sobie naszej nowej w naszym nowym produkcie czy ta funkcja została wykonana czy nie dzięki temu wykonując mając taki skryptowy który musimy przygotować raz i on jest uniwersalny możemy go zastosować do dowolnej aplikacji możemy wykonać dokładnie to samo co zrobiliśmy gb coś dużo bardziej przyjazny sposób dużo bardziej uniwersalny uniwersalny sposób oprócz tego że możemy badać nasz system możemy także sobie przypomnieć że łyżeczkę nie istnieje i możemy spróbować troszeczkę zagrać nasz proces tak żeby działał tak jak my chcemy i do tego służą funkcje interaktywne i treści
gdzie mamy kilka funkcji które możemy w pewien sposób zmienić stan naszego systemu możemy po prostu zatrzymać sobie proces możemy wysłać jakiś sygnał do naszego procesu możemy skopiować jakiś fragment pamięci z tego miejsca do naszego procesu albo możemy wykonać po prostu jakoś systemową operację w przypadku karmel a my możemy włosy i brak komentarzy i nas 2 gdy zostanie uruchomiony w może wywołać panikę możemy wykonać funkcję czyli de facto po prostu klip ale i tak mamy znowu kolejny ciekawy przykład z wc mamy sobie jakąś strukturę przypisujemy wartość wpisujemy wartość początek w momencie wejścia do funkcji wypisujemy sobie wartość podczas wyjścia tej funkcji mamy output 5 natomiast w trasie możemy tam wartość zmienić momencie kiedy wejdziemy do funkcji punkt kopiujemy sobie nasz
parametr zmieniamy jego wartość i kopiujemy z jamesa z tej sado do naszego procesu dzięki temu jesteśmy także w stanie manipulować naszą aplikacją jeżeli byśmy potrzebowali z jakiegoś powodu to zrobić możemy jest to uważane generalnie dla twórców z tej za bardzo niebezpieczną operację i trzeba tam wiatry się powiedzieć że jesteśmy pewni że chcemy załadować taką niebezpieczną prawdę ale jesteśmy w stanie także modyfikować stan naszego naszego systemu wam grę o której już wspominałem w stworzył bardzo niebezpieczny niebezpieczną prawdę gdzie w momencie kliknięcia jakiś przycisk on akurat to robił na stole i się na klawiaturze odgrywał muzykę i po prostu sobie stworzył w sobie dźwięki maszyny do pisania i kiedy sobie klikamy na klawiaturze w głośnikach miał dźwięki klikania na
maszynie więc można także i w taki sposób wykorzystać wykorzystać details a jak wspominałem w lesie możemy także instrument realizować kod mamy do tego kilka funkcji generalnie nazywa ten framework do instrumentu realizacji kodu nazywa się te mamy kilka funkcji gdzie definiujemy sobie problem którą który nas interesuje tworzymy podajemy provider moduł funkcje i nazwę i podajemy potem no ale zmienne typy zmiennych które nas interesują i tak tutaj mamy właśnie sobie stworzonym stworzony przez twoją prośbę proces exit możemy sobie ją także wyszukać oraz możemy sprawić że ona gdzieś tam jest wywoływana z powrotem z powrotem wyjścia proces oczywiście poza pilnowaniem samego partnera możemy także edytować poszczególne programy na przykład właśnie postgres ma wsparcie z vladimir i sam w swoim kodzie źródłowym
trzeba nie jest default niestety pozbyć nie jest dostarczany z tej samej trzeba go niestety przebudować ale jest taka możliwość poznać po zainstalowaniu i uruchomieniu doda nam dodatkowy provider pod adresem url i będziemy mogli obserwować takie akcje jak start transakcji koniec transakcji przerwanie transakcji czy wykonanie jakiegoś czołem także poza tym że mamy te wszystkie metody testowania bez żadnego dodatkowego dodatkowe instrument realizacji kodu twórcy oprogramowania mogą iść krok dalej i dodać takie wsparcie w swoim koncie jeżeli chodzi o dostępność oczywiście jak wspominałem mamy free admin na którym większość tych przykładów była wykonywana nie mogę niestety powiedzieć jak to wygląda innych systemach natomiast wiele systemów operacyjnych zdarza się że wspierani tutaj wstaw tym maku energię z solar screen na który był tworzony ale
nie w taki sa w i transformacji minut a także jest oddzielnym i z modułów w dostęp do ściągnięcia disney springs gdzie możemy także dodać więcej sa linuksa i niestety nie korzystałem z niego więc ciężko mi powiedzieć jaki jest wsparcie w tym module natomiast w zeszłym roku zostało na konferencji microsoftu ogłoszone żeby zostanie dodanych do windowsa także to wszystko co wam pokazałem dzisiaj prawdopodobnie w niedługim czasie będzie także dostępne w windowsie jak nie wiadomo o co chodzi to chodzi o jakąś świętą wojnę i niestety tak jest też w tym przypadku niestety detroit wypuszczony na licencji cdp.pl co linux foundation stwierdził że to nie jest intencja która jest zgodna z naszymi ideałami i niestety nie będzie licealista bezpośrednio w karmelu
linuksa stąd właśnie ten oddzielny moduł który możemy sobie kompilować i możemy dodać to do tej samej względu na to że to jest taki świetny wynik zaczął kombinować co oni by mogli zrobić żeby mieć taką fajną instrument aplikację w siebie i stworzyli mdfu ale zanim o tym czym w ogóle jest bpf pepper jest pepper pakiet filtr i oryginalnie było projektowanych do tego aby analizować dużą ilość pakietów sieciowy i decydować o tym czy chcemy dany pakietu odrzucić czy nie natomiast był zoptymalizowany do tego żeby analizować dużą dużą ilość pakietu deluxe został zaimplementowany jako wirtualna maszyna jest ona odseparowane od trenera i sandboksowa na dodatkowo natomiast w 2014 roku powstało enhanced bff lub ekspert ds wyróżnienie różnymi nazwami możecie się spotkać i do tego
biednego bpf zaczęto zrzucać wszystkie ciekawe zdarzenia do systemu operacyjnego także mamy właśnie jakieś zdarzenia z sekretów jakieś zdarzenia z kamerą jakieś zdarzenia z z józefa i to wszystko zaczyna rzucać dobrze efekt i na tej podstawie możemy teraz wpisać sobie programy dobija faktury analizują nam nie tylko te pakiety które przychodzą sieci ale także te zdarzenia wszystkie z systemem jak to działa działa to w ten sposób że mamy sobie uproszczony język c który którym piszemy sobie taki taką funkcję bpf nową które jest następnie kontynuowana w języku plank do bojkotu f1 by potem jest grywalność do terminala wykonywany jest na nim w gry fire który zweryfikuje złożonych złożonym modelu który weryfikuje czy na pewno ten bajt coat nie robi nic złego to czego byśmy nie
chcieli jest on następnie wrzucamy do pdf momencie jeżeli nasz prośba zostanie wykonana możemy o tym się dowiedzieć z b12 za pomocą output czyli takich zestawu funkcji które udostępniają informacje z depresją mmm jeżeli chodzi o beefy a to ma wspomóc wiele prób w różnych z różnym częściach systemu uprawy są wszystkie próby użytkownika które mogą zostać w uruchomione czyli właśnie to co dzieje się z procesem ale także mamy k props które są problemami które dzieją się w karmelu linuksa i możemy na przykład sobie obserwować za pomocą próby x4 fajny system x4 może to wyglądać trochę skomplikowanie najważniejsze do zapamiętania to jest to że jest jej profilu props areszt a zobaczyłem kolejnym takim dniu ale efekt jest to że jest bardzo dużo funtów
czyli zostało napisanych wiele frontów z którymi możemy komunikować się z tym bmw internetu najbardziej popularne są 2 btc i dpf w tej sprawie w której jest trochę odpowiednikiem komendy distress którą widzieliście gdzie idea była taka że w krótkie małe programy jedną linijką i będziemy mogli odpalić sobie z linii komend bc jest dużo bardzo dużo większym systemem się troszeczkę skupimy podczas tej prezentacji jest to framework stworzony w pythonie gdzie możemy właśnie te problemy bfh sobie atakować gdzie możemy właśnie tworzyć sobie jakiś skrypty programy w beef i tak wygląda przykładowy program w btc czyli mamy sobie jakiś nasz program który chcemy sobie zbudować w tym przypadku tworzymy sobie funkcję o i w momencie wywołania tej funkcji chcemy
żeby zostało wypisane hello world jak wspomniałem korzystamy z bc czyli jest tutaj kod python na przykład tworzymy sobie obiekt bpf przypisujemy do niego nasz kod źródłowy i wykonujemy atak emp czyli atak czujemy się do jakiś problem która jest w celu interesuje nas event klon czyli de facto atakujemy się dosyć hola klon i w momencie wykonania tego systemu dla chcemy żeby nasza funkcja kosztu została wykonana następnie wpisujemy wszystko co się dzieje w naszym programie i w momencie odpalenia tego programu dostajemy listę procesów które w danym w danej chwili się formują w tym przypadku jest to jest to masz jest tutaj dużo informacji na temat procesu na temat islamu i oczywiście nas ostateczny ostatecznym lecz możemy to trochę uprościć lub
skomplikować ten tutaj mamy nie atakujemy się do żadnej problem to jest ciekawe bo bpf pozwala na dwojako nomenklatury możemy podać bezpośrednio która funkcja się na którą mapować albo możemy sobie nazwać odpowiednio naszą funkcję która ma zostać wykonana w każdym razie tutaj w tej wspólnocie możemy podać także format dzięki temu nie będzie tych wszystkich dodatkowych informacji które które byśmy chcieli wracając do europy możemy ją po prostu nazwać mnie rep czyli chcemy powiedzieć w euforii że ta próba że ta funkcja będzie wykorzystywana tylko w ramach projektów celowych i mówimy że chcemy się zaatakować do przedszkola klon budując ten sposób nazwę funkcji gpo automatycznie doda nam to prośbę do piekła i powoli będzie wiedział w to miejsce się cię
zaatakować w tym momencie tutaj wykorzystujemy z prób to znaczy że interesuje nas kąt wyjścia tej funkcji w tym momencie gdy wychodzimy z funkcji mamy oczywiście dostępne kody wyjść a co w przypadku worka i jest po prostu 7 który został sklonowany więc wypisujemy sobie aktualnie pit oraz kod wyjścia naszego naszego klona i mamy tutaj przykład wyjścia czyli nasz proces 1698 sportowo się i jego nowym dzieckiem jest 1765 i w ten sposób możemy sobie tworzyć całą miejsce znów schorowanych formowanych procesów mamy dostępne wiele funkcji bpm te które już widzieliśmy oraz te których nie widzieliśmy na przykład prof pozwala nam odczytać jakiś fragment pamięci z naszej z naszego z naszego zespół ds optymalizowane pod stringi możemy pobrać plik jak
widzieliśmy na pewno dostarcza także wiele różnych typów zmiennych które możemy wykorzystać do agregacji danych o czym troszeczkę wam zaraz po pokażę teraz mamy dostępne funkcje aplikacji która pozwala nam coś wypisać co jest ciekawe czy nie ma więcej sensu bardzo mi się podoba akurat nie wiem to to że możemy nadpisać od wyjścia z danej funkcji czyli w momencie kiedy pracowaliśmy się do funkcji dosyć polakom piwie pozwala nam na wpisać kod wyjścia czyli na przykład możemy symulować taki fontann argument że system robi coś dziwnego na przykład formuje się ale zwróci nam minus 1 albo niby wykonałem synka ale tak naprawdę zwrócił nam błąd nie jest to ciekawa funkcja właśnie do takiej formie managementu jeżeli chcielibyście się się
pobawić w ramach swojej swojej aplikacji jak wspominałem bpf ma wiele różnych typów zmiennych w tym przypadku tworzymy sobie typ o nazwie br histogram który pozwala nam wypis z stworzyć piękny histogram naszej dla naszego programu w tym przypadku a to czujemy się do funkcji delete my czujemy w naszą funkcję kąt do funkcji rfid i w momencie wykonywania funkcji account zapisujemy sobie zapisujemy sobie kod wyjścia czyli de facto ile bajtów udało nam się odczytać korzystając z właśnie tego bts histogram oraz link lub dwa i jest możemy sobie stworzyć piękny histogram z czasem w którym nasze wszystkie procesy w systemie odczytywał jakiś dane i mamy tutaj statystykę ile tych danych były w jakim zakresie one były ale jeśli pamiętacie wspominałem o tym w
super sposobie 2 kor do redukcji redukcji ilości funkcji które analizujemy nie będę przechodził przez cały ten program będzie najważniejsza rzecz to jest taka że sobie tworzymy taką zmienną która nazywa się bfh aż która pozwala nam sterować różne różne nazwy różne typy de facto ale w tym przypadku nazw adresy funkcji które które nas interesują i w momencie kiedy ta funkcja jest wykonywana wykonywana zapisujemy sobie adres wrzucamy do do naszej funkcji informacje tutaj wykorzystujemy de facto pf pf output do informowania naszego skryptu że dana akcja miała miejsce do przeanalizowania w domu ciekawy fragment kodu trochę więcej musiałem się męczyć niż w przypadku jamesa ale ale działa bardzo dużą zaletą plc jest to że jest masę masę przykładów jeśli pamiętacie
ten obrazek gdzie pokazywałem wam jakie produkty są dostępne tutaj mamy listę de facto programów z bc które są zaimplementowane do obserwowania danego fragmentu w systemie operacyjnym czyli na przykład mamy program piłkarski który obserwuje na wszystkie symbole w systemie są także programy napisane specyficznie poddany język programowania czyli na przykład możemy sobie obserwować z funkcję wystawie możemy sobie w nas dzieje się w obserwować funkcję w php w pythonie czy możemy także obserwować stan systemu na przykład jeżeli chodzi o virtual memory czy cokolwiek innego jest bardzo dużo przykładów napisane w bc są one bardzo czytelne natomiast minusem bc jest dokumentacja tak jak widzieliście korzystałem z funkcji a także prompterek z maxima defacto 3 3 zmienne i wydawało mi
się że to jest wszystko co mogę zrobić zapytać po co było troszeczkę za mało dla mnie bo jak w przypadku tam jednak z jednego projektu zaatakować się do wszystkich funkcji nie było to niestety możliwe ale jak zajrzałem do kodu okazało się że tych adres do tych zmiennych jest troszeczkę więcej i oprócz zmiennej syn która jest udokumentowana jest także zmien nazwe która jest wyrażeniem regularnym dla symboli i pozwala nam de facto podać wyrażenie regularne do wszystkich symboli które chcemy do których chcemy się atakować czy taka rzecz oczywista rzecz jak możemy podać pit czyli konkretny proces który chcemy obserwować także bc jest dość przyjazne natomiast czasami trzeba zajrzeć niestety do przodu żeby żeby dowiedzieć się więcej wspominałem o frame grach w
grach ale generalnie polega na tym że tworzymy sobie obraz tego co dzieje się w naszym procesie systemie w postaci pięknego obrazka i mamy tutaj de facto wszystkie statki naszego programu czyli widzimy jakie funkcje były wywoływane oraz ile czasu w danej w danej funkcji nasz program spędził czyli w tym przypadku mamy tam sobie wywoła na przykład funkcja eksperymentu s i ona jest wykonywanie względnie i spędzamy najwięcej czasu czyli to daje nam jakiś pogląd które funkcje ewentualnie w systemie chcielibyśmy optymalizować albo które funkcje zawierające więcej najwięcej czasu żeby wygenerować taki fragów wykorzystujemy specjalną proszę proszę ale to jest praca która się odpalic o ile silników cpu i po prostu wypisujemy sobie z tak [Muzyka] użytkownika czyli ten zbiór dla izraela
w ten sposób tworzymy sobie plik który ma wszystkie stosy w naszym w trakcie wykonywania naszego programu i korzystamy z skryptów przygotowanych przez johna grega do do generowania tego filmu grafa de facto kończy się to na w komentarzach niestety w perlu ale jest to w jest to robione warto pamiętać o tym żeby jak w przypadku naszego pythona warto pamiętać o tym żeby dostosować wartość i tak w tej chwili jest w to jest ilość de facto funkcji które dzisiaj sobie zapamiętać w naszym w naszym stosie bo inaczej dostaniemy takich grach to jest dokładnie ten sam film gra w tylko niestety w dzisiejszym ilością nieskomplikowanym i wartościami z tak ale widzimy na przykład że mamy tutaj funkcję start która jest przesunięta w
dół z prawej strony a to wynika z tego że po prostu witryn z pewnym momencie przestał raportować funkcje które które były niżej z mojej strony to tyle mam nadzieję że troszeczkę was prowadziłem świat dynamicznego rysowania wszystko może jakieś pytania cześć i będzie mikrofon cześć halo halo czy spotkałeś się z jakimiś problemami które nie chcą być blokowane nie analizowałem takich programów szczerze powiedziawszy nie nie analizować takich programów niestety używam głównie w przypadku w przypadkach normalnych programów które chcą być blokowane natomiast ciekawy przypadek chętnie chętnie bym spojrzał czy faktycznie malware jest w stanie wykryć że podpinamy się z krisem pewne rzeczy typu właśnie na przykład profil 500 czyli ten ta próba która nas informuje co ile iq w
stanie naszego procesu jest całkowicie niezależna od procesu ona wpina się bezpośrednio w kerali w momencie i wskazówek relację z cracha preto pary to co ileś tam czasu wzbudza po prostu nasz styl i podaj mi swój sposób i nic innego nie interesuje więc pewne mechanizmy na właśnie dzięki temu dzięki temu obejść drugie pytanie co tam kiedyś oglądałem tego piwa i tam widzę że chyba prędzej czy później to będzie także na przykład ludzie przestaną korzystasz z windowsa bokeh f może to wszystko załatwić bo możesz na przykład zablokować takie takie dostęp do tego i nie dlatego ze sobą albo coś dokładnie tak jak tutaj był ten po poprzedni oryginalny rysunek o grupie tak naprawdę możemy napisać sobie dowolny moduł do klienta czy to do
the situation od instrumentu także fakt możemy wybrać sobie dowolne stan systemu analizować go i mówić systemowi nie nie tego co ci nie pozwalam bo bo coś tam jak najbardziej daje to bardzo duże możliwości żeby także ingerować w system właśnie ograniczać o czym wspomniałem to de facto podstawówce kompa jest właśnie db czy możesz się podzielić jakimiś doświadczeniami odnośnie wykorzystywania w interesach budowaniu dużych rozproszeniach aplikacji produkcyjnych tak taki przykład właśnie był z zakresem my ten wiszący insert mieliśmy właśnie w dużej produkcji nie wystawionej maszynie tam było tak że mieliśmy replikacji między dwoma narodami i 13 rzucał dużą ilość danych do drugiego na i bardzo wolno to to działało i nie widzieliśmy de facto de facto co się dzieje
wykorzystuję ten czas powiedzieliśmy sobie stos wywołań funkcji zobaczyliśmy że kilka funkcji nas interesuje zajrzeliśmy do kodu za to są one odpowiedzialne wiedzieliśmy co się dzieje więc bardzo prosty sposób byliśmy w stanie zareagować
czy możesz podać mi mikrofon nie nagrał się pytanie okej rozumiem a jak to wcześniej robić rzeczy po pierwsze aplikacje przygotowaliśmy się na ten sposób po prostu mieliśmy załadowany mieliśmy z boku modułu nawet nie był załadowany do terminala modlitwa jezusa załadowaliśmy sobie go w nasz pożre zbudowany ze wsparciem dla krisa więc był traktowany jako trochę czarna skrzynka po prostu patrzyliśmy co się dzieje na szczęście mieliśmy symbole drogowe symboli dodatkowych byłoby troszeczkę więcej trudniej zobaczylibyśmy po prostu adresy funkcji ale mieliśmy symbole drogowe z mogliśmy sobie przeanalizować po prostu aktualny stan co się tam co się w środku dzieje okej dziękuję bardzo
czy są jeszcze jakieś pytania to dzięki wielkie jeszcze raz
do ciebie już się nie mogę doczekać jak i i na ulicy i nie doszłoby do wiesz to zapisuje się drukuję proszę