में प्रक्रिया आधार पता प्राप्त करना मैं task_for_pid
/vm_read
का उपयोग कर प्रक्रिया की स्मृति को पढ़ने की कोशिश कर रहा हूं।मैक ओएसएक्स
uint32_t sz;
pointer_t buf;
task_t task;
pid_t pid = 9484;
kern_return_t error = task_for_pid(current_task(), pid, &task);
vm_read(task, 0x10e448000, 2048, &buf, &sz);
इस मामले में मैंने पहले 2048 बाइट पढ़े।
यह काम करता है जब मैं प्रक्रिया के मूल पते को जानता हूं (जिसे मैं जीडीबी "जानकारी साझा" का उपयोग कर पा सकता हूं - इस मामले में 0x10e448000
), लेकिन मैं रनटाइम पर मूल पता कैसे ढूंढूं (इसे देखे बिना जीडीबी के साथ)?
बहुत ही अनियंत्रित फ़ंक्शन के लिए सुपर उपयोगी स्निपेट। – Matt
कमांड लाइन से यह उपयोगी हो सकता है: नमूना $ pid 1 2>/dev/null | grep "लोड पता" – sdsykes