Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

sys calls

[es] :: Asembler :: sys calls

[ Pregleda: 5277 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

anatogen
Novi Beograd

Član broj: 1294
Poruke: 150
*.ppp-bg.sezampro.yu



Profil

icon sys calls17.12.2001. u 19:59 - pre 272 meseci
Ima li negde spiska svih sistemskih poziva (za linux) ali opisanih na nacin:
"U %eax stavis to u %ebx stavis to itd. pa u %eax se vraca to... "

vitamini, minerali, suplementi...
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.fwi.com



+1 Profil

icon Re: sys calls17.12.2001. u 23:20 - pre 272 meseci
Pa lepo u ebx ide prvi argument funkcije u ecx drugi u edx treci. U eax broj syscall-a i u eax se nalazi povratna vrednost a spisak svih systemskih poziva imas u /usr/include/sys/syscall.h (to je za BSD) a za linux /usr/include/linux/syscall.h ili tako nesto nemam Linux da proverim :) za to koji parametar koristi funkcija kucaj man
 
Odgovor na temu

anatogen
Novi Beograd

Član broj: 1294
Poruke: 150
*.ppp-bg.sezampro.yu



Profil

icon Re: sys calls17.12.2001. u 23:36 - pre 272 meseci
naravno u %eax ide broj sis poziva... pa redom...
sta li mi bi da postavljam glupazko pitanja nije mi jasno... mrtav nesto ovaj forum pa reko' ajd da pitam nesto... kreten...
vitamini, minerali, suplementi...
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.fwi.com



+1 Profil

icon Re: sys calls18.12.2001. u 21:06 - pre 272 meseci
Nije forum mrtav, nego nista niko ne pita. Ako mene pitas mrtav forum je onaj Art of exploitation (nadam se da nisam promasio spelling). To je forum koji bi trebalo ukinuti jel niko niti postuje niti ga iko cita :)

Ovaj forum je koristan, eto ti si postavio ovo pitanje ali neko ko nije znao je procitao i sad zna vise o tome. Inace pitanja u ovom forumu dobijaju jako brzo odogovre.
 
Odgovor na temu

anatogen
Novi Beograd

Član broj: 1294
Poruke: 150
*.ppp-bg.sezampro.yu



Profil

icon Re: sys calls18.12.2001. u 22:37 - pre 272 meseci
E, ne treba ukitati Art of exploitation posto cu za par meseci doci dotle pa mozda postujem nesto :)
ja bih otvorio forum linux kernel...
vitamini, minerali, suplementi...
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
165.139.17.*



+1 Profil

icon Re: sys calls19.12.2001. u 17:15 - pre 272 meseci
Ma Art of Exploitation treba ukinuti tu nema nikog, ako imas neko pitanje u vezi bug-a postujes u C ili assembler ili Reverse inzninjerstvo :)
 
Odgovor na temu

anatogen
Novi Beograd

Član broj: 1294
Poruke: 150
*.ppp-bg.sezampro.yu



Profil

icon Re: sys calls19.12.2001. u 22:51 - pre 272 meseci
Ovako na adresi http://www.linux.co.yu/forum/viewtopic.php?t=897 je pitanje na koje je odgovoren ali to vazi znaci za FILE* odnosno strimove koji sami po sebi imaju bafer ali kada ja uradim

movl $1, %ebx
movl $pointer_na_sring_koiji_se_ne_zavrsava_sa_\n, %ecx
movl $duzin_stringa, %edx
movl $4, %eax
int $0x80

ne pojavi se nista na ekranu, e sad to verovtno ima veze sa nekim baferom tty_a ali bih' ja nesto vise o tome pa ako ima neki link ili tako nesto?
hvala...
vitamini, minerali, suplementi...
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.fwi.com



+1 Profil

icon Re: sys calls23.12.2001. u 15:51 - pre 271 meseci
Citat:
anatogen:
movl $1, %ebx
movl $pointer_na_sring_koiji_se_ne_zavrsava_sa_\n, %ecx
movl $duzin_stringa, %edx
movl $4, %eax
int $0x80


Nema to veze sa bufferom, ovaj kod je potpuno ispravan :) sigurno ti pointer nije na dobar buffer, inace write() syscall zabole da li je string \n terminiran. Pogledaj ti malo u gdb da li predajes dobru adresu i probaj da implementiras ovaj kod u C vako:

Code:

int main(){
 char *string="siiiiiiineeeeee";
 int len=strlen(string);
 __asm__ volatile(
"movl $0x1, %%ebx \n"
"movl %0,%%ecx \n"
"movl %1,%%edx \n"
"movl $0x4, %%eax \n"
"int $0x80 \n"::"a"(string),"b"(len));
exit(0);
}


Mozda ima neka sintaksna greska ali ovaj kod bi trebalo da radi, ako dobijes neku gresku kod kompajliranja javi pa da vidimo gde sam pogresio :)

 
Odgovor na temu

anatogen
Novi Beograd

Član broj: 1294
Poruke: 150
*.ppp-bg.sezampro.yu



Profil

icon Re: sys calls23.12.2001. u 23:03 - pre 271 meseci
Citat:
Vojislav Milunovic:
Nema to veze sa bufferom, ovaj kod je potpuno ispravan :) sigurno ti pointer nije na dobar buffer, inace write() syscall zabole da li je string \n terminiran.


Naravno da ga zabole to sam znao :) takodje ne bih ni pitao da mi pointer nije na pravi
buffer, write vrati u %eax kolko je karaktera ispisao ali ...nema nista na ekranu...

Ja sam jos pocetnika pa ne mogu da protumacim onaj C kod u svako slovce ali kao sto sam i mislio
posle komapajliranja ...nema nista na ekranu...
vitamini, minerali, suplementi...
 
Odgovor na temu

anatogen
Novi Beograd

Član broj: 1294
Poruke: 150
*.ppp-bg.sezampro.yu



Profil

icon Re: sys calls23.12.2001. u 23:24 - pre 271 meseci
E, onaj tvoj kod nema sintaksne ali izgleda ima semanticke greske... nesto se ne prenose promenljive string i len kako treba odnosno u bafer tty se upise samo "s" koje se naravno ne odstampa dok mu ne dodje jedno "/n" odnekud...

Ne znam nikada nisam ubacivao asm u C :) ali je dobra fora...



vitamini, minerali, suplementi...
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.fwi.com



+1 Profil

icon Re: sys calls24.12.2001. u 15:21 - pre 271 meseci
Probaj onda samo write() funkciju da koristis, to bi trebalo isto da bude.
Mada ovaj kod sto sam dao ako se kompajlira trebalo bi da ispise "siiiiineeeee" na ekranu. Uzgred jel ti kompajliras na Linuxu ili na BSD?
 
Odgovor na temu

anatogen
Novi Beograd

Član broj: 1294
Poruke: 150
*.ppp-bg.sezampro.yu



Profil

icon Re: sys calls25.12.2001. u 00:55 - pre 271 meseci
Nema potrebe da na sto nacina radim istu stvar, bez /n na ekranu se nista ne ispisuje i to je cinjenica...
mene je intesresovalo da li neko ima neki tekstic o funkcionisanji tty drajvera odnosno njegove write operacije...

Kada se kompajlira tvoj kod, kao sto rekoh ranije, ne ispise se nista na ekranu i to ne samo sto nema /n na kraju nego sto ne valja pointer na duzinu stringa pa se u bafer upise samo "s" a kada mu ja sa drugim write() posaljem jedno /n onda se odstampa to jedno "s" :)

Citat:
Uzgred jel ti kompajliras na Linuxu ili na BSD?


Linux, baby, Linux!


vitamini, minerali, suplementi...
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.fwi.com



+1 Profil

icon Re: sys calls25.12.2001. u 23:07 - pre 271 meseci
Dobro ajde sad ti meni objasni kako meni ovo lepo radi u 80x25 konzoli bez ikakih gresaka. Mislim ovaj kod mora da radi. Ovde se ti nigde ne petljas sa bufferima i tty. Pozivas ANSI write() funkciju preko ASM, tj. radis ono sto ce C kompajler da uradi za tebe.

E sad ako tebi ne radi, ja pojma nemam sto ne radi. Nema veze da li ti na kraju imas \n ili ne. write() funkcija pise buffer odredjene duzine na file descriptor i nista vise tu f-ju ne zanima.
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.fwi.com



+1 Profil

icon Re: sys calls25.12.2001. u 23:14 - pre 271 meseci
Dobro ajde sad ti meni objasni kako meni ovo lepo radi u 80x25 konzoli bez ikakih gresaka. Mislim ovaj kod mora da radi. Ovde se ti nigde ne petljas sa bufferima i tty. Pozivas ANSI write() funkciju preko ASM, tj. radis ono sto ce C kompajler da uradi za tebe
Code:

int main(){
 printf("siiiiiiineeeee");
}


E sad ako tebi ne radi, ja pojma nemam sto ne radi. Malo gdb u ruke. Nema veze da li ti na kraju imas \n ili ne. write() funkcija pise buffer odredjene duzine na file descriptor i nista vise tu f-ju ne zanima.
 
Odgovor na temu

anatogen
Novi Beograd

Član broj: 1294
Poruke: 150
*.ppp-bg.sezampro.yu



Profil

icon Re: sys calls26.12.2001. u 13:30 - pre 271 meseci
Citat:
E sad ako tebi ne radi, ja pojma nemam sto ne radi. Malo gdb u ruke. Nema veze da li ti na kraju imas \n ili ne. write() funkcija pise buffer odredjene duzine na file descriptor i nista vise tu f-ju ne zanima.


Kako bre gdb u ruke... sta da debagujem, kernel ? :)

Ok, mozda se nismo razumeli, meni radi write() itd.

Ja sam beginner i u slobodno vreme malo citkam o linuxu ali valjda ide ovako: ja pozovem write sys poziv softverskim prekidom, kernel vidi koji je broj sys poziva i kaze aha 4 znaci pise nesto u fajl pa onda vidi koji sam mu fd poslao u %ebx, posto je na 1 nasledio /dev/tty1 od procesa koji ga je pozvao onda on trazi in-core (ili VFS) inode tog fajla pa kad vidi da je to chardev tip fajla onda mu gleda major, 4 u ovom slucaju, koji sluzi kao index u tablelu chadevs drajvera. Onda vidi minor koji je 1 i dodje do strukture koja opisijuje tty1.
E u toj strukturi izmedju ostalog nalazi se pointer na file operations za taj fajl i naravno jedna od njih je write... e to write mene interesuje !

To write verovatno ima neki svoj bafer koji dok ne primi /n nece ni da salje na graficku kariticu sto je u stvari i logicno...






vitamini, minerali, suplementi...
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.fwi.com



+1 Profil

icon Re: sys calls26.12.2001. u 19:57 - pre 271 meseci
ok uradi samo ovo :

Code:

int main(){
 write(1,"voja",4);
}


Ako ti ovo ne radi onda ja stvarno nemam predsatvu sta je problem.
Ako ti ovo gore ne radi onda ni ovo ne bi trebalo da ti radi :

Code:

int main(){
 printf("voja");
}


uzmi u ruke gdb i pogledaj gde gresis a ne da se zalis na kernel koji mora preko write() da pise na ekran. Druge funkcije za to nema.
 
Odgovor na temu

anatogen
Novi Beograd

Član broj: 1294
Poruke: 150
*.ppp-bg.sezampro.yu



Profil

icon Re: sys calls27.12.2001. u 00:31 - pre 271 meseci
Ajd jos jednom da ti porucim da ona dva koda ne stampaju nista na mom ekranu a kada bi neko jos pratio ovaj thread osim mene i tebe mogao bi da proba pa da javi sta se desilo...

Anyway, cenim to, mislim super moderator i sto odgovaras na pitanja ali jebes mi sve ako si ti procitao moju poslednju poruku ! Mislim mozda si je ti bolje procitao nego sto sam je ja napisao pa mozes, tako izmedju ostalog, da mi preciziras gde se zalim na kernel itd.







vitamini, minerali, suplementi...
 
Odgovor na temu

Vojislav Milunovic

Član broj: 25
Poruke: 2117
*.fwi.com



+1 Profil

icon Re: sys calls28.12.2001. u 14:44 - pre 271 meseci
Pa jesi sam reko da pratis minor i major broj cahrdev-a do funkcije :) to je kernel.

Inace ova dva koda bi trebalo da rade, ako ne rade, ja stvarno ne znam sta nije uredu. Probaj da posle
printf("voja");
pozoves fflush(stdout); funkciju. (moras da #include<stdio.h>)
 
Odgovor na temu

anatogen
Novi Beograd

Član broj: 1294
Poruke: 150
*.ppp-bg.sezampro.yu



Profil

icon Re: sys calls29.12.2001. u 01:43 - pre 271 meseci
Da, ali se ja ne zalim na kernel vec polusavam da shvatim kako radi, a ovakve sitnice me malo nerviraju.... :)

Inace ne mogu da verujem da niko da uleti u diskusiju?! Ajd' bar neko sa nekim linuxom nek napravi datoteku sa sledecim sadrzajem:

.section .data

pera:
.ascii "pera"
pera_end:
.equ pera_len, pera_end - pera

.section .text
.globl _start
_start:

movl $1, %ebx
movl $pera, %ecx
movl $pera_len, %edx
movl $4, %eax
int $0x80

movl $0, %ebx
movl $1, %eax
int $0x80

i neka je nazove recimo: "pera.s".
Zatim, neka otkuca: "as pera.s -o pera.o" pa "ld pera.o -o pera" i na kraju "./pera"
i ako se posle toga odstampa ili ne odstampa rec "pera" nek javne ovde cisto iz zezanja...


vitamini, minerali, suplementi...
 
Odgovor na temu

[es] :: Asembler :: sys calls

[ Pregleda: 5277 | Odgovora: 18 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.