This shows you the differences between two versions of the page.
so2:cursuri:curs02:test [2013/02/10 02:10] 127.0.0.1 external edit |
so2:cursuri:curs02:test [2013/02/17 09:52] (current) razvan.deaconescu |
||
---|---|---|---|
Line 1: | Line 1: | ||
====== Test Cursul 2 ====== | ====== Test Cursul 2 ====== | ||
- | 1. **Pentru funcția** | + | * TODO |
- | + | ||
- | <code> | + | |
- | int f(int a, int b) | + | |
- | { | + | |
- | int x; | + | |
- | char *p = kmalloc(12, GFP_KERNEL); | + | |
- | … | + | |
- | } | + | |
- | </code> | + | |
- | + | ||
- | *um se accesează conținutul variabilei b folosind registrul frame pointer (registrul EBP).** | + | |
- | + | ||
- | EBP + 12, 0x0c(%ebp), ... | + | |
- | + | ||
- | 2. **Care din următoarele apeluri genereaza page-fault?** | + | |
- | + | ||
- | <code> | + | |
- | memcpy(p, NULL, 1024); | + | |
- | copy_from_user(p, NULL, 1024); | + | |
- | </code> | + | |
- | + | ||
- | Ambele apeluri generează page-fault în kernel (mempcy și în user-space, copy_from_user nu există în user-space). Abia în momentul tratării acestui page-fault se verifică argumentele și de unde provin ele pentru a genera kernel bug / oops. | + | |
- | + | ||
- | 3. **Presupunand ca argumentele apelurilor de sistem ar fi verificate, cum ar putea un atacator să folosescă un apel de sistem pentru a corupe date din kernel?** | + | |
- | + | ||
- | Scriere/citire din locații nepermise. Buffer overflows. S-a punctat orice soluție ce ducea la un atac. | + |