byOpen هو نسخة محسنة من مكتبة dlfunctions التي تتجاوز قيود نظام الهاتف المحمول.
بواسطة الميزات المفتوحة
يدعم تحميل واستخدام واجهة مكتبة نظام أندرويد في التطبيق (حتى لو لم يتم تحميل الخرائط بعد).
في نظام التشغيل Android 7 والإصدارات الأحدث، يُحظر استدعاء dlopen وSystem.load على الرغم من وجود مكتبات حاليًا مثل Nougat_dlfunctions على الإنترنت تتجاوز قيود التحميل من خلال العثور على مكتبة so من الخرائط.
ومع ذلك، لن تعمل هذه الطريقة مع المكتبة الموجودة في التطبيق والتي لم يتم تحميلها في الخرائط.
لا يدعم ByOpen تحميل dlopen المزيف من الخرائط فحسب، بل يمكنه أيضًا تحميل المكتبات التي لم يتم تحميلها بعد في الخرائط بالقوة، وتجاوز قيود النظام، لتحقيق dlopen أكثر عالمية.
ملحوظة: طريقة التنفيذ الحالية عالمية نسبيًا من الناحية النظرية، على الأقل تم اختبارها بشكل جيد على نظام التشغيل Android 10 الخاص بي، ولكن لم يتم اختبارها بالكامل بالتفصيل، يرجى تقييمها بنفسك لمعرفة ما إذا كان سيتم استخدامها أم لا.
بواسطة فتح المبادئ ذات الصلة
مبدأ التنفيذ المحدد بسيط نسبيًا، ويعتمد بشكل أساسي على فكرة وتنفيذ طريقة بسيطة لتجاوز قيود Android P على الواجهات التي لا تحتوي على SDK.
على الرغم من أن الغرض الرئيسي من هذه المقالة هو تجاوز واجهة برمجة تطبيقات الإخفاء، إلا أن الطريقة المستخدمة فيها لإخفاء نفسها على أنها استدعاء نظام يمكن استخدامها أيضًا مع System.loadLibrary لجعل النظام يعتقد أن النظام نفسه يستدعي System.loadLibrary.
يؤدي هذا إلى تجاوز قيود مساحة اسم أداة تحميل الفئة لنظام Android N، وتحميل أي مكتبة في النظام/النظام/lib إلى خرائط، ثم استخدام dlopen المزيف إلى dlsym.
عن طريق استخدام الواجهة المفتوحة
المكتبات والواجهات الثابتة ذات الصلة موجودة في: dlopen.h
طرق الاستخدام ذات الصلة هي تمامًا نفس طرق استخدام dlopen الأصلية
typedef by_char_t const* (*curl_version_t)();
by_pointer_t Handle = by_dlopen("libcurl.so", BY_RTLD_LAZY);
إذا (مقبض)
{
by_pointer_t addr = by_dlsym(handle, "curl_version");
إذا (أدر)
{
curl_version_t curl_version = (curl_version_t)addr;
by_print("curl_version: %s"، curl_version());
}
by_dl Close(handle);
}