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

Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje

[es] :: Art of Programming :: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Texas Instruments

Član broj: 227540
Poruke: 272
95.180.72.*



+61 Profil

icon Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje16.02.2011. u 19:32 - pre 160 meseci
Code:

#include <stdio.h>
#include <memory.h>
#include <stdlib.h>

int (*dyncode) (int);

unsigned char code [] = { 0x8b, 0x44, 0x24, 0x04,  /* mov eax, [esp+4] */
                          0x40,                   /* inc eax          */
                          0xc3 };                /* ret              */
 
int main()
{
    dyncode = (int (*)(int)) malloc(sizeof(code));
    
    memcpy(dyncode, code, sizeof(code));
    printf("retval = %d\n", (*dyncode)(41));
    return 0;
}


Ovaj kod, preveden na windowsu 7, majkrosoftovim kompajlerom izvrši se bez problema i ispiše rezultat 42, dok isti ovaj kod peveden na ubuntu 10.10, gcc kompajlerom generiše segmentation fault prilikom izvršavanja. Dakle u windowsu je moguće poturiti dinamički kroz podatke neki kod koji može da se izvrši bez problema, dok je to u linuxu zabranjeno. Da li mislite da ovako nešto može da se zloupotrebi na neki način na windowsu, ovde je primer banalan, samo inkrementira tu vrednost koja se prosledi preko steka, ali da li bi ovako mogao da se poturi i neki maliciozan kod koji bi se bez problema izvršio?
 
Odgovor na temu

maksvel

Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje16.02.2011. u 20:51 - pre 160 meseci
Hm, kontam da ima veze sa ASLR-om, koji je proradio pod Linuksom, a pod Windowsom ignoriše.
(Ovo možda može i u Security Coding, miriše na shellcode )
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje16.02.2011. u 20:59 - pre 160 meseci
He, lepo je to kad iskljucis DEP pa kazes kako Windows ne valja. Naughty.


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

Texas Instruments

Član broj: 227540
Poruke: 272
95.180.72.*



+61 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje16.02.2011. u 21:08 - pre 160 meseci
Windows 7 je 32b, uključen je DEP. Nemam ja nameru da pokrećem tu večitu temu šta je bolji/lošiji sistem widnows/linux, pošto koristim i jedan i drugi, a windows verovatno i više. Čisto me zanima da li je ovo neki mogući put za zloupotrebu.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje16.02.2011. u 21:12 - pre 160 meseci
Nije ti ukljucen DEP, ukljucen je samo za core windowsa i kriticne servise (ono sto moze da uradi eskalaciju privilegija). Ostalima je DE dozvoljen, ako hoces da ga blokiras prebacis na "Block for all applications" i kod nece proci (narocito ako je DEP hardverski a na vecini novijih procesa jeste).
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

maksvel

Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje16.02.2011. u 21:29 - pre 160 meseci
U stvari, pitanje bi se moglo preformulisati - da li je potencijalno opasno što DEP nije uključen po defaultu za sve aplikacije pod Windozom?
Mada, jezgro je zaštićeno svakako, a uključivanje za sve aplikacije bi verovatno smorilo korisnike, ne?
 
Odgovor na temu

Goran Arandjelovic
Beograd

Član broj: 29116
Poruke: 387
*.dynamic.sbb.rs.



+9 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje16.02.2011. u 21:43 - pre 160 meseci
Ne bi smorilo korisnike ni malo, jer aplikacije koje se oslanjaju na DE su ili pisane nogama ili namerno tako pisane, tj. uglavnom maliciozne, a u oba slučaja takve aplikacije korisniku nisu potrebne. Na Win2k8 je DEP po defaultu uključen, ali čak ni na Win7 64bit nije uključen za sve procese.
 
Odgovor na temu

Texas Instruments

Član broj: 227540
Poruke: 272
95.180.72.*



+61 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje16.02.2011. u 21:50 - pre 160 meseci
Citat:
maksvel: U stvari, pitanje bi se moglo preformulisati - da li je potencijalno opasno što DEP nije uključen po defaultu za sve aplikacije pod Windozom?
Mada, jezgro je zaštićeno svakako, a uključivanje za sve aplikacije bi verovatno smorilo korisnike, ne?

I meni je sad to palo na pamet, zašto nije po defaultu uključeno za sve aplikacije.

A ja opet nisam siguran da li sam dobro uključio, pošto i nakon čekiranja ovoga kao na slici i nakon restartovanja, ovaj programčić se izvrši bez problema.



edit: Za pismene lepo piše da procesor ne podržava DEP. :) I pošto očigledno nemam hardversku podršku za ovo, koje je rešenje u mom slučaju?
 
Odgovor na temu

maksvel

Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje16.02.2011. u 21:56 - pre 160 meseci
Nije ti podržan hw DEP, pa ne radi "u fullu".
Kod mene bogme puca program samo tako.
A to za default i korisnike: očito postoji dovoljno starijih aplikacija koje muku muče sa DEP-om (a nisu maliciozne, bar ne namerno ), te je MS odlučio izostaviti ovu postavku kao podrazumevanu.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje16.02.2011. u 22:53 - pre 160 meseci
DE prica je malo preduvana, da bi se izvrsio kod iz data segmetna mora prvo da postoji kod koji generise kod u data segmentu a ako postoji takav kod on je od pocetkao mogao da izvrsi sta je vec hteo. Ako imas rupu da pokupis maliciozni kod njemu DE ni ne treba, overflow u browseru je ionako jos od viste fiksiran sa ASLR i EMETom. Ovo je sad vise "better safe than sorry" vrsta price. Sto se tice softverskog DEPa on ne sprecava DE, samo sprecava da exception odleti u DS.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

EArthquake

Član broj: 20684
Poruke: 884
*.dynamic.sbb.rs.



+67 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje19.02.2011. u 11:00 - pre 160 meseci
resenje bi bilo da eksplicitno mapiras neki deo memorije kao izvrsni
mmap na linuxu
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
89.216.32.*



+2789 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje11.03.2011. u 09:37 - pre 159 meseci
Upravo isprobah program na openSUSE-u 11.3 pod virtuelnom mašinom i radi, tj. ne puca. Kod je doduše morao da pretrpi izvesne izmene

Code:
#include <stdio.h>
#include <memory.h>
#include <stdlib.h>

typedef int (*fun)(int);

fun dyncode;

unsigned char code [] = { 0x8b, 0x44, 0x24, 0x04,  /* mov eax, [esp+4] */
                          0x40,                   /* inc eax          */
                          0xc3 };                /* ret              */

int main()
{
    unsigned char *p = malloc(sizeof(code));

    dyncode = (fun) p;
    memcpy(p, code, sizeof(code));
    printf("retval = %d\n", (*dyncode)(41));

    return EXIT_SUCCESS;
}


Ima li načina da se pod njim uključi neki njegov DEP?
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

maksvel

Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje11.03.2011. u 10:29 - pre 159 meseci
Meni bogme na 11.3 (32bit), u vmware javlja segmentation fault.
Kompajlirano bez ikakvih dodatnih opcija.
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
89.216.32.*



+2789 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje11.03.2011. u 11:03 - pre 159 meseci
Ja imam VirtualBox.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje11.03.2011. u 11:14 - pre 159 meseci
Odakle potice greska? To je zanimljivo pitanje, ko reaguje na NX fault u virtuelizaciji?
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

maksvel

Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje11.03.2011. u 11:21 - pre 159 meseci
Evo ga segfault i na Mintu, nevirtualnom.
Ko ne reaguje kod Nedeljka??
Da ti nije neko custom jezgro?
Nagađam, verovatno je nešto trivijalno
 
Odgovor na temu

Nedeljko
Nedeljko Stefanović

Član broj: 314
Poruke: 8632
*.mts.telekom.rs.



+2789 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje12.03.2011. u 21:31 - pre 159 meseci
Evo, na nevirtuelnoj mašini na openSUSE-u javlja Segmentation fault.
Nije bitno koji su zaključci izvučeni, već kako se do njih došlo.
 
Odgovor na temu

maksvel

Član broj: 107376
Poruke: 2417

Jabber: maksvel
Sajt: maksvel.in.rs


+161 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje12.03.2011. u 22:00 - pre 159 meseci
To je definitivno nešto do vbox-a.
Kad od istog vmware-ovog virtual-diska napravim vm u vbox-u, onaj isti program koji je pre bacao fault (znači već kompajliran pre), sada uredno daje retval=42...
weird.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje12.03.2011. u 22:47 - pre 159 meseci
Ne omora da znaci da je weird, sve zavisi od toga kako Type2 hipervisor handluje NX segfault.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: Art of Programming :: Samomodifikujući programski kod na dva različita operativna sistema različito ponašanje

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

Postavi temu Odgovori

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