TCH (statz) | #1, Főfasz (10466) |
4223 | #113e | ^ | Idézet | Sat, 11 Sep 2010 22:25:12 +02 |
188.36.*.* | *.dsl.pool.telekom.hu |
Nabazdmeg. Volt már itt téma a VLC, hogy a hülye programozói az Istenért le nem kódolnák azt a szart, hogy fusson rootként is. Na, nekem ebből elegem lett, mert a vlc-wrapperes megoldás, az valami rohadt kényelmetlen. Két megoldás állt előttem. Az egyik, hogy leforgatom magamnak, a root felhasználó engedélyezésével. Ez időigényes, fárasztó és unalmas is. A másik, hogy "meghekkelem" ezt a szart. Ez elsőre még időigényesebb, mint a másik, de ez csak egyszer az, a másik meg mindig is az lesz. És ez szórakoztató is. :) Csapjunk a bitek közé. Először is, lerántottam a VLC forrását, hogy megnézzem, mi a szar csinálja benne ezt a fasságot. (http://www.videolan.org/vlc/download-sources.html) Aszongya, hogy a "vlc.c" fájlban van egy ilyen rész: #ifndef ALLOW_RUN_AS_ROOT if (geteuid () == 0) { fprintf (stderr, "VLC is not supposed to be run as root. Sorry.\n" "If you need to use real-time priorities and/or privileged TCP ports\n" "you can use %s-wrapper (make sure it is Set-UID root and\n" "cannot be run by non-trusted users first).\n", ppsz_argv[0]); return 1; } #endifAha, ez bassza az anyját, ha nincs engedélyezve leforgatáskor a root és ofcoz az Ubuntu repoba, csakis úgy kerülhet bele, ha nincs. :P Mindegy. Az a ludas, vagyis azt a "geteuid()" függvényt kell kiiktatnom. Hát akkor, IDA Disassembler elő (wine kell hozzá, ofcoz :P) és "/usr/bin/vlc" megnyit és máris egy sux86 dumppal lettünk gazdagabbak. Keressük meg ezt a "geteuid()" nevű szart, pontosabban a meghívását. .text:08048DB1 call _geteuid .text:08048DB6 test eax, eax .text:08048DB8 jz loc_8049340 .text:08048DBE mov eax, (offset asc_8049D80+2)Meg is van. A "call _geteuid" hívja meg, utána az eax-ban visszakapott eredményt a "test eax, eax" dönti el egy logikai-és művelettel, hogy nulla-e. Ha igen (azaz root vogymuk), akkor elugrik ahhoz a ponthoz, ami rizsázik egy sort, hogy "Jajajajj, rootként naon vessszéjjes ám!", aztán kilép. Konzekvencia: azt az utasítást kell kiiktatnunk a francba. Erre tökéletesen alkalmas a "NOP" azaz a "No OPeration" utasítás, aminek az opkódja egy byte ($90). Az ugrás utáni sornak nincs jelentősége, csak a kezdőcímének. A "jz" sor kezdőcíme $DB8, a rákövetkezőnek $DBE, vagyis 6 byte az ugróutasítás (opkóddal és címmel együtt), ergo hat darab $90-es bájtot kell beszúrnunk oda. KHexEdit elő. Vlc kinyit. Ugrás a 3512. ($DB8) byte-ra, aztán 90 90 90 90 90 90, majd kontroless. :))) Indíccsuk el a vlc-t. Dőljünk hátra és élvezzük, hogy csakazért is rootként futtathatjuk, anélkül, hogy újra kellett volna forgatni az egészet. Köszönöm a figyelmet. :) Sz*rk: Ja és így utólag nézve, még kevesebb időt is evett meg, mintha leforgattam volna egy "--allow-run-as-root paraméterrel". :P Sz*rk #2: A vendégkönyv kapott még egy kis bugfixet (plusz sortörések a sor végén, textarea korlát megemelése), optimalizációt (felesleges karakterszűrések), vizuális javítást (szélesebb szövegdoboz), szóval javítgattam rajta. :P Amúgy egy kulahalom az egész, dehát nincs szívem kidobni és írni egy újat nulláról, ez volt az első php-s "programom". :P Még a Kalmárban, amikor az OKJ-t csináltam, volt olyan óránk, hogy "Internet Technológia", ahol azt mondta a Madarász tanár úr, hogy év végére, kb. egy vendégkönyv a követelmény. Kérdeztem, ha megírom most, nem kell bejárnom? Akkor nem kell. Oké. Másnapra ott volt a "vendégkönyv". X) Egy kurva nagy halom kula volt, hiszen addig webbel kapcsolatban a tudásom usque kimerült a html-ben, meg egy nagyon-nagyon minimális javascriptezésben, php-t egy napja csináltam, sql meg abszolúte Ø. Meg is látszott ezen a szaron, a v0.x verziók még fájlba írogattak. XDDD A v1.0-tól már sql volt és inkább hasonlít azóta egy "igazi" vendégkönyvre. Most már tudnék sokkal jobbat is, csak sajnálom kibaszni a qkába. :P Már megint sokat pofáztam. :P |