Skip to content

۲. دستکاری System Properties (Anti-Emulator) ​

سیستم‌عامل اندروید صدها متغیر سیستمی دارد که مشخصات دستگاه را لو می‌دهند. مثلا متغیر ro.product.model در شبیه‌سازها معمولا حاوی کلمه sdk یا generic است. اپلیکیشن‌ها با System.getProperty این را چک می‌کنند.

کد فریدا (تغییر مشخصات دستگاه):

javascript
Java.perform(function () {
    var SystemProperties = Java.use("android.os.SystemProperties")
    var System = Java.use("java.lang.System")

    /* هوک کردن متد get برای ویژگی‌های سیستمی اندروید */    
    SystemProperties.get.overload('java.lang.String').implementation = function (key) {
        var value = this.get(key)
        
        /* اگر اپلیکیشن دنبال مدل گوشی بود، یک گوشی واقعی را شبیه‌سازی کن */        
        if (key === "ro.product.model") {
            return "Samsung Galaxy S21"
        }
        
        return value
    }

    /* هوک کردن متدgetProperty برای ویژگی‌های عمومی جاوا */    
    System.getProperty.overload('java.lang.String').implementation = function (key) {
        if (key === "http.proxyHost") {
            return "" // مخفی کردن پروکسی از دید اپلیکیشن
        }
        return this.getProperty(key)
    }
})