Zupełnie out-of-order nagrałem dodatkową miniserię podcastów (a w zasadzie videocastów) o pointerach (wskaźnikach) w C/C++. Seria trwa łącznie ponad 4 godziny i jest rozbita na 8 odcinków, w których staram się pokazać/wytłumaczyć czym jest pointer (adres+metadane), jakie narzędzia na poziomie składni udostępnia język do operowania na pointerach, jak i po co castować pointery (jest i krótka dygresja o strict aliasing rule), po co ich używać, a także jak napisać programik który wylistuje regiony pamięci używane przez aplikację.
Lista odcinków:
Pointery #1 (30 min) - Odcinek pierwszy, w którym staram się wytłumaczyć czym jest adres i pamięć procesu.
Pointery #2 (54 min) - Odcinek drugi, w którym omawiam składnie pointerów.
Pointery #3 (21 min) - Odcinek trzeci o arytmetyce na pointerach (ważne) i castowaniu.
Pointery #4 (26 min) - Odcinek czwarty o castowaniu, void*, "stringach", etc.
Pointery #5 (28 min) - Odcinek piąty o dostępie do "surowego" zapisu danej zmiennej (float'a) w pamięci, oraz o tym dlaczego struktury są wyrównywane (i o operacjach atomowych i nie-atomowych na zmiennych).
Pointery #6 (33 min) - Odcinek szósty o alokacji i uwalnianiu pamięci w C i C++, a także o popularnych błędach z tym związanych, oraz o operowaniu na blokach pamięci (memset, memcpy, memove, memcmp).
Pointery #7 (22 min) - Odcinek siódmy, w którym wspominam o pointerach w strukturach danych, o tym jak ich używać (składniowo), oraz o tym, że nie powinno się zapisywać pointerów do pliku (zamiast tego zapisuje się indeksy, offsety, czy identyfikatory).
Pointery #8 (36 min) - Odcinek ostatni, w którym pokazuje jak napisać program listujący zaalokowane (i wolne) regiony pamięci w kontekscie naszego procesu.
UPDATE: Pointery #9 (31 min) - Odcinek uzupełniający, w którym pokazuje cztery metody alokacji dynamicznej tablic 2D, oraz o tym jak takowe tablice przekazać do funkcji (i jakie dane należy przekazać razem z nimi).
Dodatkowo, osoby zainteresowane zachęcam do obejrzenia odcinku ReverseCraft o tym co znajduje się w pamięci procesu:
ReverseCraft #3 - Pamięć, proces i PE (32 min) - Trzeci odcinek kursu, w którym omawiam wirtualną przestrzeń procesu, mechanizmy nią kierujące, oraz co się w niej znajduje. Dodatkowo wspominam o mechaniźmie wczytywania pliku PE (czy to modułu (biblioteki) DLL czy modułu EXE) do pamięci procesu. Materiały uzupełniające.
Oraz zachęcam do rzucenia okiem na przykładową implementacje struktury danych (aka wykorzystanie pointerów w praktyce):
Code #3 - linked list: dodawanie, przechodzenie (13 min) - Jednokierunkowa linked lista: co to, dodawanie elementów, przechodzenie listy.
Code #4 - linked list: usuwanie elementu (12 min) - Jednokierunkowa linked lista: usuwanie elementu.
Code #5 - linked list: API, iteratory (10 min) - Jednokierunkowa linked lista: tworzenie API do przechodzenia tablicy, część 1 z 3: iteratory.
Code #6 - linked list: API, zrzut do tablicy (14 min) - Jednokierunkowa linked lista: tworzenie API do przechodzenia tablicy, część 2 z 3: zrzut do tablicy (arraya), zarówno alokowanej dynamicznie, jak i dostarczonej przez usera.
Code #7 - linked list: API, callback (8 min) - Jednokierunkowa linked lista: tworzenie API do przechodzenia tablicy, część 3 z 3: callback do funkcji podanej przez usera.
Dodatkowe, mniej związane, materiały:
FAQ #3 - Asmloader internals (16 min) - Czyli o tym jak działa asmloader od wewnątrz.
Zachęcam również do przejrzenia źródeł HiperDrop.
GG.

Sections
Links / Blogs
- Security/Hacking:
- Reverse Eng./Low-Level:
- Programming/Code:
Posts
- Wstęp do programowania i Pythona - zapisy nadal otwarte,
- Wyszedł Paged Out! #5,
- Oh My H^ck 2024 i sporo Dragon Sector,
- Jak rozkodować nieznany protokół sieciowy i ściągnąć SECRET.PDF,
- Wstęp do inżynierii wstecznej,
- Darmowe mini-szkolenie: Pliki okiem hackera,
- Wyszedł Paged Out! #4,
- Nie będzie mnie na CONFidence'24 :(,
- Egzamin dla Maszyny: LLMy vs Programowanie – PDF artykułu z Programisty 05/2023,
- HACK-A-SAT 4: Wywiad z Poland Can Into Space,
- → see all posts on main page
// copyright © Gynvael Coldwind
// design & art by Xa
// logo font (birdman regular) by utopiafonts / Dale Harris
/* autor będący jednocześnie właścicielem bloga zezwala na próby (również skuteczne) przełamania zabezpieczeń bloga (na poziomie HTTP, server nie mój, zostawmy go w spokoju ;>) bez ponoszenia konsekwencji jakiegokolwiek rodzaju (nie dotyczy to ataków DoS) - czyli w skrócie, uznaje że wszystkie informacje w katalogu bloga są przeznaczone dla osób którym uda się je przeczytać, i wszystkie osoby uprawniam do zmiany ich treści/zawartości jeżeli uda się im ją zmienić) ... dodam że w pewnych miejscach umieściłem zabawne fotki z kotkami, jest ich obecnie 7, i zachęcam do ich poszukania ;> dajcie mi znać jak wszystkie znajdziecie to wrzuce jakieś gratulacje or sth ;> */
Vulns found in blog:
* XSS (pers, user-inter) by ged_
* XSS (non-pers) by Anno & Tracerout
* XSS (pers) by Anno & Tracerout
* Blind SQLI by Sławomir Błażek
* XSS (pers) by Sławomir Błażek
// design & art by Xa
// logo font (birdman regular) by utopiafonts / Dale Harris
/* autor będący jednocześnie właścicielem bloga zezwala na próby (również skuteczne) przełamania zabezpieczeń bloga (na poziomie HTTP, server nie mój, zostawmy go w spokoju ;>) bez ponoszenia konsekwencji jakiegokolwiek rodzaju (nie dotyczy to ataków DoS) - czyli w skrócie, uznaje że wszystkie informacje w katalogu bloga są przeznaczone dla osób którym uda się je przeczytać, i wszystkie osoby uprawniam do zmiany ich treści/zawartości jeżeli uda się im ją zmienić) ... dodam że w pewnych miejscach umieściłem zabawne fotki z kotkami, jest ich obecnie 7, i zachęcam do ich poszukania ;> dajcie mi znać jak wszystkie znajdziecie to wrzuce jakieś gratulacje or sth ;> */
Vulns found in blog:
* XSS (pers, user-inter) by ged_
* XSS (non-pers) by Anno & Tracerout
* XSS (pers) by Anno & Tracerout
* Blind SQLI by Sławomir Błażek
* XSS (pers) by Sławomir Błażek
Comments:
Naprawdę, dobra robota, jak zwykle ;) .
Wracają do tematu, rewelacyjne wykłady.
Mi się wydaje, że Gynvael napisał program kopiujący go do kompa.
W ten sposób on ma czas jeść, spać, czy przebywać z dziewczyną¹ i jednocześnie robić to wszytko co robi.
¹Która dziewczyna pozwala na siedzenie przed kompem całymi dniami?
Myślę, że to ona podsunęła pomysł kopii.
A może to po prostu stara dobra bilokacja?
Widac to kwestia punktu widzenia. Mi osobiscie sie wydaje, ze sporo czasu marnuje i moglbym jednak wiecej rzeczy robic. Hehe, niemniej jednak ciesze sie, ze z Waszego punktu widzenia nie wyglada to tak zle jak z mojego :D
Btw, nie dziewczyna, zona :)
@olo16
:D
Fajnie że trzymasz tempo podcastów i postów Gyn, jest co czytać ;) Szkoda tylko że ostatnio mało się pojawia twoich "gazetkowych" publikacji. Ad seria podcastów : heh, what can I say, keep the fire burnig (jak to kiedyś "znajomy" mi powiedział ;D ) Gw !
PS : To others : Gyn ma swojego klona, ale cii, żeby się nie dowiedział że o tym wspomniałem (Gynvael nie widzi tej wiadomości ;D )
[code]memcpy(d, (void*)s, 4);[/code]
należy zastąpić następującą wersją
[code]memcpy(d, &s, 4);[code]
lub na siłę
[code]memcpy(d, (void*)&s, 4);[/code]
w przypadku gdy s nie jest wskaźnikiem a zwykłym obiektem jakiegoś typu ;-)
Add a comment: