Skip to content

۳. اسکن حافظه (Memory Scanning) ​

این قابلیت شبیه به "God Mode" در بازی‌هاست. شما می‌توانید کل حافظه RAM اپلیکیشن را برای پیدا کردن یک الگوی خاص (Pattern) جستجو کنید. این کار برای پیدا کردن کلیدهای رمزنگاری، توکن‌های مخفی یا تشخیص اینکه آیا فایل مخربی در حافظه لود شده یا خیر، عالی است.

الگوها به صورت بایت‌های Hex داده می‌شوند و می‌توانید از ?? به عنوان Wildcard (هر چیزی) استفاده کنید.

کد فریدا (جستجوی الگو):

javascript
var m = Process.findModuleByName("libnative-security.so")

/* الگوی Hex که دنبالش هستیم */
/* مثلا: 00 20 ?? AA (بایت سوم هر چیزی میتونه باشه) */
var pattern = "00 20 ?? AA"

console.log("[*] Scanning memory range: " + m.base + " size: " + m.size)

Memory.scan(m.base, m.size, pattern, {
    onMatch: function (address, size) {
        console.log("[!] Pattern found at: " + address)
        
        /* دیدن محتوای پیدا شده */        
        console.log(hexdump(address, { length: 16 }))
        
        /* توقف اسکن بعد از اولین پیدا شدن (اختیاری) */        
        return 'stop'
    },
    onError: function (reason) {
        console.log("[-] Memory scan error: " + reason)
    },
    onComplete: function () {
        console.log("[*] Scan finished.")
    }
})

هشدار پرفورمنس

اسکن کردن حافظه عملیات سنگینی است. سعی کنید محدوده اسکن را مشخص کنید (مثلا فقط داخل یک ماژول خاص مثل libnative.so) و کل حافظه گوشی را اسکن نکنید، وگرنه اپلیکیشن کرش می‌کند.