C++:Panoya kopyala #include <iostream> #include "windows. h" int main { int PID; int Memory; int Buffer; std::cout << "Process ID: "; std::cin >> PID; HANDLE hHandle = OpenProcess(PROCESS_ALL_ACCESS, 0, PID); if std::cout << "Memory address: "; std::cin >> std::hex >> Memory; std::cout << " " << std::endl; ReadProcessMemory(hHandle, LPCVOID , &Buffer, sizeof + 1, 0); std::cout << "Handle ID: " << hHandle << std::endl; std::cout << "Handle address: " << &hHandle << std::endl; std::cout << "Memory address: " << Memory << std::endl; std::cout << "Hexadecimal memory address: " << std::hex << Memory << std::endl; std::cout << "Read value is " << Buffer << "." << std::endl; std::system ; return 0; } Kullanımı: MemoryAccess. exe Process ID: Memory address: Bellek adresi nasıl alınır? IDA Free ve Cheat Engine gibi yazılımlardan bir program hakkında bellek bilgilerini edinebilirsiniz. O zaman bunu neden kullanayım? Bu sadece öğretme amaçlı yapılmış bir yazılım. ReadProcessMemory fonksiyonu demosu gibi düşünebilirsiniz. ReadProcessMemory hakkında daha fazla bilgiyi buradan bulabilirsiniz. Çalışma prensibi C++:Panoya kopyala int main Her C++ programında olması gereken "int main" fonksiyonu ile ilk temeli atıyoruz. C++:Panoya kopyala int PID; int Memory; int Buffer; std::cout << "Process ID: "; std::cin >> PID; Fonksiyon için gerekli olan değişkenleri ayarlıyoruz. Memory olan sorgulanacak adres, Buffer da bizim terminalde gördüğümüz değer olacaktır. std::cout kısmı ile terminalimize yazıyı yazıyoruz. Belirttiğimiz integer türündeki PID değişkenine std::cin ile değer atıyoruz. C++:Panoya kopyala HANDLE hHandle = OpenProcess(PROCESS_ALL_ACCESS, 0, PID); if std::cout << "Memory address: "; std::cin >> std::hex >> Memory; HANDLE değişkeni açarak OpenProcess ile gereken bayrakları ve parametreleri ayarladıktan sonra hata ayıklaması yapıyoruz. Eğer HANDLE değeri geçersiz ise, "An error occured." hatası verip 1 koduyla çıkış yapacaktır. Sonra da önceden belirttiğimiz sorgulanacak bellek adresine değer atama yapıyoruz. C++:Panoya kopyala std::cout << " " << std::endl; ReadProcessMemory(hHandle, LPCVOID , &Buffer, sizeof + 1, 0); std::cout << "Handle ID: " << hHandle << std::endl; std::cout << "Handle address: " << &hHandle << std::endl; std::cout << "Memory address: " << Memory << std::endl; std::cout << "Hexadecimal memory address: " << std::hex << Memory << std::endl; std::cout << "Read value is " << Buffer << "." << std::endl; std::system ; return 0; Terminal ekranını toparlama amaçlı bir çizgi çektikten sonra edindiğimiz bilgileri yazıyoruz. "Read value is" ile başlayan da ReadProcessMemory'dan Buffer'a aktarılan verinin çekilmesi sonucu oluşan sonuçtur. Pause dedikten sonra da 0 koduyla da çıkış yapıyoruz. Umarım işinize yarar, okuduğunuz için teşekkürler.