Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
nmmp — يُستخدم dex-vm لحماية ملف classes.dex في أندرويد | Kitploit
أدوات/GitHubGitHub/maoabc/nmmp
أمان أندرويدالتحليل الثابتالتحليل الديناميكي (عزل)تحليل الكوداختبار اختراق تطبيقات الجوالالهندسة العكسيةأمن الجوالتحليل الملفات الثنائية
GitHubmaoabc/nmmp

nmmp

يُستخدم dex-vm لحماية ملف classes.dex في أندرويد

عرض المستودع
1.2k38118منذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

nmmp

يعتمد على dex-vm لتشغيل بايت كود dalvik وبالتالي حماية dex وزيادة صعوبة فك الترجمة العكسية. ينقسم المشروع إلى جزأين: nmm-protect وهو مشروع Java خالص، يقوم بتحويل dex، وتحويل البيانات الموجودة في dex إلى بنى C، وتوليد مشروع ndk بعشوائية opcode، وبعد الترجمة يُنتج apk مُحصَّنًا. أما nmmvm فهو مشروع أندرويد، يتضمن تنفيذ dex-vm واختبارات مختلف تعليمات dalvik وغيرها.

nmm-protect

  • إعداد NDK ومتغيرات البيئة

بدون تجميع nmm-protect، يمكنك مباشرة الاطلاع على استخدامه لتوليد المشروع وملف APK النهائي، مثال على معالجة APK.

تم اختبار المثال في بيئة Linux، ويُفترض أن Windows سيعمل أيضًا بدون مشاكل، قم أولًا بتثبيت JDK وandroid sdk وndk.

قم بتنزيل vm-protect.jar، واضبط متغيرات البيئة ANDROID_SDK_HOME وANDROID_NDK_HOME:

export ANDROID_SDK_HOME=/opt/android-sdk
export ANDROID_NDK_HOME=/opt/android-sdk/ndk/22.1.7171670
export CMAKE_PATH=/opt/android-sdk/cmake/3.18.1/   #可选,不配置的话直接使用/bin/cmake
  • تقوية apk
java -jar vm-protect-xxx.jar apk input.apk convertRules.txt mapping.txt

بعد اكتمال التنفيذ، سيتم إنشاء دليل build في الدليل الذي يوجد فيه input.apk، ويحتوي على ملف apk الناتج النهائي (build/input-protect.apk)، ومشروع C الكامل dex2c (المبني على cmake)، وملفات .dex وغيرها التي تم إنشاؤها أثناء المعالجة.
بعد التشغيل الأول، سيتم إنشاء دليل tools في موقع jar، ويحتوي على config.json الذي يمكن تحريره لتكوين مسارات Android SDK وNDK ذات الصلة.

قام أحد الأصدقاء بكتابة واجهة رسومية GUI لتسهيل الاستخدام، يمكن لمن يحتاجها تجربتها، https://github.com/TimScriptov/nmmp

يجب محاذاة ملف apk الناتج باستخدام zipalign (الإصدارات الجديدة تستخدم zipflinger لمعالجة apk، لذا يمكن الاستغناء عن استخدام zipalign المنفصل) وتوقيعه باستخدام apksigner قبل أن يمكن تثبيته واستخدامه

apksigner sign --ks ~/.myapp.jks build/input-protect-align.apk
  • تقوية aab
java -jar vm-protect-xxx.jar aab test.aab convertRules.txt

بعد ذلك يلزم التوقيع باستخدام jarsigner، ويمكن أيضًا دمج signflinger لإجراء التوقيع

jarsigner -keystore ~/.myapp.jks -storepass pass -keypass pass test-protect.aab keyAlias
  • تقوية aar
java -jar vm-protect-xxx.jar aar testModule.aar convertRules.txt
  • تنزيل المشروع وبناؤه
git clone https://github.com/maoabc/nmmp.git
cd nmmp/nmm-protect
./gradlew arsc:build
./gradlew build

بعد النجاح، سيتم إنشاء fatjar قابل للتنفيذ مباشرة في build/libs.

  • قواعد الفئات والطرق التي تحتاج إلى تحويل

في حال عدم وجود ملف قواعد التحويل، سيتم تحويل الطرق في جميع الفئات داخل dex (باستثناء طرق البناء وطرق التهيئة الثابتة). تدعم القواعد بعض الحالات البسيطة فقط:

//支持的规则比较简单,*只是被转成正则表达式的.*,支持一些简单的继承关系
class * extends android.app.Activity
class * implements java.io.Serializable
class my.package.AClass
class my.package.* { *; }
class * extends java.util.ArrayList {
  if*;
}


class A {
}
class B extends A {
}
class C extends B {
}
//比如'class * extends A' 只会匹配B而不会再匹配C

nmmvm

nmmvm هو التنفيذ الفعلي لآلة dex الافتراضية، وله نقطة دخول واحدة فقط:

jvalue vmInterpret(
        JNIEnv *env,
        const vmCode *code,
        const vmResolver *dvmResolver
);

typedef struct {
    const u2 *insns;             //指令
    const u4 insnsSize;          //指令大小
    regptr_t *regs;                    //寄存器
    u1 *reg_flags;               //寄存器数据类型标记,主要标记是否为对象
    const u1 *triesHandlers;     //异常表
} vmCode;


typedef struct {

    const vmField *(*dvmResolveField)(JNIEnv *env, u4 idx, bool isStatic);

    const vmMethod *(*dvmResolveMethod)(JNIEnv *env, u4 idx, bool isStatic);

    //从类型常量池取得类型名
    const char *(*dvmResolveTypeUtf)(JNIEnv *env, u4 idx);

    //直接返回jclass对象,本地引用需要释放引用
    jclass (*dvmResolveClass)(JNIEnv *env, u4 idx);

    //根据类型名得到class
    jclass (*dvmFindClass)(JNIEnv *env, const char *type);

    //const_string指令加载的字符串对象
    jstring (*dvmConstantString)(JNIEnv *env, u4 idx);

} vmResolver;

يوفر vmCode التعليمات المطلوبة للتنفيذ وجدول الاستثناءات ومساحة السجلات، بينما يحتوي vmResolver على مجموعة من مؤشرات الدوال التي توفر الرموز وقت التشغيل، مثل field وmethod وغيرها. ومن خلال تخصيص هذين المعاملين يمكن تحقيق أساليب تحصين مختلفة، فعلى سبيل المثال يحتوي test.cpp في المشروع على vmResolver بسيط مبني على libdex، يُستخدم أساسًا للتطوير والاختبار. أما nmm-protect فيقوم بتحويل بيانات .dex ذات الصلة إلى بنى C، ويتضمن أيضًا عشوائية opcode وغيرها، وهو قابل للاستخدام العملي بشكل أساسي.

تحصين وحدة aar

تم حاليًا تنفيذ التحصين المتعلق بالوحدات، والاستخدام مشابه لتحصين apk، وإذا واجهت أي مشكلة يمكنك فتح issue.

Licences

يُصدر nmm-protect بموجب ترخيص gpl، nmm-protect licence، ويُصدر جزء dex-vm بموجب ترخيص Apache، nmmvm licence. يتم حزم جزء vm فقط داخل apk، وnmm-protect يقوم فقط بتحويل dex، ولا يؤثر الترخيص على النتائج المُنشأة.

تنزيل الأداة