Drathir | mateusz: dzieki... | 00:04 |
---|---|---|
Drathir | wlasnie sie kompiluje... | 00:04 |
=== scx_ is now known as scx | ||
AndroUser | Ls | 11:51 |
Quintasan | \o | 11:52 |
buharin | hej jest tu ktos | 12:11 |
buharin | potrzebuje tu kogos | 12:11 |
garnus | co tam | 12:23 |
buharin | garnus, bo mi smutno : ( | 12:31 |
garnus | poglaskac? | 12:41 |
=== spi_ is now known as spi | ||
=== scx_ is now known as scx | ||
grek | czesc | 19:50 |
grek | uzywa ktos google drive lens w unity ? | 19:50 |
grek | da sie tego uzywac? nie moge zautoryzowac konta google- w ustawienia systemowe - konta sieciowe | 19:50 |
grek | daje google wpisuje dane i samo wraca na liste kont zanim zdąże autoryzowac | 19:51 |
qermit | siema wszystcy? | 20:15 |
bjfs | ..echo.. | 20:15 |
TheNumb | @echo off | 20:23 |
gjm | tango down | 20:24 |
buharin | ktos wie gdzie mozna przeczytac informacje nt. tego jak dziala | 22:03 |
buharin | uid euid suid seuid | 22:04 |
jacekowski | na google | 22:19 |
jacekowski | ale to proste, suid i setuid to to samo | 22:20 |
buharin | jacekowski, wlasnie cos mi slabo idzie to googlowanie | 22:20 |
jacekowski | uid to uid obecnego usera | 22:21 |
buharin | to ja wiem | 22:21 |
jacekowski | effective uid to uid usera z ktorego teraz aplikacja ma uprawnienia | 22:21 |
buharin | ale chodzi mi o to jak to dziala | 22:21 |
buharin | w grupie | 22:21 |
Dreadlish | suid ustawia euid | 22:21 |
Dreadlish | uid zostaje niezmieniony | 22:21 |
buharin | z poziomu aplikacji mozemy sterowac suidem? | 22:22 |
jacekowski | nie | 22:22 |
Dreadlish | nope | 22:22 |
Dreadlish | można sobie jedynie zdropować uprawnienia | 22:22 |
buharin | ok ale zalozmy sytuacje | 22:23 |
buharin | moj uid to 1000 | 22:23 |
buharin | i chce uruchomic program ktory bedzie dzialal na moich plikach ale trakcie jak cos sie przelaczy sam na admina | 22:24 |
buharin | to jak sie bedzie zmienial euid i suid | 22:24 |
buharin | admin to 0 | 22:24 |
buharin | wiec rozumiem tak ze uid oznacza uzytkownika ktory uruchomil plik | 22:25 |
jacekowski | sam sie nie moze przelaczyc | 22:26 |
jacekowski | jak go odpalisz jako ograniczony uzytkownik to juz mu tak zostaje | 22:26 |
jacekowski | jedynie co moze zrobic to wlaczyc sobie seccomp i ograniczyc jeszcze bardziej | 22:26 |
buharin | a metody setuid seteuid | 22:26 |
jacekowski | to z 0 w dol | 22:27 |
buharin | http://www.dwheeler.com/secure-programs/Secure-Programs-HOWTO/processes.html | 22:27 |
buharin | a jest ponizej 0? | 22:27 |
buharin | :D | 22:27 |
gjm | over9000 | 22:28 |
jacekowski | tak, jak odejmiesz to int sie przekreci i wroci do 65k | 22:28 |
jacekowski | ale poza tym, setuid jest po to zeby jakis proces typu apache sie odpalil z roota, przybindowal do portu ponizej 1024 i zrobil wszystko co musi zrobic z roota, i wtedy sobie robi setuid na jakies ilestam (www-data badz podobne) | 22:30 |
jacekowski | i traci uprawnienia do ktorych juz wrocic nie moze | 22:30 |
buharin | a jest cos takiego jak ruid? | 22:31 |
jacekowski | tak | 22:31 |
jacekowski | to jest wlasnie twoj uid | 22:32 |
buharin | ok | 22:32 |
jacekowski | windows ma lepszy system kontroli uprawnien | 22:32 |
buharin | wiec uruchamiamy process ktory ma | 22:32 |
buharin | r 1000 e nic s nic | 22:33 |
jacekowski | nie da sie tak | 22:33 |
buharin | to czy plik moze byc otwarty jest sprawdzane na podstawie euid | 22:33 |
jacekowski | jak r jest 1000 to e tez jest 1000 | 22:33 |
buharin | jacekowski, nam cos mowili ze jakos da sie tak zrobic ze proces sam sie przelacza pomiedzy uidami a potem jak sie cos zmienic chyba suidie to juz nie moze i nie moge teraz tego zalapac | 22:34 |
jacekowski | moze sie przelaczyc z 0 na nizsze uprawnienia | 22:36 |
jacekowski | i tye | 22:36 |
buharin | bo jak dobrze rozumiem to czy proces moze otworzyc jakis plik jest sprawdzane na podstawie uprawnien | 22:36 |
buharin | euid | 22:36 |
jacekowski | jedyny wyjatek od tego to jesli jako user 5 odpalasz program ktory ma ustawionego chmoda +s na usera 6, i wtedy moze sie program przelaczac pomiedzy 5 i 6 jak chce | 22:37 |
jacekowski | w przypadku gdy program odpalony zostaje z roota (0) to zmiana uprawnien jest jednorazowa i ostateczne | 22:38 |
buharin | sticky bit | 22:38 |
buharin | mhmm | 22:39 |
jacekowski | nie sticky | 22:39 |
jacekowski | setuid bit | 22:39 |
buharin | mam r 0 e 0 s 0 zmiam na r 0 e 1000 s 0 | 22:39 |
buharin | wykonuje cos na pliku i spowrotem wracam w tryb admina | 22:40 |
buharin | :P | 22:40 |
jacekowski | nie wracasz | 22:40 |
jacekowski | zmiana uprawnien z roota na nizsze jest jednorazowa i ostateczna | 22:40 |
buharin | jacekowski, ale wytlumacz mi po co jest suid | 22:40 |
buharin | bo wedlug mnie on zachowuje stary uid | 22:41 |
buharin | by do niego wrocic | 22:41 |
jacekowski | tylko w jednym przypadku | 22:41 |
buharin | jacekowski, czyli suid dziala tylko w 1 przypadku | 22:41 |
buharin | ktory opisales | 22:41 |
jacekowski | gdy plik jest ustawiony jako setuid jako inny user niz ty jestes ale tylko jesli oboje jestescie userami o ograniczonych uprawnieniach | 22:41 |
buharin | czyli uruchamimay proces z r 1000 e 1000 s 1200 | 22:42 |
buharin | robimy r 1000 e 1200 s 1200 | 22:42 |
buharin | i wracamy do poczatku | 22:42 |
jacekowski | nie do konca | 22:43 |
jacekowski | zeby takie cos zrobic to plik musi miec najpierw ustawionego ownera na 1200:xxx i ustawiony setuid bit | 22:43 |
jacekowski | i wtedy jak go odpalisz to odpalony zostanie z r 1000 e 1200 s 1000 | 22:43 |
jacekowski | i bedziesz mogl sie przelaczyc na r 1000 e 1000 s 1200 | 22:44 |
jacekowski | i spowrotem | 22:44 |
buharin | a jesli z programu ustawie suid pozniej na 1000 | 22:46 |
buharin | to juz sie nie przelaczy? | 22:46 |
jacekowski | tylko 0 jest specjalne | 22:48 |
jacekowski | reszta jest ograniczona | 22:48 |
buharin | jacekowski, na 0 moge sie w kazdej chwili przelaczyc? | 22:48 |
buharin | tylko musze podac haslo | 22:48 |
jacekowski | nie | 22:49 |
jacekowski | na 0 mozna sie przelaczyc tylko jesli odpalasz program ktorego wlascicielem jest 0 i ma ustawiony ten program setuid | 22:49 |
jacekowski | i to sie samo odpali wtedy jako 0 | 22:49 |
jacekowski | bez twojej ingerencji | 22:50 |
jacekowski | nie ma mozliwosci podania hasla w ogole | 22:50 |
buharin | jacekowski, czyli jak robie aktualizacje to wyszukiwanie jest na prawach uzytkownikach a potem ubuntu prosi haslo to odpala osobny proces z haslem | 22:50 |
jacekowski | tak | 22:50 |
buharin | jacekowski, setguid dziala tak samo ale dla grupy | 22:51 |
jacekowski | to robi wtedy gsudo (chyba gsudo, albo jakis inny graficzny wariant) | 22:51 |
jacekowski | -rwsr-xr-x 2 root root 71288 Jun 1 2012 /usr/bin/sudo | 22:51 |
jacekowski | i jak widac tutaj masz +s | 22:51 |
jacekowski | czyli sudo zostanie odpalone jako root | 22:52 |
jacekowski | i teraz zadaniem sudo jest zapytac sie ciebie o haslo i jesli podasz zle, zakonczyc sie | 22:52 |
qermit | o/ | 22:52 |
jacekowski | ale teoretycznie bug w sudo pozwalalby na latwa eskalacje uprawnien | 22:52 |
buharin | jacekowski, czytalem ze go usuneli juz | 22:53 |
jacekowski | mowie ze teoretycznie | 22:53 |
jacekowski | zawsze moze byc wiecej | 22:53 |
qermit | jacekowski: bug w pam | 22:53 |
jacekowski | w sudo tez | 22:53 |
jacekowski | pam moze powiedziec ze haslo nie ok a sudo moze zignorowac | 22:53 |
qermit | no też, ale sudo samo w sobie jest proste | 22:53 |
jacekowski | to wszystko jest proste | 22:54 |
buharin | czyli kazdy proces ma ruid rguid euid eguid suid sguid | 22:54 |
qermit | chgwuid | 22:54 |
jacekowski | tylko ze masz milion prostych rzeczy warstwa na warstwie | 22:54 |
jacekowski | i nagle nie jest takie proste | 22:54 |
jacekowski | a pod linuxem lubia zmieniac API od ktorego inne aplikacje zaleza | 22:54 |
jacekowski | i psuc rozne rzeczy zwiazane z losowoscia i bezpieczenstwem | 22:54 |
qermit | dlatego mamy testerów w gentoo :E | 22:55 |
buharin | jacekowski, a patrz na to jak to mozliwe | 22:55 |
buharin | ze passwd | 22:55 |
buharin | moge zmienic haslo nie | 22:55 |
buharin | ale pliki /etcpasswd | 22:55 |
buharin | i /etcshadow | 22:55 |
buharin | -rw-r--r-- 1 root root 2042 maj 4 14:14 /etc/passwd | 22:55 |
jacekowski | -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd | 22:55 |
buharin | -rw-r----- 1 root shadow 1228 maj 4 14:14 /etc/shadow | 22:55 |
jacekowski | bo passwd ma suid bit ustawiony | 22:55 |
buharin | a ja nie mam | 22:55 |
buharin | nie mam sticky bitu | 22:55 |
buharin | :O! | 22:55 |
jacekowski | masz | 22:55 |
jacekowski | to nie sticky bit | 22:55 |
jacekowski | -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd | 22:56 |
jacekowski | ten plik | 22:56 |
jacekowski | rwS | 22:56 |
buharin | a no | 22:56 |
buharin | nie ten plik sprawdzilem :D | 22:56 |
buharin | a po co jest /etc/passwd? | 22:56 |
jacekowski | to jest plik tekstowy | 22:56 |
jacekowski | z zapisanymi uzytkownikami | 22:57 |
jacekowski | kiedys dawno temu byly tam rowniez hasla | 22:57 |
buharin | ale passwd na nim nie dziala bo nie moze | 22:57 |
jacekowski | dziala | 22:57 |
jacekowski | kurwa | 22:57 |
jacekowski | passwd ma ustawiony suid | 22:57 |
buharin | ten plik nie ma suida | 22:57 |
jacekowski | MA | 22:57 |
qermit | jacekowski: ja pacze | 22:57 |
jacekowski | -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd | 22:57 |
jacekowski | -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd | 22:57 |
jacekowski | -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd | 22:57 |
jacekowski | -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd | 22:57 |
jacekowski | -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd | 22:57 |
jacekowski | -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd | 22:57 |
jacekowski | -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd | 22:57 |
jacekowski | -rwsr-xr-x 1 root root 42824 Sep 13 2012 /usr/bin/passwd | 22:57 |
buharin | qermit, daj mi go spowrotem :D | 22:57 |
jacekowski | qermit: musialem powtorzyc bo nie rozumial | 22:58 |
buharin | rw-r--r-- 1 root root 2042 maj 4 14:14 /etc/passwd | 22:58 |
buharin | chodzilo mi o ten plik | 22:58 |
jacekowski | NIE TEN PLIK | 22:58 |
qermit | a ja myślałem że myszka ci sie zacięła | 22:58 |
jacekowski | TO JEST PLIK TEKSTOWY | 22:58 |
qermit | buharin: gupi jesteś | 22:58 |
buharin | jacekn_, ja wiem | 22:58 |
buharin | pytam czemu ten drugi nie ma | 22:58 |
jacekowski | bo ten ma to w dupie | 22:58 |
buharin | bo napisales ze kiedys bylo tam | 22:58 |
qermit | buharin: bo nie musi | 22:58 |
jacekowski | suid jest tylko dla programow | 22:58 |
buharin | qermit, ale jest aktualizowany na biezaco chyba | 22:58 |
jacekowski | PROGRAMOW | 22:58 |
buharin | dla plikow wykonywalnych | 22:58 |
qermit | kto jest aktualizowany? | 22:59 |
jacekowski | czyli odplasz /usr/bin/passwd ktory ma wlasciciela 0 i suid bit ustawiony | 22:59 |
buharin | /etc/passwd | 22:59 |
jacekowski | to zostanie odpalony jako root | 22:59 |
buharin | a kumam | 22:59 |
qermit | buharin: no jest ale modyfikowany jest przez program ktory ma prawa roota | 22:59 |
jacekowski | i jako root bedzie mial pelny dostep do /etc/passwd i /etc/shadow | 22:59 |
qermit | dobra ja ide spać | 22:59 |
buharin | ale ze mnie debil | 22:59 |
jacekowski | buharin: wiem | 22:59 |
qermit | buharin: mówiłem | 22:59 |
buharin | jacekowski, dobra ide dalej czytac :D dzieki poki co | 23:00 |
jacekowski | ale system uprawnien na win jest o wiele lepszy | 23:00 |
jacekowski | zwlaszcza odkad jeszcze UAC dodali | 23:00 |
buharin | pobralem taka ksiazke Linux Programming Interface | 23:00 |
buharin | ale tam cos slabo to napisane jest | 23:00 |
buharin | jacekowski, ale linux jest bezpieczniejszy | 23:01 |
jacekowski | nie jest wlasnie | 23:02 |
buharin | : ( | 23:02 |
jacekowski | czasy kiedy linux byl bezpieczniejszy minely z windowsem 98 | 23:02 |
buharin | jacekowski, to moze opisz co bys chcial zmienic i Linus to zmieni | 23:03 |
jacekowski | xp gdyby nie domyslna polityka bezpieczenstwa (czyli uzytkownik domyslnie jest administratorem) bylby bezpiecznym systemem | 23:03 |
jacekowski | w viscie juz to zmienili | 23:03 |
jacekowski | i nawet administrator nie ma pelnych uprawnien | 23:03 |
jacekowski | musi przejsc przez UAC | 23:03 |
jacekowski | i dopiero wtedy moze miec dostep do najwazniejszych czesci systemu | 23:04 |
jacekowski | ale dopoki UACa nie przejdzie ma uprawnienia takie same jak normalny ograniczony user | 23:04 |
jacekowski | i masz mozliwosci wlamania sie i infekcji calego systemu takie same (chyba ze user idiota kliknie na "Tak" guzik) | 23:04 |
cetra | jacekowski: jak tam win 8 | 23:05 |
jacekowski | a dziala | 23:07 |
jacekowski | dosyc ladnie i szybko | 23:07 |
cetra | lepiej czy gorzej niż 7 | 23:07 |
jacekowski | lepiej | 23:08 |
cetra | tak słyszałem, nie miałem jeszcze okazji sprawdzić | 23:09 |
buharin | jacekowski, mi tez sie podoba win8 | 23:09 |
buharin | jacekowski, ale przyznam ze jestem fanem linux'a i sie przyzwyczailem | 23:10 |
cetra | a ja kupiłem maca i nei chce mi się nawet w bootcamp bawić | 23:10 |
buharin | jacekowski, mam napisane ze jak jest sticky bit to tylko uzytkownik moze kasowac modyfikowac atrybuty pliku | 23:12 |
buharin | albo root | 23:13 |
jacekowski | ja pierdole | 23:23 |
jacekowski | NIE STICKY BIT | 23:23 |
jacekowski | STICKY BIT TO COS INNEGO | 23:23 |
buharin | jacekowski, tak ale teraz czytam o sticky bicie | 23:23 |
jacekowski | set user or group ID on execution (s), restricted deletion flag or sticky bit (t). | 23:23 |
buharin | -rw------T | 23:23 |
jacekowski | s to setuid, t to sticky bit | 23:23 |
buharin | nom | 23:24 |
jacekowski | nie maja nic ze soba wspolnego | 23:24 |
cetra | http://en.wikipedia.org/wiki/Sticky_bit#Usage | 23:24 |
buharin | jest napisane tak ze /tmp ma sticky | 23:24 |
buharin | cetra, zamiast pomoc to wyzywacie wiem bo to czytalem | 23:24 |
cetra | buharin: jeszcze nikogo dzisiaj nie zwyzywałem ;-) | 23:25 |
cetra | buharin: a jacekowskim się nie przejmuj, on już tak ma | 23:25 |
buharin | cetra, tam jest napisane ze normalnie kazdy user z prawami moze manipulowac na pliku | 23:26 |
buharin | ale ze sticky bit tylko ten konkretny | 23:26 |
buharin | wlasciciel | 23:26 |
cetra | zgadza się | 23:26 |
buharin | cetra, i sie pytam po co to? | 23:26 |
jacekowski | nie moze | 23:26 |
cetra | tak jest napisane | 23:26 |
cetra | buharin: bo jeśli ustawisz uprawnienia 777 | 23:26 |
buharin | jacekowski, tak napisali na wiki | 23:26 |
jacekowski | moze zmienic i usunac | 23:26 |
jacekowski | zmienic nazwe* | 23:27 |
buharin | atrybuty tez | 23:27 |
jacekowski | nie moze | 23:27 |
cetra | buharin: to każdy może usunąć plik lub zmienić jego nazwę, ze sticky tylko właściciel lub root | 23:27 |
cetra | buharin: natomiast zawartość pluku nadal miożna zmieniać z innego usera | 23:27 |
jacekowski | buharin: uprawnien do pliku dalej nie ma | 23:27 |
jacekowski | buharin: niezaleznie od sticky czy nie | 23:27 |
jacekowski | buharin: za to zmiana nazwy pliku badz usuniecie nie jest operacja na pliku | 23:28 |
jacekowski | buharin: tylko na folderze w ktorym ten plik jest | 23:28 |
jacekowski | buharin: wiec jesli inny uzytkownik ma uprawnienia do folderu, moze z niego usunac dowolny plik badz zmienic mu nazwe | 23:28 |
jacekowski | buharin: jesli teraz NA FOLDERZE ustawisz sticky bit, to uprawnienia beda sprawdzane na pliku rowniez | 23:29 |
cetra | problem tylko taki | 23:29 |
cetra | że w linksie nie ma folderów ;- | 23:29 |
cetra | D | 23:29 |
jacekowski | sa | 23:29 |
buharin | jacekowski, sa foldery lol | 23:30 |
cetra | nie. są katalogi :P | 23:30 |
buharin | jacekowski, a no to co napisales to ma sens | 23:30 |
jacekowski | wedlug tezarusa folder i katalog to synonimy | 23:30 |
cetra | folder to nowotwór windowsowy | 23:30 |
jacekowski | akurat nie | 23:31 |
jacekowski | folder przyszedl z systemu unixowego | 23:31 |
cetra | ale to windows wypromował takie nazewnictwo | 23:31 |
cetra | mniejsza z tym | 23:31 |
jacekowski | spod znaku japka | 23:31 |
jacekowski | a wczesniej byl uzywany na irixie | 23:31 |
jacekowski | czyli pelnoprawnym unixie | 23:31 |
buharin | jacekowski, wlasciwie folder i plik to sa wezly do pamieci | 23:31 |
buharin | nody | 23:31 |
jacekowski | inodes | 23:32 |
cetra | przypomina mi to o książce która leży u mnie na kolumnie i nadal jej nie przeczytałem | 23:32 |
buharin | i do tego folderowego inoda sa podpiete inody plikow | 23:32 |
jacekowski | tak jakby | 23:32 |
jacekowski | tutaj masz rozne warstwy | 23:32 |
jacekowski | masz system plikow z jakas struktura na dysku | 23:32 |
jacekowski | dowolna | 23:33 |
buharin | jacekowski, mam tez napisane ze jesli w plikach wykonywalnych ustawi sie sticky bit to po zakonczeniu programu nie jest zwalniana pamiec jak to sie wykorzystuje? | 23:33 |
jacekowski | zadaniem systemu plikow (jako oprogramowania) jest przedstawienie tych struktur na dysku kernelowi w postaci inode i dentry | 23:33 |
cetra | buharin: co czytasz? | 23:33 |
buharin | cetra, wyklady i wikipedie | 23:33 |
buharin | :D | 23:33 |
jacekowski | buharin: urban legend | 23:33 |
jacekowski | buharin: kiedys tak bylo na niektorych unixach | 23:34 |
cetra | mam tutaj książkę Linu: programowanie systemowe | 23:34 |
cetra | Linux* | 23:34 |
jacekowski | buharin: pod linuxem sticky bit na plikach jest ignorowany | 23:34 |
cetra | wlaśnie ta której nie dokończyłem | 23:34 |
jacekowski | buharin: a pamiec jest zawsze zwalniana | 23:34 |
jacekowski | buharin: na niektorych unixach sticky bit kontrolowal cachowanie pliku | 23:35 |
buharin | cetra, fajna ksiazka jestK&R The C programming language | 23:35 |
jacekowski | buharin: w sensie sticky bit wymuszal ze plik zawsze siedzial w pamieci | 23:35 |
cetra | buharin: to klasyka | 23:35 |
buharin | jacekowski, o jezusie | 23:35 |
cetra | buharin: i uczy ona jedynie ogólnych podstaw C | 23:35 |
cetra | no może coś więcej niż jedynie podstyawy | 23:35 |
cetra | dość rosrzeżony opic C | 23:36 |
cetra | opis | 23:36 |
jacekowski | buharin: ale pod linuxem i windowsem i nowszymi unixami w momencie gdy odpalasz program to on nawet nie jest caly czytany z dysku | 23:36 |
jacekowski | buharin: tylko minimum wymagane przez linker | 23:36 |
cetra | ale nie nauczy profilu takiego jak programowanie w linuskie | 23:36 |
jacekowski | buharin: i uzywajac mmap plik jest MAPOWANY do przestrzeni adresowej | 23:36 |
buharin | jacekowski, ok dzieki :D ale to co napisales na poczatku mi wystarcza | 23:37 |
jacekowski | buharin: i odczytywany w kawalkach dopiero jak sa potrzebne (i wywalane z pamieci jak jest malo wolnej) | 23:37 |
buharin | juz przestalem kumac :P | 23:37 |
jacekowski | chyba w ogole nie zaczales | 23:38 |
cetra | 7lelz | 23:38 |
buharin | jacekowski, ogolnie z tego co czytalem to zawsze myslalem ze program jest wczytywany w calosci do pamieci | 23:38 |
jacekowski | nie jest wczytywany w ogole | 23:39 |
jacekowski | absolutne minimum | 23:39 |
jacekowski | reszta jest doczytywana jak jest potrzebna | 23:39 |
jacekowski | wyobraz sobie odczytywanie 600MB programow | 23:40 |
jacekowski | i ile pamieci by to marnowalo | 23:40 |
jacekowski | i ile by to trwalo | 23:40 |
buharin | jacekowski, czyli jak cos odpalam to nie jest tak ze segment kodu zapisuje sie kodem asm i stos i sterta tez | 23:40 |
buharin | zmiennymi | 23:40 |
buharin | jacekowski, ale pamiec wirtualna chyba dynamicznie sie poszerzac nie moze | 23:41 |
jacekowski | jak cos odpalasz do kernel odczytuje ELF/PE header | 23:41 |
jacekowski | na podstawie tego linker potem sklada program | 23:42 |
jacekowski | znaczy sie odczytuje ze bajty od 100 do 1000000 to sekcja .text z podstawowym adresem 0x40000000 i entry pointem na 0x40000000 | 23:43 |
jacekowski | potencjalnie moze byc wiecej sekcji ale operacja jest prawie taka sama | 23:43 |
jacekowski | potem jeszcze linker czyta sekcje importow i laduje rozne .dll czy tam .so | 23:43 |
jacekowski | ladowanie polega na dokladnie tym samym | 23:43 |
jacekowski | teraz linker wie co trzeba gdzie | 23:44 |
cetra | jacekowski wykłada na #ubuntu-pl 4 fun ™ | 23:44 |
jacekowski | i MAPUJE te pliki do przestrzeni adresowej | 23:44 |
jacekowski | mapowanie czegos do pamieci polega na tym ze | 23:44 |
buharin | jacekowski, szkoda ze nie uczysz u nas :P | 23:44 |
jacekowski | idzie linker i mowi do kernela | 23:45 |
jacekowski | otworz /bin/bash | 23:45 |
jacekowski | teraz ten /bin/bash od bajtu 100 do bajtu 100000 ma byc dostepny pod adresem 0x40000000 | 23:45 |
jacekowski | kernel stwierdza ze OK i idzie dalej | 23:46 |
jacekowski | teraz linker robi to samo dla kazdego innego potrzebnego .so czy tam .dll | 23:46 |
jacekowski | i jak skonczy to robi skok do entry pointa odczytanego kilka krokow wczesniej | 23:46 |
cetra | chyba j*bnę kawkę :F | 23:46 |
jacekowski | i w tym momencie | 23:47 |
jacekowski | EIP sie nagle robi 0x40000000 | 23:47 |
buharin | jacekowski, a gdzie to mozna przeczytac? | 23:47 |
jacekowski | zrodla kernela, x86 developers manual intela, windows internals | 23:48 |
jacekowski | i kilka innych ksiazek ktore maja ilosci stron liczone w tysiacach | 23:48 |
jacekowski | wracajac do EIP 0x4000000000 | 23:48 |
jacekowski | co sie teraz dzieje | 23:48 |
jacekowski | jako ze nic wczesniej tego nie probowalo wykonac/odczytac to mozna zalozyc ze w page table (MMU) nie ma wpisu dla tego adresu (bo kernel nie ustawil) | 23:49 |
jacekowski | to procesor robi page fault i wyskakuje z r3 do r0 | 23:49 |
buharin | MMU to jednostka adresujaca | 23:49 |
jacekowski | teraz w r0 siedzi kernel i widzi | 23:50 |
jacekowski | cos sie chcialo dostac do 0x40000000 | 23:50 |
buharin | i wtedy zaczyna kopiowac kolejna potrzebna zawartosc | 23:51 |
jacekowski | patrzy teraz kernel w swoje struktury i widzi ze pod tym adresem powinien byc ten /bin/bash (badz nie, jesli adres jakis zly albo inne dziwne rzeczy sie podzialy) | 23:51 |
jacekowski | no to kernel teraz dopiero zaczyna odczytywac /bin/bash w ilosci kontrolowanej przez rozne inne ustawienia (domyslnie chyba 128kB kawalki) | 23:51 |
jacekowski | odczytal te 128kB i wrzucil do pamieci fizycznej | 23:52 |
jacekowski | pod jakims tam 0x1234567 | 23:52 |
jacekowski | jednoczesnie teraz ustawia wpis w page table ze fizyczny adres 0x1234567 ma byc mapowany do wirtualnego 0x40000000 na dlugosci 128kB | 23:52 |
jacekowski | jak rowniez ustawia uprawnienia do odczytu i wykonania (bez uprawnien do zapisu) (jesli procesor ma NX) | 23:53 |
jacekowski | i teraz kernel kaze procesorowi wrocic do r3 | 23:53 |
jacekowski | teraz procesor/MMU znowu sprawdza wpis w page table i widzi ze 0x4000000 gdzie jest zamapowane | 23:54 |
jacekowski | i wykonuje kod | 23:54 |
jacekowski | az do momentu kiedy zamapowane 128kB sie skonczy albo cos innego sie wydarzy | 23:54 |
jacekowski | i laduje kawalek po kawalku | 23:54 |
jacekowski | ostatecznie moze sie skonczyc tym ze zaladuje caly iles MB program do pamieci | 23:55 |
jacekowski | ale rownie dobrze moze sie okazac ze nie | 23:55 |
jacekowski | ide spac | 23:55 |
cetra | jeszcze w anglii siedzisz? | 23:55 |
cetra | widać jestem niegodzien aby uzyskać odpowiedź | 23:56 |
jacekowski | tak | 23:57 |
cetra | i co tam słychać ciekawego? | 23:57 |
jacekowski | nic | 23:57 |
jacekowski | http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html | 23:57 |
Przekliniak | <http://tinyurl.com/3lh7em3> (at www.intel.com) | 23:57 |
jacekowski | sporo wiedzy jest tutaj | 23:58 |
buharin | jacekowski, mam napisane ze euid moze sie zmienic na nobody | 23:59 |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!