H9999

dump cs

Nov 3rd, 2026
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.44 KB | None | 0 0
  1. float IsMoveSpeedMultiplier = 1.0f;
  2. float IsAttackSpeedMultiplier = 1.0f;
  3. float IsDamageMultiplier = 1.0f;
  4.  
  5. // مضاعفات الخصائص المستخرجة من EntityProperty
  6. float IsHPMultiplier = 1.0f;
  7. float IsMaxHPMultiplier = 1.0f;
  8. float IsMPMultiplier = 1.0f;
  9. float IsMaxMPMultiplier = 1.0f;
  10. float IsEnergyMultiplier = 1.0f;
  11. float IsMaxEnergyMultiplier = 1.0f;
  12. float IsPhysicsAttackMultiplier = 1.0f;
  13. float IsMagicAttackMultiplier = 1.0f;
  14. float IsPhysicsDefMultiplier = 1.0f;
  15. float IsMagicDefMultiplier = 1.0f;
  16. float IsGoldMultiplier = 1.0f;
  17. float IsViewMultiplier = 1.0f;
  18. float IsAttackDistMultiplier = 1.0f;
  19.  
  20. // الخصائص الإضافية للمضاعفة
  21. float IsPropMoveSpeedMultiplier = 1.0f;
  22. float IsPropAttackSpeedMultiplier = 1.0f;
  23. float IsPhysicsCritMultiplier = 1.0f;
  24. float IsMagicCritMultiplier = 1.0f;
  25. float IsPhysicsPenetrateMultiplier = 1.0f;
  26. float IsMagicPenetrateMultiplier = 1.0f;
  27. float IsSpellCoolingMultiplier = 1.0f;
  28. float IsHitRateMultiplier = 1.0f;
  29. float IsPhysicsVampireMultiplier = 1.0f;
  30. float IsMagicVampireMultiplier = 1.0f;
  31.  
  32. void *hack_thread(void *);
  33.  
  34. // ================= قائمة الخصائص الظاهرة في المنيو =================
  35. jobjectArray GetFeatureList(JNIEnv *env, jobject context) {
  36. static bool threadStarted = false;
  37. if (!threadStarted) {
  38. pthread_t ptid;
  39. pthread_create(&ptid, NULL, hack_thread, NULL);
  40. threadStarted = true;
  41. }
  42.  
  43. jobjectArray ret;
  44. const char * features[] = {
  45. OBFUSCATE("0_InputValue_Move Speed Multiplier (Unit)"),
  46. OBFUSCATE("1_InputValue_Attack Speed Multiplier (Unit)"),
  47. OBFUSCATE("2_InputValue_Damage Multiplier"),
  48. OBFUSCATE("3_InputValue_Current HP Multiplier"),
  49. OBFUSCATE("4_InputValue_Max HP Multiplier"),
  50. OBFUSCATE("5_InputValue_Current MP Multiplier"),
  51. OBFUSCATE("6_InputValue_Max MP Multiplier"),
  52. OBFUSCATE("7_InputValue_Current Energy Multiplier"),
  53. OBFUSCATE("8_InputValue_Max Energy Multiplier"),
  54. OBFUSCATE("9_InputValue_Physics Attack Multiplier"),
  55. OBFUSCATE("10_InputValue_Magic Attack Multiplier"),
  56. OBFUSCATE("11_InputValue_Physics Def Multiplier"),
  57. OBFUSCATE("12_InputValue_Magic Def Multiplier"),
  58. OBFUSCATE("13_InputValue_Gold Multiplier"),
  59. OBFUSCATE("14_InputValue_View Range Multiplier"),
  60. OBFUSCATE("15_InputValue_Attack Distance Multiplier"),
  61. OBFUSCATE("16_InputValue_Property Move Speed Multiplier"),
  62. OBFUSCATE("17_InputValue_Property Attack Speed Multiplier"),
  63. OBFUSCATE("18_InputValue_Physics Crit Multiplier"),
  64. OBFUSCATE("19_InputValue_Magic Crit Multiplier"),
  65. OBFUSCATE("20_InputValue_Physics Penetrate Multiplier"),
  66. OBFUSCATE("21_InputValue_Magic Penetrate Multiplier"),
  67. OBFUSCATE("22_InputValue_Spell Cooling Multiplier"),
  68. OBFUSCATE("23_InputValue_Hit Rate Multiplier"),
  69. OBFUSCATE("24_InputValue_Physics Vampire Multiplier"),
  70. OBFUSCATE("25_InputValue_Magic Vampire Multiplier")
  71. };
  72.  
  73. int totalFeatures = sizeof(features) / sizeof(features[0]);
  74. ret = (jobjectArray)env->NewObjectArray(totalFeatures, env->FindClass("java/lang/String"), env->NewStringUTF(""));
  75. for (int i = 0; i < totalFeatures; i++) {
  76. env->SetObjectArrayElement(ret, i, env->NewStringUTF(features[i]));
  77. }
  78. return ret;
  79. }
  80.  
  81. // ================= صياغة الهوكات الشاملة والمستقرة =================
  82.  
  83. // هوكات كلاس UnitController
  84. void (*old_SetMoveSpeed)(void *instance, int speed);
  85. void hook_SetMoveSpeed(void *instance, int speed) {
  86. if (instance != NULL && IsMoveSpeedMultiplier > 1.0f) {
  87. speed = (int)(speed * IsMoveSpeedMultiplier);
  88. }
  89. if (old_SetMoveSpeed) old_SetMoveSpeed(instance, speed);
  90. }
  91.  
  92. void (*old_SetAttackSpeed)(void *instance, int oldSpeed, int newSpeed);
  93. void hook_SetAttackSpeed(void *instance, int oldSpeed, int newSpeed) {
  94. if (instance != NULL && IsAttackSpeedMultiplier > 1.0f) {
  95. newSpeed = (int)(newSpeed * IsAttackSpeedMultiplier);
  96. oldSpeed = (int)(oldSpeed * IsAttackSpeedMultiplier);
  97. }
  98. if (old_SetAttackSpeed) old_SetAttackSpeed(instance, oldSpeed, newSpeed);
  99. }
  100.  
  101. void (*old_PrintDamage)(void *instance, int dmg, int attackerID, int atkerPartyID, bool bCrit, int type, bool isRealDmg);
  102. void hook_PrintDamage(void *instance, int dmg, int attackerID, int atkerPartyID, bool bCrit, int type, bool isRealDmg) {
  103. if (instance != NULL && IsDamageMultiplier > 1.0f) {
  104. dmg = (int)(dmg * IsDamageMultiplier);
  105. }
  106. if (old_PrintDamage) old_PrintDamage(instance, dmg, attackerID, atkerPartyID, bCrit, type, isRealDmg);
  107. }
  108.  
  109. // هوكات كلاس EntityProperty
  110. int (*old_get_HP)(void *instance);
  111. int hook_get_HP(void *instance) {
  112. int val = old_get_HP(instance);
  113. if (instance != NULL && IsHPMultiplier > 1.0f) return (int)(val * IsHPMultiplier);
  114. return val;
  115. }
  116.  
  117. int (*old_get_MaxHP)(void *instance);
  118. int hook_get_MaxHP(void *instance) {
  119. int val = old_get_MaxHP(instance);
  120. if (instance != NULL && IsMaxHPMultiplier > 1.0f) return (int)(val * IsMaxHPMultiplier);
  121. return val;
  122. }
  123.  
  124. int (*old_get_MP)(void *instance);
  125. int hook_get_MP(void *instance) {
  126. int val = old_get_MP(instance);
  127. if (instance != NULL && IsMPMultiplier > 1.0f) return (int)(val * IsMPMultiplier);
  128. return val;
  129. }
  130.  
  131. int (*old_get_MaxMP)(void *instance);
  132. int hook_get_MaxMP(void *instance) {
  133. int val = old_get_MaxMP(instance);
  134. if (instance != NULL && IsMaxMPMultiplier > 1.0f) return (int)(val * IsMaxMPMultiplier);
  135. return val;
  136. }
  137.  
  138. int (*old_get_Energy)(void *instance);
  139. int hook_get_Energy(void *instance) {
  140. int val = old_get_Energy(instance);
  141. if (instance != NULL && IsEnergyMultiplier > 1.0f) return (int)(val * IsEnergyMultiplier);
  142. return val;
  143. }
  144.  
  145. int (*old_get_MaxEnergy)(void *instance);
  146. int hook_get_MaxEnergy(void *instance) {
  147. int val = old_get_MaxEnergy(instance);
  148. if (instance != NULL && IsMaxEnergyMultiplier > 1.0f) return (int)(val * IsMaxEnergyMultiplier);
  149. return val;
  150. }
  151.  
  152. int (*old_get_PhysicsAttack)(void *instance);
  153. int hook_get_PhysicsAttack(void *instance) {
  154. int val = old_get_PhysicsAttack(instance);
  155. if (instance != NULL && IsPhysicsAttackMultiplier > 1.0f) return (int)(val * IsPhysicsAttackMultiplier);
  156. return val;
  157. }
  158.  
  159. int (*old_get_MagicAttack)(void *instance);
  160. int hook_get_MagicAttack(void *instance) {
  161. int val = old_get_MagicAttack(instance);
  162. if (instance != NULL && IsMagicAttackMultiplier > 1.0f) return (int)(val * IsMagicAttackMultiplier);
  163. return val;
  164. }
  165.  
  166. int (*old_get_PhysicsDef)(void *instance);
  167. int hook_get_PhysicsDef(void *instance) {
  168. int val = old_get_PhysicsDef(instance);
  169. if (instance != NULL && IsPhysicsDefMultiplier > 1.0f) return (int)(val * IsPhysicsDefMultiplier);
  170. return val;
  171. }
  172.  
  173. int (*old_get_MagicDef)(void *instance);
  174. int hook_get_MagicDef(void *instance) {
  175. int val = old_get_MagicDef(instance);
  176. if (instance != NULL && IsMagicDefMultiplier > 1.0f) return (int)(val * IsMagicDefMultiplier);
  177. return val;
  178. }
  179.  
  180. int (*old_get_Gold)(void *instance);
  181. int hook_get_Gold(void *instance) {
  182. int val = old_get_Gold(instance);
  183. if (instance != NULL && IsGoldMultiplier > 1.0f) return (int)(val * IsGoldMultiplier);
  184. return val;
  185. }
  186.  
  187. int (*old_get_View)(void *instance);
  188. int hook_get_View(void *instance) {
  189. int val = old_get_View(instance);
  190. if (instance != NULL && IsViewMultiplier > 1.0f) return (int)(val * IsViewMultiplier);
  191. return val;
  192. }
  193.  
  194. int (*old_get_PhysicsAttackDist)(void *instance);
  195. int hook_get_PhysicsAttackDist(void *instance) {
  196. int val = old_get_PhysicsAttackDist(instance);
  197. if (instance != NULL && IsAttackDistMultiplier > 1.0f) return (int)(val * IsAttackDistMultiplier);
  198. return val;
  199. }
  200.  
  201. int (*old_get_MoveSpeed)(void *instance);
  202. int hook_get_MoveSpeed(void *instance) {
  203. int val = old_get_MoveSpeed(instance);
  204. if (instance != NULL && IsPropMoveSpeedMultiplier > 1.0f) return (int)(val * IsPropMoveSpeedMultiplier);
  205. return val;
  206. }
  207.  
  208. int (*old_get_PhysicsAttackSpeed)(void *instance);
  209. int hook_get_PhysicsAttackSpeed(void *instance) {
  210. int val = old_get_PhysicsAttackSpeed(instance);
  211. if (instance != NULL && IsPropAttackSpeedMultiplier > 1.0f) return (int)(val * IsPropAttackSpeedMultiplier);
  212. return val;
  213. }
  214.  
  215. int (*old_get_PhysicsCritPerc)(void *instance);
  216. int hook_get_PhysicsCritPerc(void *instance) {
  217. int val = old_get_PhysicsCritPerc(instance);
  218. if (instance != NULL && IsPhysicsCritMultiplier > 1.0f) return (int)(val * IsPhysicsCritMultiplier);
  219. return val;
  220. }
  221.  
  222. int (*old_get_MagicCritPerc)(void *instance);
  223. int hook_get_MagicCritPerc(void *instance) {
  224. int val = old_get_MagicCritPerc(instance);
  225. if (instance != NULL && IsMagicCritMultiplier > 1.0f) return (int)(val * IsMagicCritMultiplier);
  226. return val;
  227. }
  228.  
  229. int (*old_get_PhysicsPenetrate)(void *instance);
  230. int hook_get_PhysicsPenetrate(void *instance) {
  231. int val = old_get_PhysicsPenetrate(instance);
  232. if (instance != NULL && IsPhysicsPenetrateMultiplier > 1.0f) return (int)(val * IsPhysicsPenetrateMultiplier);
  233. return val;
  234. }
  235.  
  236. int (*old_get_MagicPenetrate)(void *instance);
  237. int hook_get_MagicPenetrate(void *instance) {
  238. int val = old_get_MagicPenetrate(instance);
  239. if (instance != NULL && IsMagicPenetrateMultiplier > 1.0f) return (int)(val * IsMagicPenetrateMultiplier);
  240. return val;
  241. }
  242.  
  243. int (*old_get_SpellCoolingPer)(void *instance);
  244. int hook_get_SpellCoolingPer(void *instance) {
  245. int val = old_get_SpellCoolingPer(instance);
  246. if (instance != NULL && IsSpellCoolingMultiplier > 1.0f) return (int)(val * IsSpellCoolingMultiplier);
  247. return val;
  248. }
  249.  
  250. int (*old_get_HitRate)(void *instance);
  251. int hook_get_HitRate(void *instance) {
  252. int val = old_get_HitRate(instance);
  253. if (instance != NULL && IsHitRateMultiplier > 1.0f) return (int)(val * IsHitRateMultiplier);
  254. return val;
  255. }
  256.  
  257. int (*old_get_PhysicsVampirePerc)(void *instance);
  258. int hook_get_PhysicsVampirePerc(void *instance) {
  259. int val = old_get_PhysicsVampirePerc(instance);
  260. if (instance != NULL && IsPhysicsVampireMultiplier > 1.0f) return (int)(val * IsPhysicsVampireMultiplier);
  261. return val;
  262. }
  263.  
  264. int (*old_get_MagicVampirePerc)(void *instance);
  265. int hook_get_MagicVampirePerc(void *instance) {
  266. int val = old_get_MagicVampirePerc(instance);
  267. if (instance != NULL && IsMagicVampireMultiplier > 1.0f) return (int)(val * IsMagicVampireMultiplier);
  268. return val;
  269. }
  270.  
  271. // ================= دالة التحكم بالأزرار (Changes) =================
  272. void Changes(JNIEnv *env, jclass clazz, jobject obj, jint featureNum, jstring featureName, jint value, jlong Lvalue, jboolean booleanValue, jstring textValue) {
  273. switch (featureNum) {
  274. case 0: IsMoveSpeedMultiplier = value; break;
  275. case 1: IsAttackSpeedMultiplier = value; break;
  276. case 2: IsDamageMultiplier = value; break;
  277. case 3: IsHPMultiplier = value; break;
  278. case 4: IsMaxHPMultiplier = value; break;
  279. case 5: IsMPMultiplier = value; break;
  280. case 6: IsMaxMPMultiplier = value; break;
  281. case 7: IsEnergyMultiplier = value; break;
  282. case 8: IsMaxEnergyMultiplier = value; break;
  283. case 9: IsPhysicsAttackMultiplier = value; break;
  284. case 10: IsMagicAttackMultiplier = value; break;
  285. case 11: IsPhysicsDefMultiplier = value; break;
  286. case 12: IsMagicDefMultiplier = value; break;
  287. case 13: IsGoldMultiplier = value; break;
  288. case 14: IsViewMultiplier = value; break;
  289. case 15: IsAttackDistMultiplier = value; break;
  290. case 16: IsPropMoveSpeedMultiplier = value; break;
  291. case 17: IsPropAttackSpeedMultiplier = value; break;
  292. case 18: IsPhysicsCritMultiplier = value; break;
  293. case 19: IsMagicCritMultiplier = value; break;
  294. case 20: IsPhysicsPenetrateMultiplier = value; break;
  295. case 21: IsMagicPenetrateMultiplier = value; break;
  296. case 22: IsSpellCoolingMultiplier = value; break;
  297. case 23: IsHitRateMultiplier = value; break;
  298. case 24: IsPhysicsVampireMultiplier = value; break;
  299. case 25: IsMagicVampireMultiplier = value; break;
  300. default: break;
  301. }
  302. }
  303.  
  304. // ================= خيط حقن الـ Hooks وتربيط العناوين دالياً =================
  305. void *hack_thread(void *) {
  306. do {
  307. sleep(1);
  308. } while (!isLibraryLoaded("libil2cpp.so"));
  309.  
  310. // هوكات كلاس UnitController (السرعة والضرر الأساسية المستقرة)
  311. HOOK("libil2cpp.so", "0x3AFC760", hook_SetMoveSpeed, old_SetMoveSpeed);
  312. HOOK("libil2cpp.so", "0x3AFB754", hook_SetAttackSpeed, old_SetAttackSpeed);
  313. HOOK("libil2cpp.so", "0x3AFB8F8", hook_PrintDamage, old_PrintDamage);
  314.  
  315. // هوكات كلاس EntityProperty (ميزات الذهب والخصائص بدون تداخل الـ Instance)
  316. HOOK("libil2cpp.so", "0x3474548", hook_get_Gold, old_get_Gold);
  317. HOOK("libil2cpp.so", "0x3471CEC", hook_get_HP, old_get_HP);
  318. HOOK("libil2cpp.so", "0x3472058", hook_get_MaxHP, old_get_MaxHP);
  319. HOOK("libil2cpp.so", "0x34720E0", hook_get_MP, old_get_MP);
  320. HOOK("libil2cpp.so", "0x34723A0", hook_get_MaxMP, old_get_MaxMP);
  321. HOOK("libil2cpp.so", "0x3472428", hook_get_Energy, old_get_Energy);
  322. HOOK("libil2cpp.so", "0x34724B0", hook_get_MaxEnergy, old_get_MaxEnergy);
  323. HOOK("libil2cpp.so", "0x347291C", hook_get_PhysicsAttack, old_get_PhysicsAttack);
  324. HOOK("libil2cpp.so", "0x34729A4", hook_get_MagicAttack, old_get_MagicAttack);
  325. HOOK("libil2cpp.so", "0x3472A2C", hook_get_PhysicsDef, old_get_PhysicsDef);
  326. HOOK("libil2cpp.so", "0x3472E0C", hook_get_MagicDef, old_get_MagicDef);
  327. HOOK("libil2cpp.so", "0x3471C64", hook_get_View, old_get_View);
  328. HOOK("libil2cpp.so", "0x3473D58", hook_get_PhysicsAttackDist, old_get_PhysicsAttackDist);
  329. HOOK("libil2cpp.so", "0x34726A0", hook_get_MoveSpeed, old_get_MoveSpeed);
  330. HOOK("libil2cpp.so", "0x3474768", hook_get_PhysicsAttackSpeed, old_get_PhysicsAttackSpeed);
  331. HOOK("libil2cpp.so", "0x34731C0", hook_get_PhysicsCritPerc, old_get_PhysicsCritPerc);
  332. HOOK("libil2cpp.so", "0x3473838", hook_get_MagicCritPerc, old_get_MagicCritPerc);
  333. HOOK("libil2cpp.so", "0x3472ED0", hook_get_PhysicsPenetrate, old_get_PhysicsPenetrate);
  334. HOOK("libil2cpp.so", "0x3473004", hook_get_MagicPenetrate, old_get_MagicPenetrate);
  335. HOOK("libil2cpp.so", "0x34747F0", hook_get_SpellCoolingPer, old_get_SpellCoolingPer);
  336. HOOK("libil2cpp.so", "0x3473F0C", hook_get_HitRate, old_get_HitRate);
  337. HOOK("libil2cpp.so", "0x3473664", hook_get_PhysicsVampirePerc, old_get_PhysicsVampirePerc);
  338. HOOK("libil2cpp.so", "0x3473C0C", hook_get_MagicVampirePerc, old_get_MagicVampirePerc);
  339.  
  340. return NULL;
  341. }
Advertisement