Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z volatile - Naruszenie ochrony pamięci.

Ostatnio zmodyfikowano 2016-02-12 20:31
Autor Wiadomość
Pawlo3
Temat założony przez niniejszego użytkownika
Problem z volatile - Naruszenie ochrony pamięci.
» 2016-02-12 19:46:15
Chciałem zobaczyć, do czego służy słowo klucz.
volatile
.
Jednak chyba źle zrozumiałem jego znaczenie.
W terminalu, po wykonaniu pliku volch, pojawiło mi się w nim:
NAruszenie ochrony pamięci.

Oto pliki volcr.cpp:
C/C++
#include <std>
int main( void )
{
    volatile int err = 57;
    cout << "err: " << err << '\n' << "address: " <<( int * )( & err );
    char at[ 50 ];
    cin >> at;
    cout << "err: " << err << '\n' << "address: " <<( int * )( & err );
    return 0;
}
Oraz volch.cpp:
C/C++
#include <std>
int main( void )
{
    int * addr = NULL;
    int adres = 0;
    cout << "Podaj adres komórki do zmiany:\n";
    scanf( "%x", & adres );
    addr =( int * ) adres;
    cout << "Na jaką wartość zamienić?";
    int worth;
    cin >> worth;
    * addr = worth;
    cout << * addr << ".\n";
    return 0;
}
Oto moje kroki:
1. Uruchomiłem volcr.
2. Uruchomiłem volch.
3. Wpisałem adres zmiennej err do volch'a.
4. Wpisałem 56.
5. Wywaliło mi
Naruszenie ochrony pamięci.

// EDIT: Plik std to mój plik dołączający wszystkie standardowe nagłówki.
P-144791
Gibas11
» 2016-02-12 19:55:43
Każdy program ma własną, wirtualną przestrzeń adresową, musiałbyś użyć odpowiednich funkcji z WinAPI, chyba writeProcessMemory.
EDIT:
Poprawka - WriteProcessMemory, https://msdn.microsoft.com​/pl-pl/library/windows/desktop​/ms681674(v=vs.85).aspx
Jeżeli używasz Linuksa (na windowsie chyba nie ma komunikatów tego typu a w każdym razie ja nigdy nie widziałem), poczytaj o ptrace.
P-144792
Elaine
» 2016-02-12 20:25:56
Jeżeli używasz Linuksa (na windowsie chyba nie ma komunikatów tego typu a w każdym razie ja nigdy nie widziałem), poczytaj o ptrace.
Faktycznie, Windows nie ma nic w stylu ptraceptrace to zabawka w porównaniu do mechanizmów debugowania, które oferuje Windows.
P-144793
Gibas11
» 2016-02-12 20:31:20
Ptrace jest prostym narzędziem do szybkiej realizacji prostych zadań gdzie nie trzeba się bawić z ogromnymi API. Żalisz się, że nie ma go na windzie czy coś innego?
P-144794
« 1 »
  Strona 1 z 1