Skocz do zawartości

[Delphi] Dostęp do pamięci


Blind

Polecane posty

  • Odpowiedzi 69
  • Created
  • Ostatnia odpowiedź
o to ja tez o cos zapytam, zeby nie zakladac nowego tematu.
Chcialbym dowiedziec sie, czy naszym programem mozemy wyswietlic pamiec zajmujaca przez inny program? Czy jednym programem mozemy np wypisac wszystkie wartosci zmiennych zaalokowanych w pamieci przez inny program?
Link do komentarza
Udostępnij na innych stronach

Tak więc robisz sobie wskaźnik tongue.gif:

[code=Delphi] var b : ^byte;*bł7ŹĘ'jg^bptĆćtB\"ŁC# [/code]

i gotowe :twisted:.

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

nie krzyczcie za n00bowe pytania, ale w tej tematyce w ogole sie nie orientuje...

Szczerze mowiac nawet nie wiem co zrobic z powyzszym kodem. Puściłem to w pętli i coś niby wypisuje, ale wszystko to jakies jednakowe krzaczki...
Czy ktos moglby napisac krotki kod, ktory wypisalby wszystko (integery, stringi...) nalezace do uruchomionego programu ABC.exe np na memo? Byłbym naprawdę wdzięczny!!

pozdrawiam.
Link do komentarza
Udostępnij na innych stronach

jak sie dyskusja rozkręciła smile.gif
:arrow: krajew4: Twój kod to już coś.. wyświetla stringo-podobne rzeczy.. wporzo. Chciałbym się tylko dowiedzieć, czy zakres podany w pętli to pamięć naszego programu? czy ogolnie dostepna pamiec? czy przypadkowy jej fragment?
:arrow: sazian: zdaje mi sie ze np tak: label.caption = ^pointer;


Oraz ogolne pytanie: czy w jakiś sposob da się oszacować gdzie są dane konkrentego programu? Czy jezeli np. jest otwierany równo z systemem, to beda na poczatku? Albo jak przed chwila go odpalilem, to beda na samym koncu?

Link do komentarza
Udostępnij na innych stronach

:arrow: sazian - nie dziala czy efekty pracy sa niesatysfakcjonujące?
:arrow: krajew4 - jak biore zbyt duze przedzialy, to potem nie jestem w stanie sprawdzic mniej wiecej co tam jest... a wartosci od 0 do 65 000 twoj kod wypisyje jako nic x) tzn same entery stawia x)
Link do komentarza
Udostępnij na innych stronach

Fajne.
Ale czy jesteś w stanie powiedzieć cokolwiek o tych danych? Chodzi mi o to, że aktualna wersja programu nie ma pojęcia który program uzywa tej przestrzeni pamięci itepe.. zdaje mi sie tez, ze nie dzieli pamieci na dane (zmienne), tylko wypisuje je po kolei..
Moze jest na forum ktoś, kto już coś podobnego robił.. moze admini :?:

Ale mam coś zle przeczucie, ze to na co wszyscy z nas w tym momencie licza (czyli swobodna zabawa pamięcią), nie należy już do zadań, gdzie jak coś nie działa, to należy np tu dodać 1, albo tam odjąć 1 ("działa, więc spoko" smile.gif )..

Wydaje sie, ze to zadanie wymaga nielada krzepy ( biggrin.gif ), ale licze ze damy rade smile.gif

----------
edit:
Zrobiłem mały test: odpaliłem jeden z poprzednich kodów (w tym wątku zamieszczonych) i teoretycznie ustawiłem mu całą moją pamięć. Skompilowało się bez problemu. Odpaliłem notatnik i napisałem "mundial", nastepnie odpaliłem skompilowany program. Przeleicał się po całej pamięci i wypisał wszystko po kolei. Niestety, po sprawdzeniu tego co wypisał, słowo "mundial" nie zostało znalezione... :?

Link do komentarza
Udostępnij na innych stronach

[quote] Zrobiłem mały test: odpaliłem jeden z poprzednich kodów (w tym wątku zamieszczonych) i teoretycznie ustawiłem mu całą moją pamięć. Skompilowało się bez problemu. Odpaliłem notatnik i napisałem \"mundial\", nastepnie odpaliłem skompilowany program. Przeleicał się po całej pamięci i wypisał wszystko po kolei. Niestety, po sprawdzeniu tego co wypisał, słowo \"mundial\" nie zostało znalezione... [/quote]
Może źle szukałeś lub nie po całej pamięci smile.gif

My life for Aiur!

Link do komentarza
Udostępnij na innych stronach

[quote] zrobiłem coś takiego
[code=Delphi]

  1. [/code]

  2. procedure TForm1.Button1Click(Sender: TObject); [/quote]

  3. var

  4. a:byNB]NBY[BBPNBBLLB[

  5. HH ŚĆ&V6FŁGF7G\"ŚVćC&6VGW&RDf& ŃŃ

  6. ąŹĄMQ=4)4)Ń4)yŃ4)in

  7. b:=@a;

  8. b:=ptr($8b000);

  9. label1.Caption:=inttostr(a);

  10. e


i nie działa biggrin.gif

Pamięć w miejscu $8b000 nie jest zainicjowana. Nie możesz traktować pamięci jak jednej wielkiej tablicy, ponieważ nie wszystkie jej miejsca są przygotowane przez menadżer pamięci. W Turbo Pascalu, środowisku 16 bitowym częściej stosowano takie adresowanie przez dyrektywę absolute i podawanie adresu np.

var
x: integer absolute $BB00;

Obecnie nie ma takiej potrzeby (czasy nowożytnie 8) ) i przy takim zapisie kompilator wywali ERROR. Dzisiaj Delphi umożliwia współdzielenie pamięci przez kilka zmiennych (zapisane w tym samym miejscu pamięci - co przy nieostrożnym używaniu może prowadzić do błędów):

var
x: Int64;
y: double absolute x;
z: single absolute y;

Coś jak rekordy wariantowe (w C++ znane jako unie).

Delphi 4 EVER :twisted:

soon Delphi will be only for veterans and finally we all will die at the end…

delphi.dathox.com - nowinki z świata Delphi/Pascala

only programmers and drug dealers call their customers "users"

 

Oto cisza przed burzą, Chwile się dłużą.Z gór schodzi dużo chmur ku podnóżom.Ptaki milaczą, drogi suche jak wiór się kurzą, Ptaki milczą a drogi się kurzą.

Link do komentarza
Udostępnij na innych stronach

nic z tych rzeczy...
kazdy program pod winda na swoj obszar pamieci o wielkosci do 4GB (cikawe nie ?)
pamiec w windzie jest chroniona, co oznacza ze defaultowo program ma dostep tylko do swojej pamieci.
aby dostac sie do pamieci innych trzeba uzyskac do nich dostep funkcjami api (niestety nie mam w tym doswiadczenia wiec sie nie wypowiadam)
adres $40000 dla programu np Winword i notepad pokazuje na zupelnie inne dane poniewaz jest to pamiec dedykowana dla danego programu, wiekszosc tego co pisaliscie to byl opis trybu rzeczywistego a nie chronionego. w trybie rzeczywistym wszystkie programy siedzialy w kolejnych miejscach pamieci i kazdy program mial dostep do wszystkiego.

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...