سؤال

في 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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top