Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float IsMoveSpeedMultiplier = 1.0f;
- float IsAttackSpeedMultiplier = 1.0f;
- float IsDamageMultiplier = 1.0f;
- // مضاعفات الخصائص المستخرجة من EntityProperty
- float IsHPMultiplier = 1.0f;
- float IsMaxHPMultiplier = 1.0f;
- float IsMPMultiplier = 1.0f;
- float IsMaxMPMultiplier = 1.0f;
- float IsEnergyMultiplier = 1.0f;
- float IsMaxEnergyMultiplier = 1.0f;
- float IsPhysicsAttackMultiplier = 1.0f;
- float IsMagicAttackMultiplier = 1.0f;
- float IsPhysicsDefMultiplier = 1.0f;
- float IsMagicDefMultiplier = 1.0f;
- float IsGoldMultiplier = 1.0f;
- float IsViewMultiplier = 1.0f;
- float IsAttackDistMultiplier = 1.0f;
- // الخصائص الإضافية للمضاعفة
- float IsPropMoveSpeedMultiplier = 1.0f;
- float IsPropAttackSpeedMultiplier = 1.0f;
- float IsPhysicsCritMultiplier = 1.0f;
- float IsMagicCritMultiplier = 1.0f;
- float IsPhysicsPenetrateMultiplier = 1.0f;
- float IsMagicPenetrateMultiplier = 1.0f;
- float IsSpellCoolingMultiplier = 1.0f;
- float IsHitRateMultiplier = 1.0f;
- float IsPhysicsVampireMultiplier = 1.0f;
- float IsMagicVampireMultiplier = 1.0f;
- void *hack_thread(void *);
- // ================= قائمة الخصائص الظاهرة في المنيو =================
- jobjectArray GetFeatureList(JNIEnv *env, jobject context) {
- static bool threadStarted = false;
- if (!threadStarted) {
- pthread_t ptid;
- pthread_create(&ptid, NULL, hack_thread, NULL);
- threadStarted = true;
- }
- jobjectArray ret;
- const char * features[] = {
- OBFUSCATE("0_InputValue_Move Speed Multiplier (Unit)"),
- OBFUSCATE("1_InputValue_Attack Speed Multiplier (Unit)"),
- OBFUSCATE("2_InputValue_Damage Multiplier"),
- OBFUSCATE("3_InputValue_Current HP Multiplier"),
- OBFUSCATE("4_InputValue_Max HP Multiplier"),
- OBFUSCATE("5_InputValue_Current MP Multiplier"),
- OBFUSCATE("6_InputValue_Max MP Multiplier"),
- OBFUSCATE("7_InputValue_Current Energy Multiplier"),
- OBFUSCATE("8_InputValue_Max Energy Multiplier"),
- OBFUSCATE("9_InputValue_Physics Attack Multiplier"),
- OBFUSCATE("10_InputValue_Magic Attack Multiplier"),
- OBFUSCATE("11_InputValue_Physics Def Multiplier"),
- OBFUSCATE("12_InputValue_Magic Def Multiplier"),
- OBFUSCATE("13_InputValue_Gold Multiplier"),
- OBFUSCATE("14_InputValue_View Range Multiplier"),
- OBFUSCATE("15_InputValue_Attack Distance Multiplier"),
- OBFUSCATE("16_InputValue_Property Move Speed Multiplier"),
- OBFUSCATE("17_InputValue_Property Attack Speed Multiplier"),
- OBFUSCATE("18_InputValue_Physics Crit Multiplier"),
- OBFUSCATE("19_InputValue_Magic Crit Multiplier"),
- OBFUSCATE("20_InputValue_Physics Penetrate Multiplier"),
- OBFUSCATE("21_InputValue_Magic Penetrate Multiplier"),
- OBFUSCATE("22_InputValue_Spell Cooling Multiplier"),
- OBFUSCATE("23_InputValue_Hit Rate Multiplier"),
- OBFUSCATE("24_InputValue_Physics Vampire Multiplier"),
- OBFUSCATE("25_InputValue_Magic Vampire Multiplier")
- };
- int totalFeatures = sizeof(features) / sizeof(features[0]);
- ret = (jobjectArray)env->NewObjectArray(totalFeatures, env->FindClass("java/lang/String"), env->NewStringUTF(""));
- for (int i = 0; i < totalFeatures; i++) {
- env->SetObjectArrayElement(ret, i, env->NewStringUTF(features[i]));
- }
- return ret;
- }
- // ================= صياغة الهوكات الشاملة والمستقرة =================
- // هوكات كلاس UnitController
- void (*old_SetMoveSpeed)(void *instance, int speed);
- void hook_SetMoveSpeed(void *instance, int speed) {
- if (instance != NULL && IsMoveSpeedMultiplier > 1.0f) {
- speed = (int)(speed * IsMoveSpeedMultiplier);
- }
- if (old_SetMoveSpeed) old_SetMoveSpeed(instance, speed);
- }
- void (*old_SetAttackSpeed)(void *instance, int oldSpeed, int newSpeed);
- void hook_SetAttackSpeed(void *instance, int oldSpeed, int newSpeed) {
- if (instance != NULL && IsAttackSpeedMultiplier > 1.0f) {
- newSpeed = (int)(newSpeed * IsAttackSpeedMultiplier);
- oldSpeed = (int)(oldSpeed * IsAttackSpeedMultiplier);
- }
- if (old_SetAttackSpeed) old_SetAttackSpeed(instance, oldSpeed, newSpeed);
- }
- void (*old_PrintDamage)(void *instance, int dmg, int attackerID, int atkerPartyID, bool bCrit, int type, bool isRealDmg);
- void hook_PrintDamage(void *instance, int dmg, int attackerID, int atkerPartyID, bool bCrit, int type, bool isRealDmg) {
- if (instance != NULL && IsDamageMultiplier > 1.0f) {
- dmg = (int)(dmg * IsDamageMultiplier);
- }
- if (old_PrintDamage) old_PrintDamage(instance, dmg, attackerID, atkerPartyID, bCrit, type, isRealDmg);
- }
- // هوكات كلاس EntityProperty
- int (*old_get_HP)(void *instance);
- int hook_get_HP(void *instance) {
- int val = old_get_HP(instance);
- if (instance != NULL && IsHPMultiplier > 1.0f) return (int)(val * IsHPMultiplier);
- return val;
- }
- int (*old_get_MaxHP)(void *instance);
- int hook_get_MaxHP(void *instance) {
- int val = old_get_MaxHP(instance);
- if (instance != NULL && IsMaxHPMultiplier > 1.0f) return (int)(val * IsMaxHPMultiplier);
- return val;
- }
- int (*old_get_MP)(void *instance);
- int hook_get_MP(void *instance) {
- int val = old_get_MP(instance);
- if (instance != NULL && IsMPMultiplier > 1.0f) return (int)(val * IsMPMultiplier);
- return val;
- }
- int (*old_get_MaxMP)(void *instance);
- int hook_get_MaxMP(void *instance) {
- int val = old_get_MaxMP(instance);
- if (instance != NULL && IsMaxMPMultiplier > 1.0f) return (int)(val * IsMaxMPMultiplier);
- return val;
- }
- int (*old_get_Energy)(void *instance);
- int hook_get_Energy(void *instance) {
- int val = old_get_Energy(instance);
- if (instance != NULL && IsEnergyMultiplier > 1.0f) return (int)(val * IsEnergyMultiplier);
- return val;
- }
- int (*old_get_MaxEnergy)(void *instance);
- int hook_get_MaxEnergy(void *instance) {
- int val = old_get_MaxEnergy(instance);
- if (instance != NULL && IsMaxEnergyMultiplier > 1.0f) return (int)(val * IsMaxEnergyMultiplier);
- return val;
- }
- int (*old_get_PhysicsAttack)(void *instance);
- int hook_get_PhysicsAttack(void *instance) {
- int val = old_get_PhysicsAttack(instance);
- if (instance != NULL && IsPhysicsAttackMultiplier > 1.0f) return (int)(val * IsPhysicsAttackMultiplier);
- return val;
- }
- int (*old_get_MagicAttack)(void *instance);
- int hook_get_MagicAttack(void *instance) {
- int val = old_get_MagicAttack(instance);
- if (instance != NULL && IsMagicAttackMultiplier > 1.0f) return (int)(val * IsMagicAttackMultiplier);
- return val;
- }
- int (*old_get_PhysicsDef)(void *instance);
- int hook_get_PhysicsDef(void *instance) {
- int val = old_get_PhysicsDef(instance);
- if (instance != NULL && IsPhysicsDefMultiplier > 1.0f) return (int)(val * IsPhysicsDefMultiplier);
- return val;
- }
- int (*old_get_MagicDef)(void *instance);
- int hook_get_MagicDef(void *instance) {
- int val = old_get_MagicDef(instance);
- if (instance != NULL && IsMagicDefMultiplier > 1.0f) return (int)(val * IsMagicDefMultiplier);
- return val;
- }
- int (*old_get_Gold)(void *instance);
- int hook_get_Gold(void *instance) {
- int val = old_get_Gold(instance);
- if (instance != NULL && IsGoldMultiplier > 1.0f) return (int)(val * IsGoldMultiplier);
- return val;
- }
- int (*old_get_View)(void *instance);
- int hook_get_View(void *instance) {
- int val = old_get_View(instance);
- if (instance != NULL && IsViewMultiplier > 1.0f) return (int)(val * IsViewMultiplier);
- return val;
- }
- int (*old_get_PhysicsAttackDist)(void *instance);
- int hook_get_PhysicsAttackDist(void *instance) {
- int val = old_get_PhysicsAttackDist(instance);
- if (instance != NULL && IsAttackDistMultiplier > 1.0f) return (int)(val * IsAttackDistMultiplier);
- return val;
- }
- int (*old_get_MoveSpeed)(void *instance);
- int hook_get_MoveSpeed(void *instance) {
- int val = old_get_MoveSpeed(instance);
- if (instance != NULL && IsPropMoveSpeedMultiplier > 1.0f) return (int)(val * IsPropMoveSpeedMultiplier);
- return val;
- }
- int (*old_get_PhysicsAttackSpeed)(void *instance);
- int hook_get_PhysicsAttackSpeed(void *instance) {
- int val = old_get_PhysicsAttackSpeed(instance);
- if (instance != NULL && IsPropAttackSpeedMultiplier > 1.0f) return (int)(val * IsPropAttackSpeedMultiplier);
- return val;
- }
- int (*old_get_PhysicsCritPerc)(void *instance);
- int hook_get_PhysicsCritPerc(void *instance) {
- int val = old_get_PhysicsCritPerc(instance);
- if (instance != NULL && IsPhysicsCritMultiplier > 1.0f) return (int)(val * IsPhysicsCritMultiplier);
- return val;
- }
- int (*old_get_MagicCritPerc)(void *instance);
- int hook_get_MagicCritPerc(void *instance) {
- int val = old_get_MagicCritPerc(instance);
- if (instance != NULL && IsMagicCritMultiplier > 1.0f) return (int)(val * IsMagicCritMultiplier);
- return val;
- }
- int (*old_get_PhysicsPenetrate)(void *instance);
- int hook_get_PhysicsPenetrate(void *instance) {
- int val = old_get_PhysicsPenetrate(instance);
- if (instance != NULL && IsPhysicsPenetrateMultiplier > 1.0f) return (int)(val * IsPhysicsPenetrateMultiplier);
- return val;
- }
- int (*old_get_MagicPenetrate)(void *instance);
- int hook_get_MagicPenetrate(void *instance) {
- int val = old_get_MagicPenetrate(instance);
- if (instance != NULL && IsMagicPenetrateMultiplier > 1.0f) return (int)(val * IsMagicPenetrateMultiplier);
- return val;
- }
- int (*old_get_SpellCoolingPer)(void *instance);
- int hook_get_SpellCoolingPer(void *instance) {
- int val = old_get_SpellCoolingPer(instance);
- if (instance != NULL && IsSpellCoolingMultiplier > 1.0f) return (int)(val * IsSpellCoolingMultiplier);
- return val;
- }
- int (*old_get_HitRate)(void *instance);
- int hook_get_HitRate(void *instance) {
- int val = old_get_HitRate(instance);
- if (instance != NULL && IsHitRateMultiplier > 1.0f) return (int)(val * IsHitRateMultiplier);
- return val;
- }
- int (*old_get_PhysicsVampirePerc)(void *instance);
- int hook_get_PhysicsVampirePerc(void *instance) {
- int val = old_get_PhysicsVampirePerc(instance);
- if (instance != NULL && IsPhysicsVampireMultiplier > 1.0f) return (int)(val * IsPhysicsVampireMultiplier);
- return val;
- }
- int (*old_get_MagicVampirePerc)(void *instance);
- int hook_get_MagicVampirePerc(void *instance) {
- int val = old_get_MagicVampirePerc(instance);
- if (instance != NULL && IsMagicVampireMultiplier > 1.0f) return (int)(val * IsMagicVampireMultiplier);
- return val;
- }
- // ================= دالة التحكم بالأزرار (Changes) =================
- void Changes(JNIEnv *env, jclass clazz, jobject obj, jint featureNum, jstring featureName, jint value, jlong Lvalue, jboolean booleanValue, jstring textValue) {
- switch (featureNum) {
- case 0: IsMoveSpeedMultiplier = value; break;
- case 1: IsAttackSpeedMultiplier = value; break;
- case 2: IsDamageMultiplier = value; break;
- case 3: IsHPMultiplier = value; break;
- case 4: IsMaxHPMultiplier = value; break;
- case 5: IsMPMultiplier = value; break;
- case 6: IsMaxMPMultiplier = value; break;
- case 7: IsEnergyMultiplier = value; break;
- case 8: IsMaxEnergyMultiplier = value; break;
- case 9: IsPhysicsAttackMultiplier = value; break;
- case 10: IsMagicAttackMultiplier = value; break;
- case 11: IsPhysicsDefMultiplier = value; break;
- case 12: IsMagicDefMultiplier = value; break;
- case 13: IsGoldMultiplier = value; break;
- case 14: IsViewMultiplier = value; break;
- case 15: IsAttackDistMultiplier = value; break;
- case 16: IsPropMoveSpeedMultiplier = value; break;
- case 17: IsPropAttackSpeedMultiplier = value; break;
- case 18: IsPhysicsCritMultiplier = value; break;
- case 19: IsMagicCritMultiplier = value; break;
- case 20: IsPhysicsPenetrateMultiplier = value; break;
- case 21: IsMagicPenetrateMultiplier = value; break;
- case 22: IsSpellCoolingMultiplier = value; break;
- case 23: IsHitRateMultiplier = value; break;
- case 24: IsPhysicsVampireMultiplier = value; break;
- case 25: IsMagicVampireMultiplier = value; break;
- default: break;
- }
- }
- // ================= خيط حقن الـ Hooks وتربيط العناوين دالياً =================
- void *hack_thread(void *) {
- do {
- sleep(1);
- } while (!isLibraryLoaded("libil2cpp.so"));
- // هوكات كلاس UnitController (السرعة والضرر الأساسية المستقرة)
- HOOK("libil2cpp.so", "0x3AFC760", hook_SetMoveSpeed, old_SetMoveSpeed);
- HOOK("libil2cpp.so", "0x3AFB754", hook_SetAttackSpeed, old_SetAttackSpeed);
- HOOK("libil2cpp.so", "0x3AFB8F8", hook_PrintDamage, old_PrintDamage);
- // هوكات كلاس EntityProperty (ميزات الذهب والخصائص بدون تداخل الـ Instance)
- HOOK("libil2cpp.so", "0x3474548", hook_get_Gold, old_get_Gold);
- HOOK("libil2cpp.so", "0x3471CEC", hook_get_HP, old_get_HP);
- HOOK("libil2cpp.so", "0x3472058", hook_get_MaxHP, old_get_MaxHP);
- HOOK("libil2cpp.so", "0x34720E0", hook_get_MP, old_get_MP);
- HOOK("libil2cpp.so", "0x34723A0", hook_get_MaxMP, old_get_MaxMP);
- HOOK("libil2cpp.so", "0x3472428", hook_get_Energy, old_get_Energy);
- HOOK("libil2cpp.so", "0x34724B0", hook_get_MaxEnergy, old_get_MaxEnergy);
- HOOK("libil2cpp.so", "0x347291C", hook_get_PhysicsAttack, old_get_PhysicsAttack);
- HOOK("libil2cpp.so", "0x34729A4", hook_get_MagicAttack, old_get_MagicAttack);
- HOOK("libil2cpp.so", "0x3472A2C", hook_get_PhysicsDef, old_get_PhysicsDef);
- HOOK("libil2cpp.so", "0x3472E0C", hook_get_MagicDef, old_get_MagicDef);
- HOOK("libil2cpp.so", "0x3471C64", hook_get_View, old_get_View);
- HOOK("libil2cpp.so", "0x3473D58", hook_get_PhysicsAttackDist, old_get_PhysicsAttackDist);
- HOOK("libil2cpp.so", "0x34726A0", hook_get_MoveSpeed, old_get_MoveSpeed);
- HOOK("libil2cpp.so", "0x3474768", hook_get_PhysicsAttackSpeed, old_get_PhysicsAttackSpeed);
- HOOK("libil2cpp.so", "0x34731C0", hook_get_PhysicsCritPerc, old_get_PhysicsCritPerc);
- HOOK("libil2cpp.so", "0x3473838", hook_get_MagicCritPerc, old_get_MagicCritPerc);
- HOOK("libil2cpp.so", "0x3472ED0", hook_get_PhysicsPenetrate, old_get_PhysicsPenetrate);
- HOOK("libil2cpp.so", "0x3473004", hook_get_MagicPenetrate, old_get_MagicPenetrate);
- HOOK("libil2cpp.so", "0x34747F0", hook_get_SpellCoolingPer, old_get_SpellCoolingPer);
- HOOK("libil2cpp.so", "0x3473F0C", hook_get_HitRate, old_get_HitRate);
- HOOK("libil2cpp.so", "0x3473664", hook_get_PhysicsVampirePerc, old_get_PhysicsVampirePerc);
- HOOK("libil2cpp.so", "0x3473C0C", hook_get_MagicVampirePerc, old_get_MagicVampirePerc);
- return NULL;
- }
Advertisement
Add Comment
Please, Sign In to add comment