الاستيلاء على الذاكرة من عملية أخرى
-
21-09-2019 - |
سؤال
في Windows ، دعنا نقول أنني استخدمت حقن DLL للدخول في عملية أخرى. لقد قمت أيضًا ببعض screencaptures للذاكرة على العملية التي قمت بحقنها في موقع البيانات التي أريد سحبها. دعنا نقول أن هناك بيانات في العملية الأخرى في 0xaaaaaaaaa التي تحتوي على قيمة معينة. كيف يمكنني الحصول على هذه القيمة من هذه العملية حتى أتمكن من استخدامها في تطبيق الحقن الخاص بي؟ منذ أن تم حقنها في العملية ، هل يمكنني استخدام شيء مثل Memcpy؟
memcpy(value, 0xaaaaaaaa, 10);
أفترض أنه ربما يكون أكثر مشاركة من هذا؟
تحرير: إلى الردود أدناه ، لا أرى كيف يساعدني WM_CopyData كما هو الحال بالنسبة لإرسال البيانات إلى تطبيق آخر ، وليس لاسترداد البيانات من تطبيق موجود.
المحلول
يجب أن تكون قادرًا على استخدام ReadProcessMemory وظيفة.
أنظر أيضا كيف تكتب برنامج Perl أو Python أو Ruby لتغيير ذاكرة عملية أخرى على Windows؟
نصائح أخرى
في Windows كل عملية تتناول ذاكرتها الخاصة. هذا يعني أنه لا يمكنك فعل شيء مثل Memcpy مع وجود مؤشرين يشيران إلى ذكرى عمليتين مختلفتين.
يمكنك النظر في أي خيار للاتصالات interprocess: الملفات المعينة للذاكرة ، مآخذ ، أنابيب مسماة ، رسائل نافذة الحدث.
إليك مزيد من المعلومات حول IPC
جرب wm_copydata وخذ المساعدة من MSDN المتعلقة به.
يتم دعم آليات IPC التالية بواسطة Windows:
الحافظة
كوم
نسخة البيانات
DDE
رسم الخرائط
Mailslots
أنابيب
RPC
مآخذ Windows
مزيد من التفاصيل هنا الاتصالات interprocess
في حالتك سأستخدمها رسالة wm_copydata