Dar de ce muti mereu syscallul cand la tine cand la original? Pune excveul
ala care ti l-am trimis eu peste ce ai tu, trebuie sa mearga...
Gushterul
On 24 Mar
2003, Dorel Nastasa wrote:
> Totul merge perfect inafara de operatia de atribuire de dupa apelul
> sistem. (care buseste intrarea in tabela de simboli si care ramane
> setata pe cea originala care este (re)setata la intrarea in apelul
> hacked.)
>
> Obtin eroarea.... si lucrurile revin la normal.
> Apelul sistem a fost efectuat corect insa eu nu mi-am putut repune
> functia mea in apelul dorit.
>
> Daca folosesc din nou programul userspace si repun functia lucrurile o
> iau de la capat.
>
> Apreciez efortul tuturor. x10
> Multumesc mult.
>
> Doru - [EMAIL PROTECTED]
>
> On Mon, 2003-03-24 at 18:15, Gushterul wrote:
> > Well tinand cont ca la mine merge, eu zic ca mai bine te uiti pe unde ai
> > redirectat alte nebunii gen "write" :))
> >
> > Gushterul
> >
> > On 24 Mar 2003, Dorel Nastasa
> > wrote:
> >
> > > Am pus kernel_lock()/unlock() dupa ce am salvat registrii si nu merge.
> > >
> > > |
> > > |
> > > \ / E cam ce spun eu.
> > >
> > > On Mon, 2003-03-24 at 17:51, Gushterul wrote:
> > > > Well sper sa nu bat campii prea tare:
> > > >
> > > > la init : sys_call_table[__NR_execve] = hacked_execve;
> > > >
> > > > si
> > > >
> > > > int hacked_execve(struct pt_regs regs)
> > > > {
> > > > int ret;
> > > > char *filename;
> > > > lock_kernel();
> > > > filename = getname((char *)regs.ebx);
> > > >
> > > > printk(KERN_DEBUG "EXEC: %s via: %s uid: %d euid: %d gid: %d egid: %d
> > > > suid: %d sgid: %d fsuid: %d fsgid: %d pid:
> > > > %d\n",filename,current->comm,current->uid,current->euid,current->gid,current->egid,current->suid,
> > > >
> > > > current->sgid,current->fsuid,current->fsgid,current->pid);
> > > >
> > > > ret = PTR_ERR(filename);
> > > > if(IS_ERR(filename)) { unlock_kernel();return ret;}
> > > >
> > > > ret = do_execve(filename,(char **)regs.ecx,(char **)regs.edx, ®s);
> > >
> > > daca hacked_execve este generica (void), primeste parametrii pe stiva.
> > > In loc de do_execve am incercat sa fac "int $0x80" si apoi sa scot
> > > rezultatul din eax. Merge.
> > > Insa ceva crapa, pentru ca daca fac dupa int...:
> > > sys_call_table[ __NR_sys0 ] = hacked_sys0;
> > > (al meu=0)
> > > crapa, cu mesajul:
> > >
> > > Pentru o singura functie merge sa ii faci un prototip si sa il salvezi.
> > > Pentru NR_syscalls?????:-(
> > > ------------------------------------------------
> > > tralala, inside syscall: 4
> > > trlalaEND 4 <1>Unable to handle kernel paging request at virtual
> > > address 817eddbc
> > > printing eip:
> > > c480570f
> > > *pde = 00000000
> > > Oops: 0002
> > > CPU: 0
> > > EIP: 0010:[<c480570f>] Not tainted
> > > EFLAGS: 00000286
> > > eax: 00000018 ebx: c480592f ecx: 00000004 edx: c1561fbc
> > > esi: c1561fbc edi: 00000004 ebp: 080cd40c esp: c1561f84
> > > ds: 0018 es: 0000 ss: 0018
> > > Process bash (pid: 7441, stackpage=c1561000)
> > > Stack: c1561fbc 00000004 00000018 00000018 0807d3a0 fffffff7 00000018
> > > c1560000
> > > 00000018 080cd40c 00000004 c1560000 00000018 080cd40c bffffad8
> > > c0108a73
> > > 00000001 080cd40c 00000018 00000018 080cd40c bffffad8 00000004
> > > 0000002b
> > > Call Trace: [<c0108a73>]
> > >
> > > Code: c7 86 00 be 28 c0 94 56 80 c4 83 c4 10 83 7f 1c 00 79 0a 83
> > >
> > > tralala, inside syscall: 5
> > > trlalaEND 5 general protection fault: 3584
> > > CPU: 0
> > > EIP: 0010:[<c480570d>] Not tainted
> > > EFLAGS: 00000286
> > > eax: 00000018 ebx: c480592f ecx: 00000005 edx: c10b62e0
> > > esi: c1183000 edi: 00000005 ebp: 00000002 esp: c1ef3f7c
> > > ds: 0018 es: 0018 ss: 0018
> > > Process sshd (pid: 7440, stackpage=c1ef3000)
> > > Stack: 40243585 c1ef2000 c1ef3fbc 00000005 00000018 00000018 fffffeff
> > > fffffff2
> > > 40243585 c1ef2000 00000018 00000002 00000005 c1ef2000 40243585
> > > 40245e90
> > > bffff078 c0108a73 40243585 00000002 400539dc 40243585 40245e90
> > > bffff078
> > > Call Trace: [<c0108a73>]
> > >
> > > Code: 1f 07 c7 86 00 be 28 c0 94 56 80 c4 83 c4 10 83 7f 1c 00 79
> > >
> > >
> > >
> > >
> > >
> > >
> > > > if(ret == 0) current->flags &= ~PT_DTRACE;
> > > > putname(filename);unlock_kernel();return ret;
> > > > }
> > > >
> > > >
> > > > On 24 Mar 2003, Dorel Nastasa wrote:
> > > >
> > > > >
> > > > > Modul kernel care trebuie sa monitorizeze apelurile de sistem.
> > > > > Daca sistemul face apel atunci sau intra in functia mea sau in cea
> > > > > originala a lui.
> > > > > Nu ar trebuie sa dea eroare.
> > > > >
> > > > >
> > > > > Ce gresesc? Mai mult ce sigur niste registri nelalocul lor insa cum...
> > > > > sa vad ce se intampla pe acolo?
> > > > >
> > > > >
> > > > >
> > > > > On Mon, 2003-03-24 at 17:04, Claudiu Cismaru wrote:
> > > > > > -----BEGIN PGP SIGNED MESSAGE-----
> > > > > > Hash: SHA1
> > > > > >
> > > > > > On Monday 24 March 2003 16:45, Dorel Nastasa wrote:
> > > > > > > Salut tuturor.
> > > > > > >
> > > > > > > Poate ma ajuta cineva cu urmatoarea problema:
> > > > > > > - am o functia care inlocuieste apelurile sistem, acestea fiind salvate
> > > > > > > intr-un tablou, functie definita:
> > > > > > > asmlinkage int functie( void )
> > > > > > >
> > > > > > > inlocuieste in sys_call_table[ __NR_open, etc... ] un apel sistem care
> > > > > > > este interceptat. La utilizare din userspace a apelului se intra in
> > > > > > > functie, se salveaza registrii, reface vechea adresa a apelului sistem,
> > > > > > > face int 80h, si INCEARCA sa modifice apelul sistem
> > > > > > > din nou pe functia mea: moment in care crapa.
> > > > > >
> > > > > > Functia asta e intr-un kernel module ? Sau in userspace ? Daca e in kmod,
> > > > > > ai
> > > > > > tinut cont ca esti in MULTIuser/MULTItasking mode ? Adica de unde stii ca
> > > > > > tu
> > > > > > cand faci modificare sistemul nu face apel la acel syscall la care tu
> > > > > > modifici adresa ?
> > > > > >
> > > > > > PS: daca faci in userspace... sanatate...
> > > > > >
> > > > > > - --
> > > > > > Claudiu
> > > > > > -----BEGIN PGP SIGNATURE-----
> > > > > > Version: GnuPG v1.2.1 (GNU/Linux)
> > > > > >
> > > > > > iD8DBQE+fx52rwEDsE5SrbgRArKYAKDqkj3ODO4seyJhhFjLdX0QO1toFwCfTHuB
> > > > > > jAgOTDcbactV7/lIXHWUtOg=
> > > > > > =X1X0
--
Pentru dezabonare, trimiteti mail la
[EMAIL PROTECTED] cu subiectul 'unsubscribe rlug'.
REGULI, arhive si alte informatii: http://www.lug.ro/mlist/