मैं एक बंद स्रोत 3 पार्टी कार्यक्रम में एक कार्यक्रम से स्मृति का उपयोग करते हैं, और मुझे पता है कि स्मृति मैं किसी दूसरे
- करने में सक्षम होना चाहता हूँ (पढ़ने के लिए ठीक है)
उपयोगिताएँ vmmap की तरह (1), ढेर (1), और लीक (1) मैं क्या जरूरत के लिए इसी तरह की सुविधा है लगता है, लेकिन मैं उनके स्रोत कहीं भी नहीं मिल सकता है (ओएस एक्स संस्करण) और यह पता नहीं लगा सकता कि वे कैसे काम करते हैं। अधिमानतः, यह सब उपयोगकर्ता-स्थान में किया जाएगा, संभवतः रूट के रूप में चल रहा है, अगर मैं इससे बच सकता हूं तो मैं स्मृति सुरक्षा को बाईपास करने के उद्देश्य से कर्नेल कोड लिखना नहीं चाहता हूं।
मैंने शॉर्ट (2) के दूसरे तर्क के रूप में जो पढ़ना है, उसके पते को पारित करने वाली साझा स्मृति का उपयोग करने का प्रयास किया, लेकिन यह अंततः असफल रहा (और शायद इसका इच्छित उपयोग और/या खराब अभ्यास नहीं) और अभी भी मुझे छोड़ दिया यह निर्धारित करने के लिए कि मैं किस स्मृति को वैसे भी ढूंढ रहा हूं (जिस प्रोग्राम में स्मृति का स्वामित्व था, उसे मेरे पते की रिपोर्ट करनी थी)।
क्या किसी निश्चित प्रोग्राम के लिए मेमोरी सुरक्षा को अक्षम करने का कोई तरीका है ताकि जब यह एक अलग प्रक्रिया को आवंटित स्मृति को पढ़ने/लिखने का प्रयास करे तो यह segfault नहीं होगा? क्या कोई बेहतर तरीका है जो मेरी पूरी प्रणाली को गंभीर रूप से भ्रष्ट करने के लिए बग को सक्षम नहीं करेगा?
यह कैसे प्राप्त किया जाता है?
क्या आपने ऐसी उपयोगिताओं की सिस्टम कॉल का पता लगाने का प्रयास किया है? – icktoofay
@icktoofay अच्छा विचार। पहले कभी नहीं किया। मैंने अभी शार्क.एप (अस्थिर गुई बकवास, केवल पहला सुझाव Google पाया है) का उपयोग करने की कोशिश की लेकिन कुछ समस्याएं हैं 1) प्रतीक नाम गायब हैं 2) शार्क दुर्घटनाग्रस्त रहता है (मैं यह देखने की कोशिश करने जा रहा हूं कि मैं कर सकता हूं या नहीं जीडीबी या कुछ के साथ ऐसा करें), और 3) मुझे उन सिस्कोल के लिए प्रलेखन नहीं मिल रहा है जो दिखते हैं कि वे प्रासंगिक हो सकते हैं (io_connect_method, io_connect_ (un) map_memory, कुछ mach_ * सामान)। 4) यह मुझे हमेशा डंप के माध्यम से खोदने के लिए ले जाएगा और यह पता लगाएगा कि इन कॉलों का सही तरीके से उपयोग कैसे करें। कहीं दस्तावेज होना चाहिए ... – user992364