» »

iskanje/spreminjanje vrednosti v pomnilniku

iskanje/spreminjanje vrednosti v pomnilniku

McAjvar ::

zivjo!

naj se najprej opravicim, nisem ravno nek programer (c poznam npr. le do kake osnovne for zanke), bi pa vas zelel povprasati za nasvet. zanima me zaenkrat zgolj informativno, v katerem jeziku bi bilo najbolj enostavno izvesti sledece: za neko aplikacijo, ki se izvaja, bi zelel ugotoviti vrednost kake spremenljivke, ki je trenutno shranjena v pomnilniku oz. ce je morda mozno celo to vrednost spremeniti, povecati denimo za 1 ali kaj podobnega. ali je to ze precej napredna zadeva? kot php-jasu, bi mi bilo tezko/bi vzelo veliko casa, ce bi se zelel nauciti narediti kaj taksnega v skorajda kateremkoli programskem jeziku? je s perlom to mozno? ali pa s pythonom? v katerem jeziku bi bilo dejansko to najbolj enostavno? kaksno literaturo priporocate cimbolj specificno za moje vprasanje?

hvala za odgovore!
"[...] the advance of civilization is nothing
but an exercise in the limiting of privacy."
- Isaac Asimov

Microsoft ::

Ja zdej, kolker sm jst videl C++, obstajajo kazalci, ki kazejo nekam v pomnilnik.

Zdej, recimo naredis:
int a = 0;
int b = 1;
int* add = &a;

In zdej mas v add neko vrednost, recimo 122423881. add kaze na nek naslov. Ta nasov je tist naslov, na katerem se nahaja a.

Zdej, lahka vrednost add spreminjas, s cemer mislim, da se pomikas po pomnilniku. Jst sem malo preizkusil, in sem se lahko premiknil za eno naprej, kar je stevilko povecalo za 4 (Tu bi mene zanimalo, zakaj ravno 4? Zato, ker sem se premaknil od 'a' do 'b', int pa je velik 4byte, zato ker se po spominu dostopa do 4byte naenkrat z enim naslovom, al kaj?)

Pol pa, da izpises, kaj je na tistem naslovu, pa se mi zdi, da gre takole:
Console::Write(*add);


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

Zgodovina sprememb…

SasoS ::

int *a;
char *c;
double *d;

a++; te premakne za 4 byte naprej, c++; te premakne za 1 byte, d++; pa za 8...tam se pač nahaja (lahko) naslednja spremenljivka tega tipa. Uporabno če recimo greš skozi array:

int *a;
a = (int *)malloc(sizeof(int) * 100);
for(int i=0; i < 100; i++) {
printf("a: %d\n", a) // izpise naslov kam kaze a
printf("a: %d\n", *a) // izpiše vrednost ki se nahaja na tistem naslovu
a++;
}

Na x86 lahko vedno dostopaš do posameznih bytov v pomnilniku.

Če ne pa, programa ki ti bo šaril po memoriji od drugih aplikacij v sodobnem OSu ne boš naredil ker vsak proces teče v svojem naslovnem prostoru (šlo bi v DOSu recimo). Za spremljanje in spreminjanje spremeljivk lahko uporabiš kak debugger.

BigWhale ::

PEEK & POKE!

;)

64202 ::

Meh softici, voltmeter na tace od cipa! :))

McAjvar ::

hmm... hvala za mnenja.

mislim, da bi bilo posteno od mene, da malo bolj pojasnim situacijo: se kdo morda spomni igre diablo 1? in je bil en character editor, ki je deloval tako, da si moral imeti nalozeno igro, se alt-tabal v ta editor in je le-ta iz memorije pobral podatke o liku, nato pa si lahko naredil dar mar z vsem tem.

no, gre za to, da imam eno znj aplikacijo, ki laufa, zelel pa bi vsaj spremljati nekatere vrednosti spremenljivk, ki jih ta zadeva uporablja. v enem primeru gre za eno simpl aplikacijo, v drugem primeru pa za swf programcic, ki laufa preko spleta.

se pa bojim, da ima big whale najbrz prav in glede na moje izkusnje z aplikacijami taksnega tipa narekujejo se nekaj let treninga, preden se lotim cesa taksnega :)
se enkrat hvala.
"[...] the advance of civilization is nothing
but an exercise in the limiting of privacy."
- Isaac Asimov

BluPhenix ::

Nas so učili, da razen v primeru da točno veš kaj delaš poseganje v RAM kjer se hranijo podatki drugih programov ni pametno početje, ne se potem čudit če ne bo vse delovalo kot bi moralo.

64202 boljše osciloskop, z voltmetrom boš malo kaj videl, refresh rama je malo prehiter...


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

c napaka .c:4:1: error: expected identifier or '(' before '{' token

Oddelek: Programiranje
141843 (1416) MrStein
»

Pomoč pri programiranju fe

Oddelek: Programiranje
262387 (1537) ducttape
»

[C] struct in int[] (strani: 1 2 )

Oddelek: Programiranje
656886 (5959) MrBrdo
»

C++(bin file) vprašanje

Oddelek: Programiranje
121398 (1276) technolog
»

Pomoč pri c++ razlaga

Oddelek: Programiranje
192158 (1900) Person

Več podobnih tem