--- Log opened Sun Sep 18 00:00:38 2005 00:23 -!- sfistack [~sfistack@cia112.neoplus.adsl.tpnet.pl] has quit [Quit: bb] 00:57 -!- ent^^ [~ent@edf130.neoplus.adsl.tpnet.pl] has joined #wyklady 00:57 < ent^^> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 01:01 -!- Nekrataal [~Nekrataal@doer.ussta.ssinjin.streea] has joined #wyklady 01:02 -!- ent^^ [~ent@edf130.neoplus.adsl.tpnet.pl] has left #wyklady [] 02:28 -!- Nekrataal is now known as Nekrataal^aw 03:43 -!- SlimAway [slimfast@avy10.internetdsl.tpnet.pl] has quit [Ping timeout: 180 seconds] 04:25 -!- SlimAway [slimfast@avy10.internetdsl.tpnet.pl] has joined #wyklady 04:28 -!- SlimAway [slimfast@avy10.internetdsl.tpnet.pl] has quit [Ping timeout: 180 seconds] 09:35 -!- SlimAway [slimfast@avy10.internetdsl.tpnet.pl] has joined #wyklady 09:38 -!- SlimAway [slimfast@avy10.internetdsl.tpnet.pl] has quit [Ping timeout: 180 seconds] 10:12 -!- SlimAway [slimfast@avy10.internetdsl.tpnet.pl] has joined #wyklady 10:15 -!- SlimAway [slimfast@avy10.internetdsl.tpnet.pl] has quit [Ping timeout: 180 seconds] 10:37 -!- SlimAway [slimfast@avy10.internetdsl.tpnet.pl] has joined #wyklady 10:44 -!- SlimAway [slimfast@avy10.internetdsl.tpnet.pl] has quit [Ping timeout: 180 seconds] 10:54 -!- You're now known as Gynvael 10:55 -!- Topic for #wyklady: C: #10 - sroda 21:00 (cd obslugi plikow) | ASM: #1 - poniedzialek 21:00 (wstep) || logi na: http://progsman.webd.pl/adami/gynkurs/ | lista zadan z C: http://gynvael.vexillium.org/lista.txt (G0blin prowadzi, 800 pkt) 10:55 -!- Topic set by Gynvael [~gynvael@shine.bright.morning.light] [Sat Sep 17 21:14:14 2005] 11:00 -!- SlimAway [slimfast@avy10.internetdsl.tpnet.pl] has joined #wyklady 11:04 -!- SlimAway [slimfast@avy10.internetdsl.tpnet.pl] has quit [Ping timeout: 180 seconds] 12:55 -!- sfistack [~superb@cia112.neoplus.adsl.tpnet.pl] has joined #wyklady 12:55 < sfistack> 12:56 < sfistack> nie ma to jak prawie wygrac 1vs2 w sc :P 13:22 < seraphin> exit 13:23 -!- seraphin [~seraphin@82.139.18.5] has quit [Quit: Lost terminal] 13:28 <@Gynvael> sfistack: zdarza sie zdaarza sie 13:29 <@Gynvael> szczegoolnie jak ty idziesz z expa a oni rashuja twojego tp;pppppppp 13:30 -!- You're now known as GynAway 13:33 -!- Nekrataal^aw is now known as Nekrataal 13:33 < Nekrataal> no nie ? : > 13:35 < sfistack> nie tak troche bylo 13:35 < sfistack> :P 13:57 -!- m4shed [n3tdes@bsd.miki.eu.org] has joined #wyklady 13:57 < m4shed> hi 13:58 -!- test_e [~none@Kox.vs.Klimat.whoever.wins.we.lose] has joined #wyklady 14:04 -!- nietopesz [~nietopesz@yu38.internetdsl.tpnet.pl] has joined #wyklady 14:05 < nietopesz> moze mi ktos powiedziec jakim poleceniem kompilowac c++ pod linuksem 14:06 -!- m4shed [n3tdes@bsd.miki.eu.org] has quit [Quit: Lost terminal] 14:09 -!- test_e is now known as adam_i 14:26 <@GynAway> nietopesz: g++ plik.cpp -o plik 14:39 < nietopesz> a mozecie mi jeszcze skad sciagnac biblioteke iostream do c++ 14:40 <@GynAway> e-e powinna byc defaultowo 14:40 <@GynAway> ona jest afair built-in 14:42 < nietopesz> co do g++ wyskakuje mi command not found 14:43 -!- adam_i [~none@Kox.vs.Klimat.whoever.wins.we.lose] has quit [Ping timeout: 180 seconds] 14:44 -!- Nekrataal^aw [~Nekrataal@doer.ussta.ssinjin.streea] has joined #wyklady 14:44 -!- Nekrataal [~Nekrataal@doer.ussta.ssinjin.streea] has quit [Killed (NickServ (GHOST command used by Nekrataal^aw))] 14:44 -!- Nekrataal^aw is now known as Nekrataal 14:44 < sfistack> gpp?? 14:44 < sfistack> :> 14:45 < nietopesz> to samo 14:45 < sfistack> a to zle bo byc powinno 14:46 < nietopesz> moze czegos nie zainstalowlem 14:46 < nietopesz> jest jakis kompilator do tego oprocz gnu 14:47 < sfistack> ja sie nie znam na linuxie 14:47 < sfistack> ;p 14:51 < nietopesz> ktos mi pomoze mam gcc w najnowszej wersji 14:57 -!- nietopesz [~nietopesz@yu38.internetdsl.tpnet.pl] has quit [Quit: Leaving] 15:04 -!- adam__i [~none@Kox.vs.Klimat.whoever.wins.we.lose] has joined #wyklady 16:23 -!- You're now known as Gynvael 16:35 -!- You're now known as GYnObiad 17:00 -!- SlimAway [slimfast@avy10.internetdsl.tpnet.pl] has joined #wyklady 17:02 -!- You're now known as Gynvael 17:02 -!- adam__i [~none@Kox.vs.Klimat.whoever.wins.we.lose] has quit [Ping timeout: 180 seconds] 18:02 -!- You're now known as GynSC 18:17 -!- You're now known as Ashi 19:03 -!- You're now known as GynSC 19:30 -!- nietopesz [~nietopesz@yu38.internetdsl.tpnet.pl] has joined #wyklady 19:33 -!- nietopesz [~nietopesz@yu38.internetdsl.tpnet.pl] has quit [Client Quit] 19:49 -!- You're now known as GynAway 19:59 -!- jaki [~haha@82.160.9.162] has joined #wyklady 19:59 -!- jaki [~haha@82.160.9.162] has left #wyklady [] 21:21 -!- sfistack [~superb@cia112.neoplus.adsl.tpnet.pl] has quit [Ping timeout: 180 seconds] 22:46 -!- sfistack [~superb@chc87.neoplus.adsl.tpnet.pl] has joined #wyklady --- Day changed Mon Sep 19 2005 01:12 -!- Nekrataal is now known as Nekrataal^aw 07:34 -!- Nekrataal^aw is now known as Nekrataal 08:34 -!- SlimAway [slimfast@avy10.internetdsl.tpnet.pl] has quit [Ping timeout: 180 seconds] 08:35 -!- Nekrataal is now known as Nekrataal^school 11:12 -!- You're now known as GynvRE 13:59 -!- adam__i [~none@Kox.vs.Klimat.whoever.wins.we.lose] has joined #wyklady 14:45 -!- Nekrataal^school [~Nekrataal@doer.ussta.ssinjin.streea] has quit [Read error: Connection reset by peer] 14:55 -!- phoenix__ [~phoenix@cer53.neoplus.adsl.tpnet.pl] has joined #wyklady 15:26 -!- adam__i [~none@Kox.vs.Klimat.whoever.wins.we.lose] has quit [Ping timeout: 180 seconds] 15:59 -!- G0blin [~Goblin@dmz110.neoplus.adsl.tpnet.pl] has joined #wyklady 16:06 < sfistack> hi yo 16:06 < sfistack> ;] 16:06 < phoenix__> hi 16:11 < G0blin> hi 16:11 < sfistack> any1 sc?;] 16:12 < phoenix__> nie bo mam powody 16:12 < sfistack> yy 16:12 < sfistack> co za stwierdzenie;P 16:12 < phoenix__> za dobry jestes 16:12 < sfistack> haha 16:12 < sfistack> nie grales ze mna nawet 16:12 < sfistack> ;p 16:13 < phoenix__> widzialem duzo twoich waljk 16:13 < phoenix__> Trev ? 16:13 < sfistack> jak mogles widziec ;o 16:13 < sfistack> G0blin: grasz? 16:13 < phoenix__> Treva znasz to skads? 16:14 < sfistack> byl taki nick 16:14 < sfistack> w sensie gralem 16:14 < sfistack> ;P 16:14 < sfistack> ale mam 800pkt na ntc ;P 16:14 < phoenix__> p10tr ;] 16:14 < phoenix__> Trev to moj brat i widzialem jak z nimk grales ;] 16:15 < sfistack> oj no bo hmm 16:15 < sfistack> nie chce byc niemily, tylko on nie umie grac :P 16:15 < phoenix__> wiem ;] 16:15 < phoenix__> zjebus 16:16 < phoenix__> obasuje a robi baze 16:16 < sfistack> ;p 16:16 < sfistack> zrobilem cannon rush w 10 minucie chyba 16:16 < sfistack> ;P 16:16 < phoenix__> wiem 16:42 -!- Nekrataal^school [~Nekrataal@doer.ussta.ssinjin.streea] has joined #wyklady 16:52 < phoenix__> sfistack: byc? 16:52 < sfistack> yup 16:52 -!- Nekrataal^school is now known as Nekrataal 16:53 < phoenix__> moze moj brat za jakies 15 minut bedzie gral 16:53 < sfistack> nie bedzie mnie 16:53 < sfistack> ;] 16:53 < phoenix__> aha 17:31 < phoenix__> sfistack: jestes? 17:34 -!- You're now known as Gynvael 17:38 < phoenix__> Gynvael: skiedy sprawdzisz ? 17:39 < phoenix__> dobra potem mi odpowiesz 17:39 < phoenix__> ide cya 17:39 < phoenix__> /quit bye 17:39 -!- phoenix__ [~phoenix@cer53.neoplus.adsl.tpnet.pl] has quit [Quit: bye] 17:52 -!- You're now known as GynAway 18:07 -!- Nekrataal [~Nekrataal@doer.ussta.ssinjin.streea] has quit [Client Quit] 19:06 -!- nekrataal [~nekrataal@doer.ussta.ssinjin.streea] has joined #wyklady 19:07 -!- adam__i [~none@Kox.vs.Klimat.whoever.wins.we.lose] has joined #wyklady 19:07 < adam__i> Ktos ebdze logowal bo mnie nei bedzie ? 19:30 < G0blin> adam__i: ja moge jak ktos mi powie jak sie mircem loguje :P 19:30 < G0blin> bo mi sie nie chce helpa czytac 19:58 <@GynAway> re 19:58 <@GynAway> ja moge ;> 20:00 -!- You're now known as Gynvael 20:06 -!- adam__i [~none@Kox.vs.Klimat.whoever.wins.we.lose] has quit [Quit: quit] 20:08 < Blizzard> ee wczoraj byl asm? 20:08 < Blizzard> ee nie 20:08 < Blizzard> to kiedy;. 20:09 < nekrataal> za 40 minut ; p 20:10 <@Gynvael> ne 20:10 <@Gynvael> dzisiaj 20:10 <@Gynvael> za 50 20:10 < Blizzard> ee 20:10 < Blizzard> przeca dzis wtoreek 20:10 < nekrataal> oj, systemowy mi zle chodzi ;> 20:10 < Blizzard> cos wam sie spierdzielilo 20:11 < Blizzard> btw. Gynvael to nie jest chyba najlepszy pomysl na tej sieci 20:11 < Blizzard> ;\ 20:11 < Blizzard> tam wiecej osob 20:14 <@Gynvael> <>< 20:14 [Users #wyklady] 20:14 [@Gynvael ] [ G0blin ] [ rainrider] 20:14 [ Blizzard] [ nekrataal] [ sfistack ] 20:14 -!- Irssi: #wyklady: Total of 6 nicks [1 ops, 0 halfops, 0 voices, 5 normal] 20:14 <@Gynvael> Blizzard: jak chca, to przyjda i tu 20:14 <@Gynvael> Blizzard: a jak nie chca, to nie wejda i tam 20:14 <@Gynvael> a akurat na ilosci mi nie zalezy 20:15 <@Gynvael> jedna osoba zrozumie to bede happy na maxa ;> 20:15 <@Gynvael> 1 osoba ktora zrozumie >>> 1000 osob ktore beda a nie zrozumieja 20:16 < Blizzard> :> 20:16 < Blizzard> heheh 20:16 < Blizzard> a ja wlasnie doszedlem w syymfoni do tablic wielowymiarowych 20:16 < Blizzard> o wlasnie 20:17 < Blizzard> mozesz mi je na chlopski rozum wytlumaczyc 20:17 < Blizzard> bo w tej symfoni slabo mu poszlo 20:17 < Blizzard> i jeszcze nie czaje funkcji strncpy 20:17 < Blizzard> podal mizerny przyklad;\ 20:18 <@Gynvael> strncpy to to samo co strcpy, tyle ze kopiuje MAXYMALNIE tyle znakow ile sie poda w parametrze strncpy 20:18 <@Gynvael> jesli kopiuje ta MAXYMALNA ilosc znakow, to nie dodaje \0 na koniec 20:18 <@Gynvael> np 20:18 <@Gynvael> char buf[100]; 20:18 <@Gynvael> strncpy(buf, "ala ma kota", 3); 20:19 <@Gynvael> to skopiuje "ala" do buf (bez \0) 20:19 < Blizzard> mhm 20:19 < Blizzard> no to skad kompilator bedzie wiedzial ze to jest string? 20:19 < Blizzard> jak nie ma NULLa 20:19 <@Gynvael> ehehe wlasnie nie bedzie; > 20:20 <@Gynvael> btw nie NULLa tylko nul'a ;> 20:20 <@Gynvael> NULL to (void*)0 20:20 <@Gynvael> a nul to '\0' 20:20 <@Gynvael> ;> 20:20 <@Gynvael> musisz mu recznie wstawic 20:20 <@Gynvael> ja zwyklem robic tak: 20:20 <@Gynvael> char buf[100]; 20:20 <@Gynvael> strncpy(buf, costam, sizeof(buf)-1); 20:20 < Blizzard> ;? 20:20 <@Gynvael> buf[sizeof(buf)-1] = '\0'; 20:20 < Blizzard> ee 20:21 <@Gynvael> czyli recznie mu wstawiam na ostatni znal \0 ;> 20:21 < Blizzard> lol 20:21 < Blizzard> ale po co tak robic 20:21 <@Gynvael> bo jest bezpieczniej ;> 20:21 < Blizzard> po co tak utrudniac sobie zycie 20:21 <@Gynvael> strcpy nie sprawdza wielkosci buforka 20:21 <@Gynvael> czyli pan zly haxxor moze ci sploitnac progsa ;> 20:23 < Blizzard> ;> 20:24 < Blizzard> lol 20:24 < Blizzard> on tu pisze grebosz ze nie mozna wstawic sobie wewnatrz f. strcpy sizeof(costam) 20:26 <@Gynvael> mozna mozna 20:26 <@Gynvael> tylko trzeba uwazac 20:26 <@Gynvael> tzn wewnatrz strcpy nie 20:26 <@Gynvael> ale wewnatrz strncpy tak 20:26 <@Gynvael> ;p 20:28 < Blizzard> eh 20:28 < Blizzard> a mozesz mi na chlopski rozum wielowymiarowki? 20:31 <@Gynvael> ta 20:31 <@Gynvael> tablica tablic ;p 20:31 -!- nekrataal [~nekrataal@doer.ussta.ssinjin.streea] has quit [Quit: brb] 20:36 -!- nekrataal [~nekrataal@doer.ussta.ssinjin.streea] has joined #wyklady 20:40 < G0blin> neko? 20:40 < G0blin> yest? 20:41 < nekrataal> yep 20:41 <@Gynvael> hi 20:42 < G0blin> nekrataal: lepiej grac w wgt czy pgt? :> 20:42 < G0blin> hi 20:42 < G0blin> :] 20:42 < nekrataal> imo pgt 20:42 < G0blin> y? 20:43 < G0blin> czemu? 20:44 < nekrataal> lepiej mi sie kojarzy 20:44 < nekrataal> i zawsze mialem wrazenie ze poziom jest wyzszy 20:44 < nekrataal> osobiscie wole pgt ;p 20:45 < nekrataal> nie trzeba sie meczyc z wgrywaniem repow via www 20:45 < G0blin> ^^ 20:45 <@Gynvael> anom 20:45 < G0blin> thx 20:47 < nekrataal> n/p, pograj na oby 2uch i sam ocenisz 20:48 < G0blin> nekrataal: #1 nie mam czasu, zeby na jednym sie dobrze zadomowic 20:49 < G0blin> #2 poziomu i tak nie rozoznie, bo jestem lama jeszcze :] 20:49 < G0blin> licze na to, ze jak bede z lepszymi grac, to sie urobie 20:50 < nekrataal> mhm, bo tak jest 20:50 < nekrataal> trzeba grac i grac i innej rady nie ma ;p 20:54 -!- phoenix__ [~phoenix@cel216.neoplus.adsl.tpnet.pl] has joined #wyklady 20:54 < phoenix__> re 20:54 < phoenix__> re all 20:55 <@Gynvael> re 20:55 [Users #wyklady] 20:55 [@Gynvael ] [ G0blin ] [ phoenix__] [ sfistack] 20:55 [ Blizzard] [ nekrataal] [ rainrider] 20:55 -!- Irssi: #wyklady: Total of 7 nicks [1 ops, 0 halfops, 0 voices, 6 normal] 20:55 < phoenix__> Gynvael: dzisiaj ASM ? 20:55 <@Gynvael> yep 20:55 < phoenix__> co tak malo osob? 20:55 < phoenix__> chyba nie wiedza 20:56 <@Gynvael> hehe spytaj czy wiedza 20:57 < phoenix__> moze lepeij ze mniej ;] 20:57 < phoenix__> u mnie juz 21:02 20:58 < phoenix__> kiedy start? 20:58 <@Gynvael> u mnie jeszcze nie 20:58 <@Gynvael> ;p 20:58 <@Gynvael> !time 20:59 < phoenix__> w8 21:01 -!- phoe [1011@bxt232.neoplus.adsl.tpnet.pl] has joined #wyklady 21:01 < phoenix__> !time 21:01 -phoe:#wyklady- 21:07:09 21:01 < phoenix__> hehehe 21:01 <@Gynvael> ;> 21:01 <@Gynvael> nice 21:02 < phoenix__> kto mnie slyszy ? 21:02 < phoenix__> kto jest ? 21:02 <@Gynvael> ja 21:02 [Users #wyklady] 21:02 [@Gynvael ] [ G0blin ] [ phoe ] [ rainrider] 21:02 [ Blizzard] [ nekrataal] [ phoenix__] [ sfistack ] 21:02 -!- Irssi: #wyklady: Total of 8 nicks [1 ops, 0 halfops, 0 voices, 7 normal] 21:02 < phoenix__> start 21:03 < phoenix__> tylko logi wez 21:03 < phoenix__> i jkak tam moje prace w C? 21:03 -!- Necrium [~healscrea@healscream.siec.idealan.pl] has joined #wyklady 21:03 < Necrium> DZisiaj asm ? 21:03 < Necrium> ;> 21:03 < phoenix__> tak 21:03 < phoenix__> za chwile 21:03 < Necrium> Spoko 21:03 < Necrium> nareszcie cos dla mnie :) 21:04 < phoenix__> Gynvael: zaczynaj 21:04 -!- seraphin [~seraphin@82.139.18.5] has joined #wyklady 21:04 < seraphin> re 21:04 < seraphin> osochozi? 21:04 < phoenix__> kurs asm 21:04 < phoenix__> Gynvael: zaczynaj 21:04 <@Gynvael> ok 21:04 <@Gynvael> znajde tylko xmmsa 21:05 <@Gynvael> zmienie muze 21:05 <@Gynvael> i go 21:05 < phoenix__> kk 21:05 < phoenix__> btw jakikej sluchasZ? 21:05 <@Gynvael> ogolnie ? metal i troche trancu jak pisze cos 21:05 < Necrium> Gynvael: Moze od kompilatora zaczniemy ? :-) 21:05 <@Gynvael> albo gram w sc 21:05 < phoenix__> ee ja nie lubie metalu 21:05 < phoenix__> techno 21:06 * seraphin sciagnal dyskografie nightwisha cala :D 21:06 < phoenix__> ---start---- i niech ktos logi robi 21:06 < seraphin> 3 zespol do kolekcji :P 21:06 * Blizzard ma ktos plytke jakas IRY? 21:07 < phoenix__> ble 21:07 < phoenix__> nie 21:07 < Blizzard> a reszta? 21:07 < phoenix__> kurde zaczyn ajcie 21:08 <@Gynvael> ok 21:08 <@Gynvael> zaczynamy 21:08 <@Gynvael> ;> 21:08 <@Gynvael> dobra 21:08 <@Gynvael> wiec ;> 21:08 -!- kakens1 [1001@spiritusek.net] has joined #wyklady 21:08 <@Gynvael> dzisiaj bedzie wstep do niejakiego asma ;> 21:08 <@Gynvael> wiecej teorii, praktyki niewiele, ale cos tam sie pojawi 21:09 <@Gynvael> ogolnie dzisiaj i przez pare nastepnych wykladow potrzebne bedzie: 21:09 <@Gynvael> linux 21:09 <@Gynvael> assembler nasm (netwide asm) 21:09 <@Gynvael> i linked linuxowy standardowy (ld) 21:09 <@Gynvael> oraz: 21:09 <@Gynvael> debbuger gdb 21:09 <@Gynvael> i objdump 21:09 -!- mode/#wyklady [+m] by Gynvael 21:10 <@Gynvael> najpierw 1m powtorze co to bedzie wogole 21:10 <@Gynvael> wiec; > 21:10 <@Gynvael> jest to wyklad z asma 21:10 <@Gynvael> bede tlumaczyl tak jakbym uwazal ze zetkneliscie sie z programowaniem w C lub pascalu 21:10 <@Gynvael> bedzie to ofc seria wykladow 21:11 <@Gynvael> dzisiaj i przez pare nastepnych poniedzialkow (jesli bedzie kogos to interesowac ofc) bedzie: 21:11 <@Gynvael> - wstep + asm pod linuxa (skladnia intela, nasm) 21:11 <@Gynvael> potem na warsztat pojdzie 21:11 <@Gynvael> - asm pod winde (skladnia intela, masm32 +winapi) 21:12 <@Gynvael> potem bedzie jeden albo dwa wyklady o laczeniu pod linuxem i winda projektow pisanych w C z projektami pisanymi w asmie 21:12 <@Gynvael> jak to linkowac, kompilowac, pisac, etc 21:12 <@Gynvael> po tym mniej wiecej powinniscie juz lapac o co biega 21:12 <@Gynvael> i bedzie pare wykladow o Reverse Engineeringu 21:12 <@Gynvael> min o crackingu 21:12 -!- qtez [1000@Bot.Underground] has joined #wyklady 21:12 <@Gynvael> budowie exekow 21:13 <@Gynvael> jak przerobic jakis program (dorobic swoje funckje) 21:13 <@Gynvael> moze jakies bardzo podstawowe zabespieczenia omowie (nie chce sie w to zaglebiac, jako ze expertem od tego nie jestem) 21:13 <@Gynvael> po tym przyjdzie czas na powrot do historii 21:13 <@Gynvael> czyli DOS (skladnia intel, nasm lub debug.com i 13h + efekciki graficzne i takie tam) 21:14 <@Gynvael> po tym wrocimy do linuxa/windy i pobawimy sie prostymi sploitami 21:14 <@Gynvael> a na koniec bedzie wstep do pisania systemow operacyjnych 21:14 <@Gynvael> czyli jak to wszystko od podstaw dziala 21:15 <@Gynvael> ok 21:15 <@Gynvael> teraz tak 21:15 <@Gynvael> ja expertem od asma nie jestem ;> 21:16 <@Gynvael> pisze w tym for fun ;> wiec nie oczekujcie odemnie wiedzy absolutnej 21:16 -!- kakens1 [1001@spiritusek.net] has quit [Quit: Lost terminal] 21:16 <@Gynvael> moge sie poszczycic co najwyzej paroma programikami, garscia crackme, udzialem w czesciowym portcie syndicate wars z dosa na winde/lina i przerobka paru programow ;> 21:17 <@Gynvael> wiec wiecie ;> nie bijcie jak sie pomyle ;> 21:17 <@Gynvael> ok 21:17 <@Gynvael> teraz tak 21:17 <@Gynvael> co do zasad na tym cudzie 21:17 <@Gynvael> tak jak na wykladach z C 21:17 <@Gynvael> jak +m tyo mowie ja 21:17 <@Gynvael> jak nie ma +m to mowi kazdy ;> 21:17 <@Gynvael> (zazwyczaj wtedy czas na pytania) 21:17 <@Gynvael> pierwsze moje pytanie do was brzmi 21:18 <@Gynvael> czy macie teraz pod reka: linuxa, nasm'a, ld, gdb i objdump ;> 21:18 -!- mode/#wyklady [-m] by Gynvael 21:18 < G0blin> ja tak 21:18 < G0blin> obok stoi drugi monitor i na kompie podlaczonym do monitora jest caly zestaw :] 21:18 <@Gynvael> ktos jeszcze slucha ? ;> 21:18 <@Gynvael> hehehe 21:18 < Blizzard> tak 21:18 < phoenix__> co to objdump ? 21:18 < Blizzard> linuch zawsze 21:18 < Blizzard> nasma wlasnie dociagnolem 21:19 < Blizzard> ld mam 21:19 < nekrataal> no ja mam wszystko ;> 21:19 < G0blin> phoenix__: progz do zamieniania exe na kod asma 21:19 < Necrium> a ja na winie siedzie i nie jestem wogle przygotowany ;D 21:19 < Blizzard> gdb mam 21:19 <@Gynvael> phoenix__: takie cudo do disasemblingu / wypisywania info o binarkach 21:19 < phoenix__> to nie wiem czy mam 21:19 < Blizzard> i objdumpa tez 21:19 < phoenix__> a jak moge sprawdzic czy mam ? 21:19 * Blizzard ma wsio 21:19 < phoenix__> spox mam 21:19 <@Gynvael> phoenix__: ;> 21:19 < G0blin> ja wiedzialem, ze przy instalacji linuxa powinienem zaznaczyc wszystko zwiazane z programowaniem :] 21:20 <@Gynvael> po prostu napisz objdump 21:20 <@Gynvael> i juz 21:20 <@Gynvael> ;> 21:20 < phoenix__> wiem 21:20 < phoenix__> tak tez zrobiolem 21:20 <@Gynvael> ok 21:20 <@Gynvael> ;> 21:20 < phoenix__> gogogog 21:20 < phoenix__> ;] 21:20 <@Gynvael> to lecimy 21:20 -!- mode/#wyklady [+m] by Gynvael 21:20 <@Gynvael> co jakis czas bede was pytal 21:20 <@Gynvael> czy lapiecie conieco 21:20 <@Gynvael> i czas na pytanka ;> 21:21 <@Gynvael> ok 21:21 <@Gynvael> wiec 21:21 -!- sfistack [~superb@chc87.neoplus.adsl.tpnet.pl] has quit [Ping timeout: 180 seconds] 21:21 <@Gynvael> wiec ;> 21:21 <@Gynvael> hmm 21:21 <@Gynvael> po pierwsze 21:21 <@Gynvael> i w sumie najwazniejsze ;> 21:21 <@Gynvael> asm jest jezykiem niskiego poziomu 21:21 <@Gynvael> to znaczy ze jest prosty ;> 21:22 <@Gynvael> prosty nei w znaczeniu "latwy do zrozumienia" 21:22 <@Gynvael> tylko prosty w sensie nieskomplikowanej konstrukcji 21:22 <@Gynvael> narazie pobawimy sie w pewna zabawe 21:22 <@Gynvael> mianowicie pobawimy sie w procesor ;>>> 21:22 <@Gynvael> (tak, ta zabawa ma sens) 21:22 <@Gynvael> umowmy sie ze: 21:22 <@Gynvael> ja podam pare liczb i powiem co kazda oznacza 21:22 <@Gynvael> potem podam ciag liczb 21:23 <@Gynvael> i wy mi na privie napiszecie co procek by zrobil;> 21:23 <@Gynvael> wiec 21:23 <@Gynvael> pare liczb to: 21:23 <@Gynvael> 1 - napisanie "jeden" 21:23 <@Gynvael> 2 - napisanie "dwa" 21:23 <@Gynvael> 3 - napisanie "trzy" 21:23 <@Gynvael> teraz podam przyklad 21:23 <@Gynvael> 1 2 1 2 21:23 <@Gynvael> procek by zrobil, po kolej 21:23 <@Gynvael> "jeden" "dwa" "jeden" "dwa" 21:23 <@Gynvael> proste ne ? 21:24 <@Gynvael> 1 2 3 1 2 3 <=- a co by procek zrobil w tym wypadku ? 21:24 <@Gynvael> napiszcie mi na priva ;> 21:24 <@Gynvael> wiem ze to proste 21:24 <@Gynvael> ale krok po kroku dojdzie sie co ciekawszych rzeczy 21:25 <@Gynvael> o wow ;> 21:25 <@Gynvael> napisaliscie ;> 21:25 <@Gynvael> nice 21:25 <@Gynvael> (myslalem ze nie dostane zzadnego priva; p) 21:25 <@Gynvael> ok 21:25 <@Gynvael> ofc kazdy dobrze 21:25 <@Gynvael> teraz utrudnie zabawe 21:25 <@Gynvael> zalozemy ze mamy takie "komendy" 21:25 <@Gynvael> ale najpierw 21:26 <@Gynvael> mamy UMYSL ;> 21:26 <@Gynvael> umysl to cos w czym pamietamy jedna liczbe ;> 21:26 <@Gynvael> 1 - wypisanie jaka liczbe ma umysl 21:26 <@Gynvael> 2 - powiedzenie umyslo wi ma pamietac liczbe ktora jest po tej komendzie 21:26 <@Gynvael> 3 - dodanie do liczby w umysle liczby "1" 21:26 <@Gynvael> 4 - dodanie do liczby w umysle liczby ktora jest po tej komendzie 21:26 <@Gynvael> przykladowo 21:27 <@Gynvael> 2 10 1 21:27 <@Gynvael> procek zrobi: umysl = 10, wypisze "10" 21:27 <@Gynvael> 2 10 3 3 3 1 21:27 <@Gynvael> procek zrobi: umysl = 10, umysl + 1 (11), +1 (12) +1 (13), wypisze "13" 21:27 <@Gynvael> ok 21:27 <@Gynvael> a teraz zadanko dla was 21:28 <@Gynvael> 2 10 3 3 4 15 3 1 3 1 21:29 <@Gynvael> privow o polowe mniej 21:29 <@Gynvael> ;> 21:29 <@Gynvael> ok 21:30 <@Gynvael> wiec ofc procek wypisze "28" "29" 21:30 <@Gynvael> a teraz wam powiem 21:30 <@Gynvael> ze te cyferki sa fajne 21:30 <@Gynvael> ale dla procka 21:30 <@Gynvael> ja bym wolal zrobic inaczej 21:30 <@Gynvael> niech procek ma swoje cyferki 21:30 <@Gynvael> ale my umowmy sie ze bedziemy je jakos inaczej nazywac 21:30 <@Gynvael> 1 - print 21:30 <@Gynvael> 2 - add 21:30 <@Gynvael> eh 21:30 <@Gynvael> klamie 21:30 <@Gynvael> 1 - print 21:31 <@Gynvael> 2 - mov 21:31 <@Gynvael> 3 - inc 21:31 <@Gynvael> 4 - add 21:31 <@Gynvael> i komendy oddzieli sie przecinkiem 21:31 <@Gynvael> czyli powyzszy przyklad wygladal bedzie 21:31 <@Gynvael> albo srednikiem oddzielimy ;> bedzie fajniej ;> 21:32 -!- G0blin is now known as kawaa 21:32 <@Gynvael> mov 10; inc; inc; add 15; inc; print; inc; print 21:32 <@Gynvael> tak poprzedni program wyglada 21:32 <@Gynvael> a teraz, co wypisze procek 21:32 <@Gynvael> jesli napiszemy cos takiego: 21:32 <@Gynvael> mov 2; inc; inc; inc; print; add 23; print ? 21:33 <@Gynvael> (jeden priv juz dostalem ;>) 21:33 <@Gynvael> (2) 21:34 <@Gynvael> (3) 21:34 <@Gynvael> ok 21:34 <@Gynvael> 3 odpowiedzi mnie zadowalaja 21:34 <@Gynvael> wiec jedziemy dalej 21:34 <@Gynvael> kolejny stopien zaawansowania 21:34 <@Gynvael> teraz mamy jeden "umysl" 21:34 <@Gynvael> a zalozmy ze chcemy wiecej liczb zapamietac ;> 21:34 <@Gynvael> wiec zalozmy ze mamy 3 umysly ;> 21:34 <@Gynvael> u1, u2 i u3 21:35 <@Gynvael> trzeba troche komendy przerobic 21:35 <@Gynvael> wiec niech bedzie: 21:35 <@Gynvael> print u? - wypisuje wartosc danego "umyslu", np print u1 21:35 <@Gynvael> printa - wypisuje wartosci po kolei wszystkich 3ch umyslow, to samo co print u1; print u2; print u3; 21:36 <@Gynvael> mov u?, liczba - wpisuje liczbe do umyslu, np mov u1, 12 21:36 <@Gynvael> mov u?, u? - wpisuje liczbe z umyslu tego drugiego do umyslu pierwszego.. np mov u1, u2 przepisze liczbe z u2 DO u1 21:37 <@Gynvael> inc u? - zwieksza wartosci "umyslu" o 1, np inc u1 21:37 <@Gynvael> add u?, liczba - dodaje do umyslu liczbe 21:37 <@Gynvael> add u?, u? - dodaje do wartoci pierwszego umyslu, wartosc drugiego.. np add u1, u2 doda do u1 wartosc u2 21:37 <@Gynvael> ok 21:37 <@Gynvael> a teraz przyklad 21:38 <@Gynvael> a potem jak zwykle zadanko 21:38 <@Gynvael> mov u1, 0; mov u2, 1; mov u3, u2; inc u2; printa 21:38 <@Gynvael> to wypisze "0" "1" "2" 21:38 <@Gynvael> a teraz zadanko dla was 21:39 <@Gynvael> mov u1, 0; mov u2, 0; add u2, 10; mov u3, u2; inc u3; inc u1; add u2, u1; print u3; printa 21:39 <@Gynvael> ee 21:39 <@Gynvael> przed chwila blad zrobilem 21:39 <@Gynvael> -=213833=- <@Gynvael> to wypisze "0" "1" "2" 21:39 <@Gynvael> to wypisze ofc "0" "2" "1" 21:39 <@Gynvael> ok 21:39 <@Gynvael> wiec 21:40 <@Gynvael> zobaczcie czy wy sie w tym cudzie nie pomylicie 21:40 <@Gynvael> odpowiedzi na priva ;> 21:40 <@Gynvael> (1 priv juz dostalem) 21:41 <@Gynvael> (3) 21:41 <@Gynvael> ok 21:41 <@Gynvael> lecimy wiec dalej 21:41 <@Gynvael> odpowiedz to ofc "11" "1" "11" "11" 21:42 <@Gynvael> ok 21:42 <@Gynvael> a teraz w sumie 21:42 -!- mulander [~perl@ip10.interq.pl] has joined #wyklady 21:42 <@Gynvael> (5 odpowiedzi, w 2 dwie drobne pomylki, wiec good) 21:42 <@Gynvael> ok 21:42 <@Gynvael> (czesc mulander ;>) 21:43 <@Gynvael> teraz pytanka , za chwile dalej 21:43 -!- mode/#wyklady [-m] by Gynvael 21:43 <@Gynvael> jakies pytania ? 21:43 < qtez> jedno 21:43 < mulander> witam wszystkich :) 21:43 < qtez> beda z tego gdzies logi? 21:43 < qtez> :) 21:43 -!- Qui-Gon [~Goblin@doh44.neoplus.adsl.tpnet.pl] has joined #wyklady 21:44 < phoenix__> kikedy bedzie cos normalnego? 21:44 < qtez> phoenix__: to jest normalne i pozwala zrozumiec asma :) 21:44 < nekrataal> tia, bardzoooo przystepnie ;> 21:44 < qtez> phoenix__: przez ta gre poznales juz 4 funkcje :) 21:45 < phoenix__> no wien 21:45 < phoenix__> rejestry... 21:45 < Qui-Gon> o jest -m :P 21:45 < Qui-Gon> co bylo po tym jak gyn 21:45 < Qui-Gon> powiedzial 21:45 < qtez> phoenix__: rejestrow jeszcze nie poznales :P 21:45 < Qui-Gon> ze 5 dostal odp? 21:45 < qtez> Qui-Gon: zalezy na ktore pytanie. 21:45 <@Gynvael> re 21:45 <@Gynvael> beda 21:46 <@Gynvael> ok logi dla spoznialskich 21:46 <@Gynvael> http://gynvael.vexillium.org/wyklad.log 21:46 <@Gynvael> phoenix__: hehehe za chwile ;> 21:46 < phoenix__> gogogogo 21:46 -!- kawaa [~Goblin@dmz110.neoplus.adsl.tpnet.pl] has quit [Ping timeout: 240 seconds] 21:46 * Qui-Gon slaps Necrium around a bit with a large trout 21:46 < Qui-Gon> tatnie 21:46 <@Gynvael> to lecimy dalej 21:46 < Qui-Gon> na ostatnie 21:46 -!- mode/#wyklady [+m] by Gynvael 21:46 <@Gynvael> ok 21:46 <@Gynvael> a teraz 21:46 <@Gynvael> "umysl" to glupia nazwa 21:46 <@Gynvael> wymyslil ja moj wykladowca od algorytmow 21:47 <@Gynvael> ale jej nie lubie 21:47 <@Gynvael> za malo haxxorska 21:47 <@Gynvael> nazwijmy nasze umysly bardziej haxxorsko 21:47 <@Gynvael> np 21:47 <@Gynvael> eax, ebx, ecx, edx, edi, esi 21:47 <@Gynvael> o tak 21:47 <@Gynvael> to fajne nazdy ;> 21:47 <@Gynvael> mov eax, 12 21:47 <@Gynvael> add eax, 10 21:47 <@Gynvael> etc 21:47 <@Gynvael> tak bedziemy teraz pisac 21:47 <@Gynvael> wiec, teraz drobny przyklad 21:47 <@Gynvael> a 21:48 <@Gynvael> i jeszcze jedna zamiana 21:48 <@Gynvael> to print, printa 21:48 <@Gynvael> tak troche tez do bani i malo haxxorskie ;> 21:48 -!- Qui-Gon is now known as G0blin 21:48 <@Gynvael> zrobmy moze tak 21:48 <@Gynvael> niech bedzie sobie instrukcja "int NUMER" 21:49 <@Gynvael> i numer to bedzie numer bardziej-zlozonych funkcji (bo wypisywanie czegos jak robili printa, print etc to jest zlozona rzecz) 21:49 <@Gynvael> int 1 - print 21:49 <@Gynvael> int 2 - printa 21:49 <@Gynvael> niech tak bedzie ok ? ;> ok 21:49 <@Gynvael> wiec przyklad 21:49 <@Gynvael> a 21:49 <@Gynvael> int 1 - print.. 21:49 <@Gynvael> tam trzeba umysl podac 21:49 <@Gynvael> niech nie bedzie trzeba 21:49 -!- Necrium [~healscrea@healscream.siec.idealan.pl] has quit [Quit: Na sen mnie ciagnie ;/] 21:49 <@Gynvael> umysl... niech to bedzie "rejestr", lepiej brzmi 21:49 <@Gynvael> zalozemy ze w int 1 wypisuje tylko wartosc rejestru "eax" 21:50 <@Gynvael> a int 2 wartosci rejestrow "eax" "ebx" "ecx" "edx" 21:50 <@Gynvael> wiec 21:50 <@Gynvael> przyklad: 21:50 <@Gynvael> mov eax, 10 21:50 <@Gynvael> int 1 21:50 <@Gynvael> to wypisze "10" 21:50 <@Gynvael> a teraz 21:50 <@Gynvael> mov eax, 1 21:50 <@Gynvael> mov ebx, 2 21:50 <@Gynvael> mov ecx, 3 21:50 <@Gynvael> mov edx, 4 21:50 <@Gynvael> int 2 21:50 <@Gynvael> to wypisze "1" "2" "3" "4" 21:50 <@Gynvael> proste ne ? 21:50 <@Gynvael> to teraz cos dla was ;> 21:50 <@Gynvael> mov ebx, 10 21:50 <@Gynvael> mov eax, ebx 21:51 <@Gynvael> inc eax 21:51 <@Gynvael> inc ebx 21:51 <@Gynvael> int 1 21:51 <@Gynvael> mov eax, ebx 21:51 <@Gynvael> int 1 21:51 <@Gynvael> koniec ;> 21:53 <@Gynvael> ok 21:53 <@Gynvael> dostalem sporo privow z odpowiedziami 21:53 <@Gynvael> ofc zostanie wypisane "11" "11" 21:55 <@Gynvael> ok 21:55 <@Gynvael> lecimy dalej 21:55 <@Gynvael> teraz dodam jeszcze jedna instrukcje 21:55 <@Gynvael> nazywa sie "loop" 21:55 <@Gynvael> po angisleku to "petla" 21:55 <@Gynvael> loop jako parametr bedzie przyjmowac NUMER INSTRUKCJI 21:55 <@Gynvael> przykladowo: 21:56 <@Gynvael> (btw liczmy od 0) 21:56 <@Gynvael> po lewej pisze numery instrukcji 21:56 <@Gynvael> 0 mov eax, 10 21:56 <@Gynvael> 1 inc eax 21:56 <@Gynvael> 2 mov ecx, 0 21:56 <@Gynvael> 3 loop 0 21:56 <@Gynvael> jak bedzie dzialal moj loop ? 21:56 <@Gynvael> tak ze: 21:56 <@Gynvael> jesli ecx == 0, to nic nie robi, tak jak by tej instrukcji nie bylo 21:57 <@Gynvael> (np tak jak w przypadku wyzej) 21:57 <@Gynvael> a jesli ecx jest wieksze od 0, to wtedy zmniejsza jego wartosc o 1 (robi ecx = ecx -1) i idzie na instrukcje o numerze podanym w argumencie 21:57 <@Gynvael> przykladowo: 21:57 <@Gynvael> 0 mov ecx, 3 21:57 <@Gynvael> 1 mov eax, ecx 21:57 <@Gynvael> 2 int 1 21:57 <@Gynvael> 3 loop 0 21:57 <@Gynvael> ten program wypisze: "3" "2" "1" 21:58 -!- sfistack [~superb@azr230.neoplus.adsl.tpnet.pl] has joined #wyklady 21:58 <@Gynvael> ok 21:58 <@Gynvael> rozumiem ze to zrozumiale ? 21:58 <@Gynvael> (re sfistack ;>) 21:58 -!- mode/#wyklady [-m] by Gynvael 21:58 < Blizzard> ;] 21:58 <@Gynvael> czy ten moj "loop" jest zrozumialy ? 21:58 <@Gynvael> ;> 21:58 < Blizzard> ja nie czaje 21:58 < mulander> petla wykonuje poprzednia instrukcje ? 21:58 < Blizzard> tego loopa 21:58 < mulander> czyli int 1? 21:58 < phoenix__> ja tez nie czaje\ 21:59 < G0blin> ja tak srednio :P 21:59 <@Gynvael> mulander: nie poprzednia, tam wyzej jest "loop 0" czyli skacze na "instrukcje 0" czyli 21:59 <@Gynvael> -=215737=- <@Gynvael> 0 mov ecx, 3 21:59 < mulander> a ecx to sprawdzany warunek ? 21:59 <@Gynvael> na to 21:59 < qtez> Gynvael: ludzie nie czaja, bo nie wspomniales co to ecx, ze to licznik petli itp... 21:59 < G0blin> Gynvael: 21:59 <@Gynvael> qtez: hehe bo nie mam zamiaru narazie o tym mowic 21:59 <@Gynvael> ;> 21:59 < G0blin> loop 3 21:59 <@Gynvael> ok 21:59 < mulander> hmm gynvael czyli on wykonuje od podanej instrukcji wszystkie instrukcje az do loop i sprawdza warunek ? 21:59 < G0blin> skacze do 3 czy do 0 ? 21:59 * Blizzard EJ CICHO 21:59 <@Gynvael> G0blin: tak 21:59 < qtez> mulander loop 0 = reapat .....tu instrukcje.... until ecx=0; 21:59 <@Gynvael> dokladnie tak 21:59 < Blizzard> niech powie jeszcze raz i dokladniej; 21:59 <@Gynvael> ok 21:59 <@Gynvael> jeszcze raz 21:59 -!- mode/#wyklady [+m] by Gynvael 21:59 <@Gynvael> ok 21:59 <@Gynvael> wiec 21:59 <@Gynvael> nowa instrukcja jest loop 22:00 <@Gynvael> loop ma jeden parametr 22:00 <@Gynvael> np 22:00 <@Gynvael> loop 1 22:00 <@Gynvael> loop 5 22:00 <@Gynvael> loop 0 22:00 <@Gynvael> to jest NUMER INSTRUKCJI OD POCZATKU NASZEGO PROGRAMU 22:00 <@Gynvael> przykladowo: 22:00 <@Gynvael> mov eax, 10 22:00 <@Gynvael> int 1 22:00 <@Gynvael> add eax, 2 22:00 <@Gynvael> tutaj mov eax, 10 jest zerowa instrukcja (0) 22:00 <@Gynvael> int 1 jest pierwsze instrukcja (1) 22:00 <@Gynvael> a add eax, 2 jest druga instrukcja (2) 22:01 <@Gynvael> proste ne ? 22:01 <@Gynvael> takie tam numerowanie instrukcji w programie 22:01 <@Gynvael> ok 22:01 <@Gynvael> teraz tak 22:01 <@Gynvael> loop dziala na dwa sposoby 22:01 <@Gynvael> w zaleznosci o tego ile wynosci "ecx" 22:01 <@Gynvael> czemu "ecx" ? 22:01 <@Gynvael> bo mi sie tak podoba ;> 22:02 <@Gynvael> i teraz tak 22:02 <@Gynvael> JESLI ecx jest rowne 0 22:02 <@Gynvael> to loop NIE ROBI NIC 22:02 <@Gynvael> kompletnie nic 22:02 <@Gynvael> ignorujemy 22:02 <@Gynvael> jak gdyby jej nei bylo 22:02 <@Gynvael> ale jesli ecx jest WIEKSZE OD 0 22:02 <@Gynvael> to wtedy loop robi 2 rzeczy: 22:03 <@Gynvael> 1) ecx = ecx - 1 (odejmowanie, bo mi sie tak podoba) 22:03 <@Gynvael> 2) skacze (tj wykonanie programu przechodzi do instrukcji) o numerze podanym w parametrze 22:03 <@Gynvael> np loop 0 skoczy do ZEROWEJ instrukcji (czyli tej na gorze) 22:03 -!- qtez [1000@Bot.Underground] has quit [Ping timeout: 180 seconds] 22:03 <@Gynvael> i program leci dalej normalnie od tej 0rowej instrukcji 22:03 <@Gynvael> teraz tak 22:03 <@Gynvael> w C mozna by to zapisac: 22:04 <@Gynvael> int ecx = 3; 22:04 <@Gynvael> do { 22:04 <@Gynvael> tutaj instrukcje 22:04 <@Gynvael> if( ecx == 0 ) break; 22:04 <@Gynvael> ecx--; 22:04 <@Gynvael> } while(1); 22:04 <@Gynvael> czyli 22:04 <@Gynvael> przykladowo program w naszym asmie 22:04 <@Gynvael> mov ecx, 2 22:05 <@Gynvael> mov eax, ecx 22:05 <@Gynvael> int 1 22:05 <@Gynvael> loop 1 22:05 <@Gynvael> bedzie dzialal tak: 22:05 <@Gynvael> mov ecx, 2 (ecx = 2) 22:05 <@Gynvael> mov eax, ecx (eax = ecx, eax = 2) 22:05 <@Gynvael> int 1 (wypisuje eax, "2") 22:06 <@Gynvael> loop 1 (ecx > 0 ? tak.. ecx = 2.. zmniejsza.. ecx = 1.. skacze do instrukcji numer 1.. czyli do mov eax, ecx) 22:06 <@Gynvael> wiec dalej 22:06 <@Gynvael> mov eax, ecx (eax = ecx, eax = 1) 22:06 <@Gynvael> int 1 (wypisuje "1") 22:07 <@Gynvael> loop 1 (ecx > 0 ? tak... ecx = 1, zmniejszamy, ecx = 0, skok do instrukcji numer 1) 22:07 <@Gynvael> mov eax, ecx ( eax = 0) 22:07 <@Gynvael> int 1 ("0") 22:07 <@Gynvael> loop 1 (ecx > 0 ? nie ? nic nie robimy) 22:07 <@Gynvael> koniec programu 22:08 -!- qtez [1000@Bot.Underground] has joined #wyklady 22:08 <@Gynvael> ok 22:08 <@Gynvael> teraz 22:08 <@Gynvael> czy to zrozumiale 22:08 <@Gynvael> a to zobaczymy 22:08 <@Gynvael> przykladzik dla was 22:08 <@Gynvael> mov ebx, 5 22:08 <@Gynvael> mov ecx, ebx 22:08 <@Gynvael> mov eax, ecx 22:09 <@Gynvael> add eax, ebx 22:09 <@Gynvael> int 1 22:09 <@Gynvael> loop 2 22:09 <@Gynvael> koniec 22:09 <@Gynvael> odpowiedzi sie spodziewam ofc na privie 22:09 <@Gynvael> i drugie zadanko odrazu ;> 22:09 <@Gynvael> co sie stanie 22:09 <@Gynvael> jak odpalimy nastepujacy kod 22:09 <@Gynvael> loop 0 22:09 <@Gynvael> koniec 22:13 <@Gynvael> drugie zadanie troche zmienie 22:13 <@Gynvael> bo jest niejasne do konca 22:14 <@Gynvael> niech bedzie 22:14 <@Gynvael> mov ecx, 1 22:14 <@Gynvael> loop 0 22:14 <@Gynvael> ;> 22:14 <@Gynvael> co sie stanie jak to sie odpali 22:14 <@Gynvael> w pierwszej wersji zadanka drugiego nie do konca jest jasne ile wynosi ecx 22:14 <@Gynvael> jasne jest jedynie ze ecx == 0 po tej petli ;> 22:15 <@Gynvael> dwie dobre odpowiedzi na pierwsze zadanko 22:20 <@Gynvael> ok 22:20 <@Gynvael> dobra 22:20 <@Gynvael> teraz wersja oficjalna 22:21 <@Gynvael> jako ze sie uparlem ze moj loop bedzie najpierw sprawdzal 22:21 <@Gynvael> a potem robil ecx -= 1 22:21 <@Gynvael> wiec program nr 1 zadziala tak: 22:21 <@Gynvael> "10" "9" "8" "7" "6" "5" 22:22 <@Gynvael> dlaczego ? 22:22 <@Gynvael> po kolei 22:22 <@Gynvael> (eax = ?, ebx = ?, ecx = ?) poczatek 22:22 <@Gynvael> mov ebx, 5 22:22 <@Gynvael> (eax = ?, ebx = 5, ecx = ?) 22:22 <@Gynvael> mov ecx, ebx 22:22 <@Gynvael> (eax = ?, ebx = 5, ecx = 5) 22:22 <@Gynvael> mov eax, ecx 22:22 <@Gynvael> (eax = 5, ebx = 5, ecx = 5) 22:23 <@Gynvael> add eax, ebx 22:23 <@Gynvael> (eax = 10, ebx = 5, ecx = 5) 22:23 <@Gynvael> int 1 -> "10" 22:23 <@Gynvael> loop 2.. ecx > 0.. ecx -= 1.. 22:23 <@Gynvael> (eax = 10, ebx = 5, ecx = 4) 22:23 -!- phoe [1011@bxt232.neoplus.adsl.tpnet.pl] has quit [Ping timeout: 240 seconds] 22:23 <@Gynvael> mov eax, ecx 22:23 <@Gynvael> (eax = 4, ebx = 5, ecx = 4) 22:23 <@Gynvael> add eax, ebx 22:23 <@Gynvael> (eax = 9, ebx = 5, ecx = 4) 22:23 <@Gynvael> int 1 -> "9" 22:24 <@Gynvael> loop 2.. ecx > 0.. ecx -= 1... 22:24 <@Gynvael> (eax = 9, ebx = 5, ecx = 3) 22:24 <@Gynvael> ... 22:24 <@Gynvael> .. 22:24 <@Gynvael> ... 22:24 <@Gynvael> (eax = 6, ebx = 5, ecx = 1) 22:24 <@Gynvael> loop 2.. ecx > 0.. ecx -= 1... 22:24 <@Gynvael> (eax = 6, ebx = 5, ecx = 0) 22:24 <@Gynvael> mov eax, ecx 22:24 <@Gynvael> (eax = 0, ebx = 5, ecx = 0) 22:24 <@Gynvael> add eax, ebx 22:24 <@Gynvael> (eax = 5, ebx = 5, ecx = 0) 22:24 <@Gynvael> int 1 -> "5" 22:25 <@Gynvael> loop 2.. ecx > 0 ? neee, nie prawdziwe 22:25 <@Gynvael> koniec 22:26 <@Gynvael> ok 22:26 <@Gynvael> koniec 22:26 <@Gynvael> i teraz 22:26 <@Gynvael> czy to jest jasne ? 22:26 -!- mode/#wyklady [-m] by Gynvael 22:26 < G0blin> w miare 22:26 < qtez> tak 22:26 < sfistack> calkowicie 22:26 < sfistack> ;] 22:26 < mulander> ecx zawsze sluzy jako warunek dla loop ? 22:26 < G0blin> to chyba wymaga cwiczen, zeby sie przetrzec 22:26 <@Gynvael> mulander: tak 22:26 < G0blin> mulander: yo :] 22:26 < mulander> elo G0blin 22:26 < G0blin> sfistack: hi 22:26 < G0blin> :] 22:27 < Blizzard> boszz ja to zupelnie inaczej zrozumialem:P 22:27 < Blizzard> eeh;] 22:27 <@Gynvael> ok 22:27 < Blizzard> to co moze przejdziemy do c/c++:D? 22:27 <@Gynvael> ale to kwestia wprawy 22:27 < Blizzard> heheh 22:27 <@Gynvael> ;ppppp 22:27 < nekrataal> mi sie tam podoba ^^ 22:27 < G0blin> Blizzard: gyn nie uczy c++ :P 22:27 < Blizzard> G0blin: c/c++ 22:27 < Blizzard> slepy??!!? 22:27 < Blizzard> moze nie uczyc 22:28 <@Gynvael> ok 22:28 <@Gynvael> lecimy ;> 22:28 < Blizzard> ale ja ucze sie c++;p a nie c;] 22:28 < G0blin> Blizzard: gyn chyba raczej ansi c 22:28 -!- mode/#wyklady [+nt] 22:28 -!- Channel #wyklady created Sat Sep 17 21:15:58 2005 22:28 < Blizzard> dobra nvm 22:28 -!- mode/#wyklady [+m] by Gynvael 22:28 <@Gynvael> ok 22:28 <@Gynvael> lecimy dalej 22:28 <@Gynvael> teraz tak 22:28 <@Gynvael> skoro to loop tyle kontrowersji wzbudzilo 22:28 <@Gynvael> to zmienmy dwie rzeczy 22:28 <@Gynvael> po pierwsze 22:28 <@Gynvael> teraz bylo 22:28 <@Gynvael> jesli ecx > 0.. to zmniejsz ecx... 22:29 <@Gynvael> a teraz niech bedzie 22:29 <@Gynvael> zmniejsz ecx.. jesli ecx > 0 22:29 <@Gynvael> tak jest latwiej chyba zrozumiec ne ? 22:29 <@Gynvael> to raz 22:29 <@Gynvael> a dwa, to ten numerek tam to zly pomysl (uff, na szczescie tworcy asmow tez na to wpadli) 22:29 <@Gynvael> wiec zamiast tego damy tam nazwe, etykietke 22:29 <@Gynvael> etykietke zaznaczymy tak: 22:29 <@Gynvael> etykietka: 22:29 <@Gynvael> np 22:29 <@Gynvael> mov ecx, 3 22:30 <@Gynvael> petla: 22:30 <@Gynvael> mov eax, ecx 22:30 <@Gynvael> loop petla 22:30 <@Gynvael> i wg "nowych" zasad 22:30 <@Gynvael> program sie wykona tak: 22:30 <@Gynvael> mov ecx, 3 (ecx = 3) 22:30 <@Gynvael> mov eax, ecx (eax = 3, ecx = 3) 22:30 <@Gynvael> loop petla (ecx -= 1, ecx = 2, ecx > 0? ta...) 22:30 <@Gynvael> mov eax, ecx (eax = 2, ecx = 2) 22:31 <@Gynvael> loop petla (ecx -= 1, ecx = 1, ecx > 0? ta...) 22:31 <@Gynvael> mov eax, ecx (eax = 1, ecx = 1) 22:31 <@Gynvael> loop petla (ecx -= 1, ecx = 0, ecx > 0? nie) 22:31 <@Gynvael> koniec 22:31 <@Gynvael> latwiejsze ne ? 22:31 <@Gynvael> dobra 22:31 <@Gynvael> krok po kroku dotarlismy do prawdziwego wygladu assemblera 22:31 <@Gynvael> czyli wlasnie tego co jest wyzej 22:31 <@Gynvael> forma "cyferkowa", czyli to o czym mowilem na poczatku (liczby zamiast instrukcji) 22:32 <@Gynvael> to tak zak zwany kod maszynowy, binarka albo OPCODES (opkody) 22:32 <@Gynvael> to jest to co rozoumie procek 22:32 <@Gynvael> to co my rozumiemy 22:32 <@Gynvael> to mnemoniki (mov, loop, add, etc) 22:33 <@Gynvael> rejestry ktorymi bawilismy sie wyzej 22:33 <@Gynvael> to 32bitowe zmienne (o nieokreslonym typie) 22:33 <@Gynvael> mnemonikow jest wpisdu i jeszcze troche 22:34 <@Gynvael> my sie bawilismy 5cioma (mov, add, inc, int, loop) 22:34 <@Gynvael> teraz tak 22:34 <@Gynvael> maly przykladowy programik 22:34 <@Gynvael> ktory sobei pod linem wykonamy 22:35 <@Gynvael> (w8 na serv wecpne) 22:36 <@Gynvael> http://gynvael.vexillium.org/hello.asm 22:36 <@Gynvael> to typowy hello world pod linuxa 22:36 <@Gynvael> kompiluje sie tak: 22:36 <@Gynvael> nasm hello.asm -f elf -o hello.o 22:36 <@Gynvael> ld hello.o -o hello 22:37 <@Gynvael> a odpala 22:37 <@Gynvael> ./hello 22:37 <@Gynvael> za chwile wytlumacze co jest co podczas kompilacji 22:37 <@Gynvael> narazie skompilujcie i odpalcie 22:37 <@Gynvael> (programik jest ze stronki http://docs.cs.up.ac.za/programming/asm/derick_tut/ btw) 22:37 <@Gynvael> root@yume:~# nasm hello.asm -f elf 22:37 <@Gynvael> root@yume:~# ld hello.o 22:37 <@Gynvael> root@yume:~# ./a.out 22:37 <@Gynvael> Hello world! 22:37 <@Gynvael> u mnei dziala 22:38 <@Gynvael> napiszcie czy u was tez ;> 22:38 -!- mode/#wyklady [-m] by Gynvael 22:38 < qtez> dziala 22:38 < phoenix__> dziala 22:39 < qtez> Gynvael: w dosie stringa konczylo sie zerem, w linuxie tego nie ma? 22:39 < phoenix__> qtez: ty umiesz asna ? 22:39 < phoenix__> *asma? 22:39 < qtez> phoenix__: jedynie podstawy 22:39 <@Gynvael> qtez: w dosie sie konczylo $ ;p 22:40 <@Gynvael> qtez: to jest umowne czym sie stringa konczy 22:40 <@Gynvael> qtez: ogolnie konczy sie tym czym ty chcesz ;> 22:40 <@Gynvael> ok 22:40 <@Gynvael> lecimy dalej 22:40 -!- mode/#wyklady [+m] by Gynvael 22:40 <@Gynvael> ok 22:40 <@Gynvael> teraz co jest co 22:41 <@Gynvael> najpierw kompilacja 22:41 <@Gynvael> nasm hello.asm -f elf 22:41 <@Gynvael> nasm to ofc nazwa asemblera (o dziwo "kompilator" w asmie nie nazwya sie kompilatorem, tylko asemblerem ;>) 22:41 <@Gynvael> hello.asm to plik zrodlowy ofc 22:41 <@Gynvael> -f elf... 22:42 <@Gynvael> nasm umie kompilowac do paru wyjsciowych plikow 22:42 <@Gynvael> defaultowo kompiluje kod do postaci czystego kodu maszynowego, zadnych opakowan etc 22:42 <@Gynvael> -f elf powoduje ze nasm tworzy plik obiektowy (.o) (taki jak gcc uzywa) 22:42 <@Gynvael> (odrazu mowie ze pod winda obowiazuja inne pliki obiektowe, mianowicie COOF a nie ELF jak podlinuxem) 22:43 <@Gynvael> ld hello.o -o hello 22:43 <@Gynvael> to linkuje (tworzy z obiektu exeka w skrocie ;) 22:43 <@Gynvael> hello.o do hello 22:43 <@Gynvael> hello to nasza binarka 22:43 <@Gynvael> -o jak w gcc dziala 22:44 <@Gynvael> (na privie mnie napadli ;p ze mam powiedzie ze ELF to nie tylko na linuxie, ale tez na unixach wszelkiej masci) 22:44 <@Gynvael> ok 22:44 <@Gynvael> to tyle 22:44 <@Gynvael> teraz o samym kodzie 22:44 <@Gynvael> bo oprocz mnemonikow to tam jestr sporo smieci 22:45 <@Gynvael> napierw 3 slowa o plikach wykonywalnych 22:45 <@Gynvael> (za rowno exekach windowsowych jak i linuxowych) 22:45 <@Gynvael> pliki te podzielone sa na SEKCJE 22:45 <@Gynvael> zazwyczaj 3, ale powiem o 2ch teraz 22:45 <@Gynvael> SEKCJA KODU (tam sa te opkody/mnemoniki).. nazywa sie zazwyczaj .text (tak, z kropka na poczatku) 22:46 <@Gynvael> SEKCJA DANYCH (tam tylko dane, kodu nie mozna tam wykonac bo OS sie wkurzy).. zazwyczaj .data 22:47 <@Gynvael> w netwide asmie 22:47 -!- phoe [1011@byv149.neoplus.adsl.tpnet.pl] has joined #wyklady 22:47 <@Gynvael> wybieramy do ktorej sekcji ma byc cos zapisane za pomoca DYREKTYWY ASEMBLERA "section NAZWA" 22:47 <@Gynvael> np. section .text 22:47 <@Gynvael> section .data 22:47 <@Gynvael> w hello.asm pierwsze 2 linie trafia (po przetlumaczeniu) do sekcji danych 22:48 <@Gynvael> a reszta do sekcji kodu 22:48 <@Gynvael> teraz tak 22:48 <@Gynvael> najpierw sekcja danych 22:48 <@Gynvael> widzicie tam pewnie konstrukcje 22:48 <@Gynvael> etykietka: db costam 22:49 <@Gynvael> eytkietka to po prostu TEXTOWE OZNACZENIA ADRESU DANEJ RZECZY W SKOMPILOWANYM KODZIE ;> 22:49 <@Gynvael> czyli ADRES TEGO CO JEST PO NIEJ 22:49 <@Gynvael> hello: db 'Hello world!',10 22:49 <@Gynvael> np tutaj hello jest adresem stringu "Hello wordl!\n" 22:49 <@Gynvael> *world 22:50 <@Gynvael> to 10 na koncu to \n ktore znacie z C 22:50 <@Gynvael> teraz tak 22:50 <@Gynvael> db to NIE JEST MNEMONIK 22:50 <@Gynvael> to jest ogolnie rzecz biorac jedna z predefiniowanych funkcji nasma ktore sluza do zapisania czegos w to miejsce tak jak jest 22:50 <@Gynvael> np 22:50 <@Gynvael> db 'Hello world!' zapisze w to meijsce w sekcji po prostu Hello world! 22:51 <@Gynvael> czyli 22:51 <@Gynvael> hello: db 'Hello world!', 10 22:51 <@Gynvael> to jest: 22:51 <@Gynvael> w sekcji .data string Hello world!\n 22:51 <@Gynvael> (nie ma \0, o tym za chwile) 22:51 <@Gynvael> i adresem tego stringu jest etykieta "hello" ktorej potem mozna uzywac 22:51 <@Gynvael> (nei jest ona potrzeba, ale choleeeeernie ulatwia zycie) 22:52 <@Gynvael> helloLen: equ $-hello 22:52 <@Gynvael> helloLen: to ofc etykietka 22:52 <@Gynvael> equ $-hello to makro kolejne 22:52 <@Gynvael> mianowicie w to miejsce zostanie wstawiona wartosc wyrazenia 22:52 <@Gynvael> $-hello 22:52 <@Gynvael> co to za pierunstwo ? 22:53 <@Gynvael> $ to ADRES POCZATKU TEJ LINII W SKOMPILOWANYM KODZIE (rownie dobrze zamiast $ mozna by uzywc W TYM WYPADKU helloLen, jako ze to tez jest adres poczatku linii) 22:53 <@Gynvael> hello to etykietka poznana wyazej 22:53 <@Gynvael> czyli to jest MIEJSCE_OBECNE - POCZATEK 22:53 <@Gynvael> czyli w sumie jest to wielkosc "kodu/danych" od poczatku do obecnego miejsca 22:53 <@Gynvael> czyli dlugosc stringu Hello world!\n 22:54 <@Gynvael> (czyli 13 ;p) 22:54 <@Gynvael> dolkadnie to samo by zrobilo dd 13 22:54 <@Gynvael> ale to equ jest bardziej haxxorskie ;> 22:54 <@Gynvael> ok 22:54 <@Gynvael> tyle o sekcji danych 22:54 <@Gynvael> (spoko, zalapiecie to pozniej ;>) 22:54 <@Gynvael> section .text global _start 22:54 <@Gynvael> _start: 22:54 <@Gynvael> eh... 22:54 <@Gynvael> section .text 22:54 <@Gynvael> global _start 22:54 <@Gynvael> _start: 22:55 <@Gynvael> te 3 linijki to poczatek sekcji .text 22:55 <@Gynvael> global _start mowi "pozwol linkerowi wiedziec co to jest _start" (linker domyslnie ustawia poczatek wykonania execa na taka etykiete) 22:55 <@Gynvael> _start: to po prostu etykietka start 22:55 <@Gynvael> ;> 22:55 <@Gynvael> potem jest cos co znacie 22:55 <@Gynvael> czyli: 22:55 <@Gynvael> mov eax, 4 22:56 <@Gynvael> mov ebx, 1 22:56 <@Gynvael> mov ecx, hello 22:56 <@Gynvael> mov edx, helloLen 22:56 <@Gynvael> (a troche sklamalem wczesniej, dd 13 by troche inaczej zadzialalo 22:57 <@Gynvael> (helloLen: equ costam, to w zasadzie jest (jak by na C przelozyc) #define helloLen 13) 22:57 <@Gynvael> czyli 22:57 <@Gynvael> mov eax, 4 22:57 <@Gynvael> mov ebx, 1 22:57 <@Gynvael> mov ecx, ADRES "Hello World!\n" 22:57 <@Gynvael> mov edx, DLUGOSC TEGO WYZEJ CZYLI 13 22:57 <@Gynvael> int 80h 22:57 <@Gynvael> ok 22:57 <@Gynvael> teraz tak 22:57 <@Gynvael> o ile ecx i edx mozna zrozumiec 22:57 <@Gynvael> to po co eax = 4 i ebx = 1? 22:58 <@Gynvael> http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html 22:58 <@Gynvael> to sa tak zwane syscale 22:58 <@Gynvael> w skrocie chodzi o to 22:58 <@Gynvael> ze w EAX wstawia sie NUMER FUNKCJI KERNELA LINUXA 22:58 <@Gynvael> a w reszte rejestrow parametry 22:59 <@Gynvael> znajdzmy funkcje numer "4" (mov eax, 4 jest w kodzie) w tej tablei 22:59 <@Gynvael> 4 sys_write 23:00 <@Gynvael> czyli jest to funkcja piszaca 23:00 <@Gynvael> ogolnie to piszaca do pliku ;> 23:00 <@Gynvael> jakos tak sie sklada ze w EBX powinien byc "handle" do pliku.. 23:00 <@Gynvael> i jakos tak sie sklada ze "1" to jest tzw STDOUT, czyli Standardowe Wyjscie 23:00 <@Gynvael> czyli na "chlopski rozum" po prostu ekran ;> 23:00 <@Gynvael> czyli 23:01 <@Gynvael> a, int 80h to jest odpalenie funkcji kernela (ktora sobie sprawdza eax i wywoluje odpowiednia funkcje) 23:01 <@Gynvael> cyzli.. 23:01 <@Gynvael> te 5 linii to jest 23:02 <@Gynvael> wypisanie (eax = 4 -> sys_write) na ekran (ebx = 1 -> STDOUT) napisu Hello World!\n (mov ecx, hello) ktorego dlugosc (tego co chcemy wypisac) wynosi 13 (mov edx, helloLen) 23:02 <@Gynvael> tyle o tych pieciu liniach 23:03 <@Gynvael> nastepne 3 liniie 23:03 <@Gynvael> mov eax, 1 23:03 <@Gynvael> mov ebx, 0 23:03 <@Gynvael> int 80h 23:03 <@Gynvael> http://docs.cs.up.ac.za/programming/asm/derick_tut/syscalls.html 23:03 <@Gynvael> wg tego eax == 1 to 23:03 <@Gynvael> sys_exit 23:03 <@Gynvael> a w ebx przyjmuje KOD WYJSCIA (o tym bylo na #1 albo #2 z C) 23:04 -!- nekrataal [~nekrataal@doer.ussta.ssinjin.streea] has quit [Quit: damn] 23:04 <@Gynvael> czyli to wywoluje funkcje kernel (int 80h) sys_exit (mov eax, 1 -> sys_exit) z kodem wyjscia 0 (mov ebx, 0) 23:04 <@Gynvael> teraz tak 23:04 <@Gynvael> asm jest PROSTY 23:04 <@Gynvael> czyli kazda operacje trzeba ROZKLADAC NA CZYNNIKI PIERWSZE 23:05 <@Gynvael> nie mozna po prostu zrobic 23:05 <@Gynvael> mov ecx, "ala ma kota" 23:05 <@Gynvael> ani 23:05 <@Gynvael> mov ecx, db 'ala ma kota' 23:05 <@Gynvael> trzeba napierw gdzies w pameici umiescuc ten string 23:05 <@Gynvael> a potem podac w ecx adres do niego 23:05 <@Gynvael> ok 23:06 <@Gynvael> teraz tak 23:06 <@Gynvael> w sumie 2h wyklad trwa 23:06 <@Gynvael> wiec na dzisiaj prawie ze koniec 23:06 <@Gynvael> wiem ze duzo teorii i wstepu 23:06 <@Gynvael> ale coz, sadze ze to bylo konieczne 23:07 <@Gynvael> teraz pytanka 23:07 <@Gynvael> a za tydzien czesc druga 23:07 <@Gynvael> na ktorej malo teorii 23:07 <@Gynvael> a duzo praktyki 23:07 -!- mode/#wyklady [-m] by Gynvael 23:07 <@Gynvael> pytanka ? 23:07 < mulander> jedno pytanie jezeli ecx zawsze sluzy jako licznik loop 23:07 < qtez> Gynvael: wszystko ladnie wytlumaczyles i ja qmam, a poza tym komentarze mowia duzo w tym kodzie i chyba kazdy kapuje. Ale powiedz nam, jak wyswietla sie zawartosc rejestru? czy to za trudne dla nas na ten etap kursu? chce wiedziec z ciekawosci :D 23:08 < mulander> jedno pytanie jezeli ecx zawsze sluzy jako licznik loop, a w tym wypadku przypisujemy do ecx jeden z parametrow sys_write, to co sie stanie jezeli oznaczymy mov eax 4 za pomoca etykiety do ktorej potem odwola sie loop ? 23:08 < phoenix__> Gynvael: na pirv ci cos zadam 23:08 <@Gynvael> qtez: hehe wiec tak: trzeba zrobic sobei funkcje ktora wartosc rejestru przekonwersuje z liczbowej na string, a potem wypisac ten string po prostu 23:08 < qtez> mulander: mozna go odrzucic na stos przez instrukcje 'push' ktora poznasz za tydzien :P 23:08 <@Gynvael> qtez: o tym za tydzien, to jest troszke pytania 23:09 < mulander> qtez: i przed kazda iteracja musze go zrzucic ze stosu ? pop ? aby petla mogla sprawdzic warunek ? 23:09 <@Gynvael> mulander: loop w sumie zadko sie uzywa, to raz, dwa, mozna sobie przepisac wartosc ecx na chwile np do esi albo edi, i potem przywrocic 23:09 < qtez> mulander: tak 23:09 <@Gynvael> mulander: mozna zrobic push i pop jak qtez proponuje 23:09 <@Gynvael> np 23:09 < phoenix__> Gynvael: to odpowiesz? 23:09 <@Gynvael> mov ecx, 10 23:09 <@Gynvael> etykieta: 23:09 < phoenix__> czy nie wiesz? 23:09 <@Gynvael> push ecx 23:09 <@Gynvael> tutaj operacje na ecx 23:09 <@Gynvael> pop ecx 23:09 <@Gynvael> loop etykieta 23:09 < mulander> bajka. 23:10 < mulander> jest mozliwosc dostepu do pierwszego elementu stosu ? 23:10 <@Gynvael> mulander: jest bardzo prosta 23:10 < mulander> cos w rodzaju perlowego shift/unshift ? 23:10 <@Gynvael> mulander: rejestr ESP pokazuje ostatni pusniety element 23:10 <@Gynvael> mulander: mozna zrobic np mov eax, [esp] ( to na C eax = *esp) 23:10 <@Gynvael> mulander: albo np mov eax, [esp+16] (ale o stosie za tydzien 23:10 < mulander> i wtedy mamy wskaznik bezposrednio do tego elementu ? 23:10 <@Gynvael> tak 23:11 < mulander> dobra dzieki :) 23:11 < mulander> jeszcze jedno pytanko 23:11 < mulander> moge usunac element ze stosu poprzez wskaznik? :P 23:11 <@Gynvael> qtez: pokaze ci wypisanie rejestru pod winde, pod linuxa duzo mniej nie ma 23:11 <@Gynvael> mulander: mozesz zmienic wartosc rejestru esp (push i pop z niego korzystaja (m.in)) 23:11 <@Gynvael> mulander: stos to po prostu tablica intow 23:11 <@Gynvael> mulander: w C podam ci jak dokladnie stos dziala: 23:12 <@Gynvael> int stos[1000], *esp = &stos[999], *ebp = esp; 23:12 <@Gynvael> void push( int dane ) { esp++; *esp = dane; } 23:13 <@Gynvael> ee 23:13 <@Gynvael> void push( int dane ) { esp--; *esp = dane; } 23:13 <@Gynvael> tak ofc 23:13 < mulander> push dodaje ostatni element pop go usuwa, zastanawialem sie tylko czy wskaznik mozna wykonac pop/push na esp 23:13 <@Gynvael> int pop( void ) { esp++; return *(esp-1); } 23:13 < sfistack> ta 23:13 <@Gynvael> mozna 23:13 < sfistack> wyobrazcie sobie stos jako gore 23:13 < sfistack> i adresy ktore rosna w dol 23:13 < sfistack> wsio bedzie wtedy jasne 23:13 < sfistack> :P 23:13 <@Gynvael> po prostu nei mozna usuwac elementow ze srodka ;> 23:13 <@Gynvael> hehehe 23:13 <@Gynvael> mozna je nadpisac 23:13 <@Gynvael> mozna zminiec ich wartosc etc 23:14 <@Gynvael> btw 23:14 < mulander> tego chcialem sie dowiedziec. 23:14 <@Gynvael> wiedzie jak za czasow jakis tam slanych 8smiobitowcow (nie zadne atari 800xl tylko SLABE) 23:14 <@Gynvael> czyscilo sie szybko ekran ? 23:14 <@Gynvael> mov sp, koniec ekranu 23:14 <@Gynvael> mov cx, wielkosc ekranu 23:14 <@Gynvael> petla: 23:14 <@Gynvael> push 0 23:14 <@Gynvael> loop petla 23:14 <@Gynvael> ;p 23:15 <@Gynvael> (hehe to nam wykladowca z logiki algorytmicznej mowil) 23:15 < mulander> cx i sp to starsze odpowiedniki esp i ecx ? 23:15 <@Gynvael> tak 23:15 <@Gynvael> o cx bedzie 23:15 <@Gynvael> a o sp bedzie tez, ale jak o dosie bede nawijac 23:15 < mulander> ilo bitowy jest taki cx ? 23:16 <@Gynvael> qtez: http://gynvael.vexillium.org/?stuff=simple_conv.stuff 23:16 <@Gynvael> tam masz wypisanie wartosci rejestru pod winda 23:16 <@Gynvael> pare linijek roznicy jest na linie 23:16 <@Gynvael> mulander: cx ma 16 bitow, to jest DOKLADNIE ecx & 0xffff 23:16 <@Gynvael> ale o tym potem ;> 23:16 < qtez> Gynvael: thx 23:17 <@Gynvael> btw to w asmie mozna ofc szybciej napisac, ale to jest najprostszy sposob imho ;> 23:17 [Users #wyklady] 23:17 [@Gynvael ] [ G0blin ] [ phoe ] [ qtez ] [ seraphin] 23:17 [ Blizzard] [ mulander] [ phoenix__] [ rainrider] [ sfistack] 23:17 -!- Irssi: #wyklady: Total of 10 nicks [1 ops, 0 halfops, 0 voices, 9 normal] 23:17 < qtez> Gynvael: no co ja widze - rozwiazanie na 30 linijek zeby rejestr sobie na ekran rzucic :D 23:18 <@Gynvael> yep 23:18 <@Gynvael> tak to juz jest z asmem 23:18 <@Gynvael> tam czesc rzeczy jest wpisu prostsza niz w C 23:18 <@Gynvael> ale czesc jest trudniejsza 23:18 <@Gynvael> ;> 23:18 < qtez> tylko ze widze ze to raczej pod win 23:18 <@Gynvael> qtez: napisac ci to pod lina na szybko ? 23:19 < qtez> Gynvael: jesli mozesz, to tak 23:19 <@Gynvael> bo 90% z tego mozna skopiowac 23:19 <@Gynvael> ;> 23:19 <@Gynvael> ok 23:19 <@Gynvael> to w8 chwile 23:19 < qtez> Gynvael: chcialbym moc podczas pracy programu kontrolowac zawartosc rejestrow, a najprosciej robi sie to wywalajac je na ekran :) 23:19 <@Gynvael> ne 23:19 <@Gynvael> najprosciej to uzyc debuggera 23:19 < qtez> Gynvael: przyzwyczajenie z jezykow wyzszego poziomu :P 23:20 <@Gynvael> ttaaa 23:20 <@Gynvael> ;> 23:20 < mulander> pod dos'em tez wyknuje sie mov eax numer_sys_calla /* argumenty */ int 80h ? 23:20 <@Gynvael> najlepsza metoda debuga 23:20 <@Gynvael> print-it 23:20 < qtez> mulander: nie :) 23:20 <@Gynvael> mulander: prawie... mov ax, i nie int 80h a int 21h i 13h (to ostatnie to funkcje BIOSy) 23:20 <@Gynvael> (BIOSu) 23:20 <@Gynvael> czasem inne inty 23:21 < phoenix__> ;/ 23:21 < phoenix__> potem to przeczytan 23:21 < phoenix__> glupie SD 23:21 < phoenix__> popsulo mi kurs 23:21 <@Gynvael> ;p 23:21 -!- qtez is now known as unknow 23:21 < phoenix__> Gynvael: jakby co to sie potem odezwe 23:21 < phoenix__> unknow: ????? 23:21 < unknow> mulander: http://unkn0w.hopto.org/3/asm.tar 23:21 < mulander> hm eax jest 32 bitowy a ax 16 bitowy o ile dobrze zrozumialem, czyli dosa programujemy na 16 bitowych, ale pod win to juz pewnie eax ebx ecx i edx sie stosuje ? 23:21 < phoenix__> unknow: jak tam w SD? 23:22 <@Gynvael> mulander: tak 23:22 < unknow> mulander: http://unkn0w.hopto.org/3/asm.tar.bz2 <---porpawny adres 23:22 < unknow> mulander: tam amsz asma pod dosa kursik 23:22 <@Gynvael> mulander: z tym ze pod win nie uzywa sie intow (prawie wogoole) 23:22 < unknow> phoenix__: pozniej sprobuje, bo chcialem wykladu wysluchac :] 23:22 < unknow> phoenix__: jakiego typu pytania sa? 23:22 < phoenix__> unknow: trudne na mnie 23:22 < phoenix__> sieci 23:22 < mulander> unknow dziwne asm pod dosa spakowany tar.gz :P 23:22 < phoenix__> bradcasty dns itd 23:22 < mulander> to juz chyba twoja sprawka :> 23:23 < unknow> mulander: to kurs, a spakowany tar.bz2, bo jestem na linie :P 23:23 < phoenix__> unknow: radze w kilku robic bo samemu ciezko 23:23 < mulander> wiem smieje sie ;) 23:23 < phoenix__> tzn zeby ktos pomagal 23:23 < mulander> unknow: btw dzieki. 23:23 < phoenix__> unknow: albo takie pytanie i nie wiem 23:23 < phoenix__> Zaproponuj prawidłowe etapy audytu bezpieczeństwa. 23:23 < unknow> mulander: z tego sie uczylem daaaawno temu i nawet gierke tekstowa raz zaczalem pisac w asmie :D 23:23 < mulander> ja tak z ciekawosci :P 23:24 < mulander> perl to moj language of choice :P 23:24 < unknow> ok. ja lece to SD3 rozwiazac ;] 23:24 * unknow is away [SD3] 23:25 < unknow> phoenix__: jak tam sie zalogowac? :| 23:26 < phoenix__> ..../2etap i potem masz 20 minut na odpowiedzi 23:26 < phoenix__> ;/ 23:26 < phoenix__> unknow: mow jak ci idzie kk? 23:28 < unknow> Dla adresu 192.168.2.150/255.255.255.192 podaj inny typ zapisu 23:28 < unknow> kto to wie? 23:28 < unknow> :/ 23:29 < phoenix__> 0 koncowka 23:29 < phoenix__> ja tak zanzaczylem 23:29 < unknow> pytam kto wie :] 23:29 < phoenix__> bradcast? 23:29 <@Gynvael> unknow: http://gynvael.vexillium.org/wartosc.asm prosze 23:29 < unknow> Gynvael: pomozesz? 23:29 < unknow> Gynvael: Dla adresu 192.168.2.150/255.255.255.192 podaj inny typ zapisu 23:29 < phoenix__> unknow: o bradcast tam chodzi ? bo ja mialem bradcast i wyszlo ze 192.168.2.0 23:30 <@Gynvael> unknow: ee 192.168.2.150/q 23:30 <@Gynvael> e 23:30 <@Gynvael> w8 23:30 <@Gynvael> w8 23:30 <@Gynvael> w8 23:30 < unknow> Gynvael: /42 ?? 23:30 < unknow> a nie... nie wiem... 23:30 <@Gynvael> unknow: ee 192.168.2.150/26 23:30 <@Gynvael> tak imho 23:31 < unknow> czy transport strefy transportuje wersjee binda? 23:31 < unknow> moim zdaniem nie 23:31 <@Gynvael> nie mam pojecia 23:32 < unknow> dlugosc naglowka pakietu identyfikuje OS'a? 23:32 < unknow> moim zdaniem nie 23:32 < unknow> skanery na to nie aptrza 23:32 < unknow> p.s pakietu tcp ;) 23:32 <@Gynvael> dlugosc naglowka ? 23:32 <@Gynvael> a opcje 23:32 <@Gynvael> hmm 23:32 <@Gynvael> nie wime hehehe 23:34 < unknow> znacie programik do sniffowania w sieciach ze switchem? :D 23:35 <@Gynvael> e tam 23:35 <@Gynvael> swich to nie problem 23:35 <@Gynvael> zapychasz go arpami i dziala jak hub 23:35 <@Gynvael> co drugi program pewnie tak robi 23:35 <@Gynvael> jakies ethercapy etc 23:35 < unknow> Jaka jest ró?nica pomi?dzy zagro?eniem a podatno?ci? (poda? przyk?ady) w sieci komputerowej ? 23:35 < unknow> ;] 23:36 < phoenix__> unknow: te same pytania 23:36 < unknow> phoenix__: czesc otwarta wszyscy maja ta sama :P 23:36 < phoenix__> i te niektore tesh 23:37 < unknow> ja mialem errora w pytaniach :D 23:37 < unknow> 4x pod rzad zadalo mi to samo pytanie - LOL! 23:37 < unknow> ;] 23:37 <@Gynvael> lol 23:37 < phoenix__> fajnie 23:37 < unknow> cos czuje ze bede mial zaliczony ten etap.... buhehehehehe ;D 23:37 < phoenix__> unknow: za trudne ;/ na mnie 23:37 <@Gynvael> hmm 23:38 <@Gynvael> wrzuce logi na serv z wykladu.. a noz kogos zainteresuje