wilmans2m

ZombieHunter

Mar 29th, 2024 (edited)
31
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 27.69 KB | Gaming | 0 0
  1. LUA = 'WILS2M'
  2. --https://play.google.com/store/apps/details?id=zombie.survival.dead.shooting&hl=fr&gl=US
  3. GLabel = 'Zombie Hunter'
  4. GProcess = 'zombie.survival.dead.shooting'
  5. GVersion = '(vAU.02)'
  6. xbit = 64
  7. LibResult = 1
  8. xlib = 'libil2cpp.so'
  9. xREV = 1  I={}
  10. xCNE = 0
  11. xSSE = 0
  12. XbitX = 2
  13. printx = '---------------------------------------------------------------'
  14. expire='free'
  15. game = gg.getTargetInfo()
  16. P=game.processName
  17. FP=game.name
  18. L=gg.getTargetInfo().label
  19. M=gg.getTargetInfo()["label"]
  20. V=game.versionName
  21. TP=gg.getTargetPackage()
  22. xTAGx="Have fun"
  23. xLINKx="https://t.me/HxE_Chat"
  24. xLINK1x="https://www.tiktok.com/@hxesq"
  25. APEXSN=gg.getFile():match('[^/]+$')
  26. printx="---------------------------------------------------------------"
  27. print(printx)
  28. print(xTAGx)
  29. print("Telegram = "..xLINKx)
  30. print("TikTok = "..xLINK1x)
  31. print(printx)  
  32. print("Script = "..GLabel.."  "..GVersion)
  33. --███████████████████████
  34. --███████████████████████
  35. --███████████████████████
  36. -- APEX[GG]v2
  37. apex=1
  38. gg.setVisible(false)
  39. v=gg.getTargetInfo()
  40.     if v==nil then
  41.         print("×× ERROR ××\n×× INVALID PROCESS SELECTED / OR NO ROOT ACCESS")
  42.         gg.setVisible(true) os.exit()
  43.         return
  44.     end
  45.    
  46. HxEmenu = ('            ⚡HxE Menu by wils2m⚡\
  47.           ❦ ════ •⊰❂ - ❂⊱• ════ ❦\
  48.                     ⛥🇮‌🇳‌🇫‌🇴‌⛥\
  49.  🎮🅖🅐🅜🅔🎮 : '..GLabel..'\
  50.  🎰🅥🅔🅡🅢🎰 : '..GVersion..'\
  51.    🎰🅐🅡🅜🎰   : '..xbit..'\
  52. \
  53. ⏳Exᴘɪʀᴇᴅ Date⏳ : '..expire..'\
  54. 🎁 Encryption 🎁 :  '..expire..'\
  55.            ❦ ════ •⊰❂ - ❂⊱• ════ ❦')
  56.            
  57. gg.alert(HxEmenu)
  58.  
  59. gg.alert("                           Patch Note\
  60.           ❦ ════ •⊰❂ - ❂⊱• ════ ❦\
  61. - HxE script menu\
  62. - NEW:\
  63. - Disabled bad hacks\
  64. - Auto Update template (thanks to APEX[GG]v2)\
  65. ...............................................\
  66. - No Ads\
  67. - God mode (semi)\
  68. - Unlimited Ammo\
  69. - Unlimited Grenades/Medkits\
  70. - Unlimited Gold/Money/Lingots\
  71.           ❦ ════ •⊰❂ - ❂⊱• ════ ❦\
  72. ")
  73. ------------------------------------------------------------------------------
  74. A={} for i =1,100 do A[i]={} end
  75. ------------------------------------------------------------------------------
  76. OFF="× " ON="√ "
  77. HP=OFF GM=OFF UA=OFF UE=OFF UM=OFF CI=OFF NA=OFF
  78.     if v.x64 then x1="hC0BEA0D2" x2='h006A98D2'
  79.     else x1="h990040E3" x2='h640000E3'
  80.     end
  81.  
  82. function menu()
  83. apex=0
  84. gg.toast(xTAGx)  
  85. mc=gg.multiChoice({
  86.     HP.."High Hit",
  87.     GM.."God mode",
  88.     UA.."Unlimited Ammo",
  89.     UE.."Unlimited Grenades/Medkits",
  90.     UM.."Unlimited Money (All)",
  91.     NA.."No Ads",
  92.     "[ EXIT ]"},
  93.     {},xTAGx.."\n"..xLINKx.."\n"..GLabel.." "..GVersion.." "..xBITx)
  94.    
  95.     if mc==nil then cancel() return end
  96.     if mc[1] then hp() end
  97.     if mc[2] then gm() end
  98.     if mc[3] then ammo() end
  99.     if mc[4] then unlieq() end
  100.     if mc[5] then unlial() end
  101.     if mc[6] then noads() end
  102.    
  103. xhaX={
  104.     HP.."High Hit",
  105.     GM.."God mode",
  106.     UA.."Unlimited Ammo",
  107.     UE.."Unlimited Grenades/Medkits",
  108.     UM.."Unlimited Money (All)",
  109.     NA.."No Ads",
  110.     }
  111. xhaX=table.concat(xhaX, "\n")
  112. xhaX=tostring(xhaX)
  113.  
  114.     if mc[7] then exit() return end
  115.  
  116. gg.toast("[√] Complete")
  117. gg.alert(GLabel.." "..GVersion.." "..xBITx.."\n\n"..xhaX,"OK",nil,xTAGx)  
  118.  
  119. end
  120.  
  121. --███████████████████████
  122.  
  123. --public class AndroidAgent : IronSourceIAgent
  124. --public void showInterstitial()
  125.     A[1].class="AndroidAgent"
  126.     A[1].method="showInterstitial"
  127. --public void showOfferwall()
  128.     A[2].class="AndroidAgent"
  129.     A[2].method="showOfferwall"
  130. --public void getOfferwallCredits()
  131.     A[3].class="AndroidAgent"
  132.     A[3].method="getOfferwallCredits"
  133. --public bool isOfferwallAvailable()
  134.     A[4].class="AndroidAgent"
  135.     A[4].method="isOfferwallAvailable"
  136. --public void displayBanner()
  137.     A[5].class="AndroidAgent"
  138.     A[5].method="displayBanner"
  139. --------------------------------------
  140. --public class IronSource : IronSourceIAgent
  141. --public void showInterstitial()
  142.     A[6].class="IronSource"
  143.     A[6].method="showInterstitial"
  144. --public void showOfferwall()
  145.     A[7].class="IronSource"
  146.     A[7].method="showOfferwall"
  147. --public void getOfferwallCredits()
  148.     A[8].class="IronSource"
  149.     A[8].method="getOfferwallCredits"
  150. --public bool isOfferwallAvailable()
  151.     A[9].class="IronSource"
  152.     A[9].method="isOfferwallAvailable"
  153. --public void displayBanner()
  154.     A[10].class="IronSource"
  155.     A[10].method="displayBanner"
  156. -------------------------------
  157. --public static class IronSourceAdUnits
  158. --public static string get_INTERSTITIAL()
  159. --public static string get_OFFERWALL()
  160. --public static string get_BANNER()
  161. ---------------------------
  162. --public class IronSourceManager : MonoBehaviour
  163. --public void ShowOfferWall()
  164.      A[11].class="IronSourceManager"
  165.      A[11].method="ShowOfferWall"
  166. --public void RecheckOfferWall()
  167.      A[12].class="IronSourceManager"
  168.      A[12].method="RecheckOfferWall"
  169. --public bool CheckAndShowInterstitialAds(SHOW_INTERSTITIAL_FROM showFrom)
  170.      A[13].class="IronSourceManager"
  171.      A[13].method="CheckAndShowInterstitialAds"
  172.  
  173.     function noads()
  174.     for i = 1,13 do if A[i].error == 1 then error() break return end end
  175.     for i = A[1].start, A[13].finish do o=I[i]
  176.     if NA==OFF then x=0  arm() else revert() end
  177.     end
  178.  
  179.     if NA==OFF then NA=ON else NA=OFF end
  180.     end
  181.        
  182. --███████████████████████      
  183.  
  184. --public class Zombie : Human
  185. --public float GetPercentHP()
  186.     A[14].class="Zombie"
  187.     A[14].method="GetPercentHP"
  188. --public class GunEffect
  189. --public int GetBaseDamge()
  190. --J'ai mis 999999 inutile d'aller plus haut.
  191. --en arm64 ca donne donc:
  192. --MOV X0, #0x423F
  193. --RET X30
  194.     A[15].class="GunEffect"
  195.     A[15].method="GetBaseDamge"
  196. --public class ActiveGun : Gun
  197. --public int get_TotalDamage()
  198.     A[16].class="ActiveGun"
  199.     A[16].method="get_TotalDamage"
  200. --public float get_TotalCritDmg()
  201.     A[17].class="ActiveGun"
  202.     A[17].method="get_TotalCritDmg"
  203. --public float get_TotalCritChance()
  204.     A[18].class="ActiveGun"
  205.     A[18].method="get_TotalCritChance"
  206.  
  207. function hp()
  208.     for i = 14,18 do if A[i].error == 1 then error() break return end end
  209.     for i = A[14].start, A[14].finish do
  210.     o=I[i] x=1
  211.     if HP==OFF then arm() else revert() end
  212.     end
  213.     --for i = A[15].start, A[15].finish do
  214.     --o=I[i] x="hE04788D2"
  215.     --if HP==OFF then arm() else revert() end
  216.     --end
  217.    --for i = A[16].start, A[17].finish do
  218.     --o=I[i] x="h00F0AFD2"
  219.     --if HP==OFF then arm() else revert() end
  220.     --end
  221.    for i = A[18].start, A[18].finish do
  222.     o=I[i] x="h0059A8D2"
  223.     if HP==OFF then arm() else revert() end
  224.     end
  225.    
  226.     if HP==OFF then HP=ON else HP=OFF end
  227. end
  228.  
  229.   --███████████████████████
  230.  
  231. --public class Zombie : Human
  232. --public virtual void HitTarget()
  233.     A[19].class="Zombie"    
  234.     A[19].method="HitTarget"
  235. --internal float GetZombieAttackRange()
  236.     A[20].class="Zombie"
  237.     A[20].method="GetZombieAttackRange"
  238. --public class ZombieBrain : Brain
  239. --private void Attack(IAIContext context, Action.Phase phase)
  240.     A[21].class="ZombieBrain"
  241.     A[21].method="Attack"
  242. --private float CanAttack(IAIContext context)
  243.     A[22].class="ZombieBrain"
  244.     A[22].method="CanAttack"
  245.    
  246. function gm()
  247.     for i = 19,22 do if A[i].error == 1 then error() break return end end
  248.     for i =A[19].start, A[19].finish do
  249.     o=I[i] x=1
  250.     if GM==OFF then arm() else revert() end
  251.     end
  252.     for i = A[20].start, A[20].finish do
  253.     o=I[i] x=0
  254.     if GM==OFF then arm() else revert() end
  255.     end
  256.     for i = A[21].start, A[21].finish do
  257.     o=I[i] x=1
  258.     if GM==OFF then arm() else revert() end
  259.     end
  260.     for i = A[22].start, A[22].finish do
  261.     o=I[i] x=0
  262.     if GM==OFF then arm() else revert() end
  263.     end
  264.    
  265.     if GM==OFF then GM=ON else GM=OFF end
  266. end
  267.    
  268.   --███████████████████████
  269.  
  270. --public class GunFireController : MonoBehaviour
  271. --public int get_CurBullets()
  272. --J'ai mis 999999 inutile d'aller plus haut.
  273. --en arm64 ca donne donc:
  274. --MOV X0, #0x423F
  275. --RET X30
  276.     A[23].class="GunFireController"
  277.     A[23].method="get_CurBullets"
  278. --public class ActiveGun : Gun
  279. --public float get_TotalReloadTime()
  280.     A[24].class="ActiveGun"
  281.     A[24].method="get_TotalReloadTime"
  282.  
  283. function ammo()
  284.     for i = 23,24 do if A[i].error == 1 then error() break return end end
  285.     for i = A[23].start, A[23].finish do
  286.     o=I[i] x="hE04788D2"
  287.     if UA==OFF then arm() else revert() end
  288.     end
  289.     for i = A[24].start, A[24].finish do
  290.     o=I[i] x=0
  291.     if UA==OFF then arm() else revert() end
  292.     end
  293.    
  294.     if UA==OFF then UA=ON else UA=OFF end
  295. end
  296.  
  297.  --███████████████████████
  298.  
  299. --Namespace: CodeStage.AntiCheat.ObscuredTypes
  300. --public struct ObscuredLong : IObscuredType, IFormattable, IEquatable<ObscuredLong>, IComparable<ObscuredLong>, IComparable<long>
  301. --public static long op_Implicit(ObscuredLong value)
  302. --MOV X0, #0x1388
  303. --RET X30
  304.     A[25].name="CodeStage.AntiCheat.ObscuredTypes"
  305.     A[25].class="ObscuredLong"
  306.     A[25].method="op_Implicit"
  307.  
  308. function unlieq()
  309.     if A[25].error==1 then error() return end
  310.     for i =A[25].start, A[25].finish do
  311.     o=I[i] x="h007182D2"
  312.     if UE==OFF then arm() else revert() end
  313.     end
  314.    
  315.     if UE==OFF then UE=ON else UE=OFF end
  316. end
  317.  
  318.  --███████████████████████
  319.  
  320. --public class UserStorage
  321. --public static ObscuredLong Get(RESOURCE_TYPE resourceType)
  322. --MOV X0, #0x1388
  323. --RET X30
  324.     A[26].class="UserStorage"
  325.     A[26].method="Get"
  326. --public static ObscuredLong Get(string resourceName)
  327. --MOV X0, #0x1388
  328. --RET X30
  329. --public static int GetResourceInt(RESOURCE_TYPE resourceType)
  330. --MOV X0, #0x5f00000
  331. --RET X30
  332.     A[27].class="UserStorage"
  333.     A[27].method="GetResourceInt"
  334. --public static int GetResourceInt(string resourceName)
  335. --MOV X0, #0x5f00000
  336. --RET X30
  337. --public static class MainBaseUserDataUtility
  338. --public static bool CheckEnoughResourceToUse(RESOURCE_TYPE resourceType, int quantity)
  339.     A[28].class="MainBaseUserDataUtility"
  340.     A[28].method="CheckEnoughResourceToUse"
  341. --public static int GetResourceNeeded(RESOURCE_TYPE resourceType, int quantity)
  342.     A[29].class="MainBaseUserDataUtility"
  343.     A[29].method="GetResourceNeeded"
  344.  
  345. function unlial()
  346.     for i = 26, 29 do if A[i].error == 1 then error() return end end
  347.     for i =A[26].start, A[26].finish do
  348.     o=I[i] x="h007182D2"
  349.     if UM==OFF then arm() else revert() end
  350.     end
  351.     for i = A[27].start, A[27].finish do
  352.     o=I[i] x="h00BEA0D2"
  353.     if UM==OFF then arm() else revert() end
  354.     end
  355.     for i =A[28].start, A[28].finish do
  356.     o=I[i] x=1
  357.     if UM==OFF then arm() else revert() end
  358.     end
  359.     for i =A[29].start, A[29].finish do
  360.     o=I[i] x=0
  361.     if UM==OFF then arm() else revert() end
  362.     end
  363.    
  364.     if UM==OFF then UM=ON else UM=OFF end
  365. end
  366.  
  367. --███████████████████████
  368.  
  369.  
  370. --███████████████████████
  371.  
  372.  
  373. --███████████████████████
  374. --███████████████████████
  375. --███████████████████████
  376.     if v.processName~=GProcess then
  377.         print("This Script is For:\n    "..GLabel.."\n    "..GProcess.."\nYou Selected:\n    "..v.label.."\n    "..v.processName)
  378.         gg.setVisible (true) os.exit()
  379.         return
  380.     end
  381. ------------------------------------------------------------------------------
  382.     if v.x64 then bitx=64 xBITx="[x64]" else bitx=32 xBITx="[x32]" end
  383.         print(xBITx)  
  384.         print(printx)  
  385. ------------------------------------------------------------------------------
  386.  
  387.  
  388. isrdy=gg.alert("Zombie Hunter Offline Game\nThis Script is Auto-Updating. \nInitial Calibration May Take A While.\n\nYOU MUST NOT CURRENTLY BE IN ANY GAMEPLAY (MISSION/BATTLE/ETC). Otherwise, Calibration will Fail and Hacks Not Work\n\n(All hacks must be activated from lobby)","EXIT","START",xTAGx)  
  389. if isrdy~=2 then gg.setVisible(true) os.exit() return end
  390.  
  391. --███████████████████████
  392.     if LibResult==1 then
  393.     xAPEXx={} xXx=0
  394.     xLibRes=0
  395.     libx=gg.getRangesList()
  396.         if #(libx)==0 then
  397.         print("×× LIB ERROR #01 ××\nNo Libs Found\nTry a Different Virtual Environment \nor Try a Better Game Installation Method\nor Download Game From 'apkcombo.com' ")
  398.         gg.setVisible(true)
  399.         os.exit()
  400.         end
  401.     libx=gg.getRangesList(xlib)
  402.         if #(libx)==0 then  
  403.         print("×× No "..xlib.." Found")
  404.         xLibRes=2
  405.         goto APEX_SPLIT
  406.         end
  407.     xlibn=0
  408.         for i, v in ipairs(libx) do
  409.             if libx[i].state=="Xa" then
  410.             xXx=xXx+1
  411.             xAPEXx[xXx]=libx[i].start
  412.             xLibRes=1
  413.             end
  414.         end
  415.         if xLibRes==0 then
  416.         print("×× LIB ERROR #03 ××\nNo "..xlib.." Found in Xa\nTry a Different Virtual Environment \nor Try a Better Game Installation Method\nor Download Game From 'apkcombo.com' ")
  417.         gg.setVisible(true)
  418.         os.exit()    
  419.         end    
  420.                  
  421.         ::APEX_SPLIT::    
  422.         if xLibRes==2 then
  423.         splitapk=0
  424.         libx=gg.getRangesList()
  425.             for i, v in ipairs(libx) do
  426.                 if libx[i].state=="Xa" and string.match(libx[i].name,"split_config") then
  427.                 splitapk=1
  428.                 end
  429.             end
  430.             if splitapk==1 then
  431.             xsapk={} xsapkx=0
  432.                 for i, v in ipairs(libx) do
  433.                     if libx[i].state=="Xa" then
  434.                     xsapkx=xsapkx+1
  435.                     xsapk[xsapkx]=libx[i]["end"]-libx[i].start
  436.                     end
  437.                 end
  438.                 if xsapkx~=0 then                
  439.                 APEXQ=math.max(table.unpack(xsapk))
  440.                     for i, v in ipairs(libx) do              
  441.                         if libx[i].state=="Xa" and libx[i]["end"]-libx[i].start==APEXQ then              
  442.                         xXx=xXx+1            
  443.                        xAPEXx[xXx]=libx[i].start
  444.                         print("√√ Split Apk Lib Found\n√√ "..libx[i].name)
  445.                         xLibRes=1                      
  446.                         end
  447.                     end
  448.                 end
  449.             end
  450.          
  451.              if splitapk==0 and xLibRes~=1 then
  452.              print("×× No split_config Lib Found")  
  453.              xc=1 xt={}
  454.              libx=gg.getRangesList()
  455.                  for i, v in ipairs(libx) do
  456.                      if libx[i].state=="Xa" then
  457.                      xt[xc]=tonumber(libx[i]["end"]-libx[i].start)
  458.                      xc=xc+1
  459.                      end
  460.                  end
  461.              APEXQ=math.max(table.unpack(xt))
  462.                  for i, v in ipairs(libx) do              
  463.                      if libx[i].state=="Xa" and libx[i]["end"]-libx[i].start==APEXQ then        
  464.                      xXx=xXx+1      
  465.                      xAPEXx[xXx]=libx[i].start
  466.                      print("√√ math.max Xa Lib Found\n√√ "..libx[i].name)
  467.                      xLibRes=1  
  468.                      end
  469.                  end
  470.             end                        
  471.  
  472.             if xLibRes~=1 then
  473.             print("×× Correct Lib Not Found ××\n×× Direct/Split Config/Xa Max ××")
  474.             gg.setVisible(true)
  475.             os.exit()
  476.              return
  477.             end
  478.         end
  479.     end
  480. --███████████████████████
  481. function arm()
  482. o=tonumber(o)
  483.     for XxX=1,#(xAPEXx) do
  484.     xdump=nil xdump={}
  485.     xdump[1]={} xdump[2]={}
  486.     xdump[1].address=xAPEXx[XxX] + o
  487.     xdump[1].flags=4
  488.         if x==0 then xdump[1].value=xfalse end
  489.         if x==1 then xdump[1].value=xtrue end
  490.         if x~=0 and x~=1 then xdump[1].value=x end
  491.     xdump[2].address=xAPEXx[XxX]+(o+4)
  492.     xdump[2].flags=4
  493.     xdump[2].value=xEND
  494.     gg.setValues(xdump)
  495.     end
  496. end
  497. ------------------------------------------------------------------------------  
  498. function revert()
  499.     for XxX=1,#(xAPEXx) do
  500.     REVERT=nil REVERT={} xRx=nil xRx=1
  501.         for i, v in ipairs(ORIG) do
  502.             if tonumber(xAPEXx[XxX]+o)==ORIG[i].address then
  503.             REVERT[xRx]={}
  504.             REVERT[xRx].address=xAPEXx[XxX]+o
  505.             REVERT[xRx].flags=4
  506.             REVERT[xRx].value=ORIG[i].value
  507.             xRx=xRx+1
  508.             REVERT[xRx]={}
  509.             REVERT[xRx].address=xAPEXx[XxX]+o+4
  510.             REVERT[xRx].flags=4
  511.             REVERT[xRx].value=ORIG[i+1].value
  512.             gg.setValues(REVERT)
  513.             break
  514.             end
  515.         xRx=xRx+1
  516.         end
  517.     end
  518. end
  519.  
  520. --███████████████████████
  521.  
  522. function sort()
  523. SORT1={} apexsort=0
  524.      for sorti = A[s].start, A[s].finish do
  525.          apexsort=apexsort+1
  526.          SORT1[apexsort] = I[sorti]
  527.      end
  528. SORT2={} table.sort(SORT1)
  529.     for sort2, v in pairs(SORT1) do
  530.         SORT2[sort2]=v
  531.     end
  532. r=SORT2[r]
  533. end
  534.  
  535. --███████████████████████
  536. if v.x64 then
  537. xtrue="h200080D2" -- MOV X0, #0x1
  538. xfalse="h000080D2" -- MOV X0, #0x0
  539. xEND="hC0035FD6" -- RET
  540. else
  541. xtrue="h0100A0E3" -- MOVW R0, #1
  542. xfalse="h0000A0E3" -- MOVW R0, #0
  543. xEND="h1EFF2FE1" -- BX LR
  544. end
  545.  
  546. --███████████████████████
  547. -- APEX[GG]v2
  548. function clear()
  549. gg.getResults(gg.getResultsCount())
  550. gg.clearResults()
  551. end
  552. ------------------------------------------------------------------------------  
  553. function get()
  554. gg.getResults(gg.getResultsCount())
  555. end
  556. ------------------------------------------------------------------------------  
  557. function search()
  558. gg.getResults(gg.getResultsCount())
  559. gg.clearResults()
  560. gg.searchNumber(x,t)
  561. end
  562. ------------------------------------------------------------------------------  
  563. function refine()
  564. gg.refineNumber(x,t)
  565. end
  566. ------------------------------------------------------------------------------  
  567. function refinenot()
  568. gg.refineNumber(x,t,false,gg.SIGN_NOT_EQUAL)
  569. end
  570. ------------------------------------------------------------------------------  
  571. function edit()
  572. gg.getResults(gg.getResultsCount())
  573. gg.editAll(x,t)
  574. end
  575. ------------------------------------------------------------------------------  
  576. function check()
  577. E=nil E=gg.getResultsCount()
  578. end
  579. ------------------------------------------------------------------------------  
  580. function offset()
  581. o=tonumber(o) addoff=nil
  582. addoff=gg.getResults(gg.getResultsCount())
  583.     for i, v in ipairs(addoff) do
  584.         addoff[i].address=addoff[i].address+o
  585.         addoff[i].flags=t
  586.     end
  587. gg.loadResults(addoff)
  588. end
  589.  
  590. --███████████████████████
  591. function cancel()
  592. gg.toast("CANCELLED")
  593. end
  594. ------------------------------------------------------------------------------  
  595. function wait()
  596. gg.toast("Please Wait..")
  597. end
  598. ------------------------------------------------------------------------------  
  599. function error()
  600. gg.toast("× ERROR ×")
  601. gg.sleep(1000)
  602. end
  603. ------------------------------------------------------------------------------  
  604. function exit()
  605. gg.getListItems()
  606. gg.clearList()
  607. gg.getResults(gg.getResultsCount())
  608. gg.clearResults()
  609. gg.toast("[ EXIT ]")  
  610.     if xhaX~=nil then
  611.         print(printx)
  612.         print(xhaX)
  613.         print(printx)  
  614.     end
  615. gg.setVisible(true)
  616. os.exit()
  617. return
  618. end
  619. --███████████████████████
  620. if v.x64 then off1=-16 typ=32 else off1=-8 typ=4 end
  621. gg.setRanges(gg.REGION_OTHER | gg.REGION_C_ALLOC)
  622. gmdx=gg.getRangesList("global-metadata.dat")
  623.     if #(gmdx)~=0 then        
  624.     gmds=gg.getRangesList("global-metadata.dat")[1].start
  625.     gmde=gg.getRangesList("global-metadata.dat")[1]["end"]
  626.     else gmds=nil gmde=nil
  627.     end
  628. ATOTAL=0
  629. for i = 1,100 do
  630.     if A[i].class==nil then break end
  631.     ATOTAL=ATOTAL+1
  632. end
  633.  
  634. ASTART=1 AEND=0 ATABT=ATOTAL+1 ATAB=1
  635. S=0
  636.     while ATAB<=ATOTAL do
  637.     ::AUTOSTART::
  638.         if ATAB>ATOTAL then break goto FINISHED end
  639.     gg.toast("Please Wait.. [ "..ATABT-ATAB.." ]")
  640.     A[ATAB].error=1
  641.     ANAME=nil ANAME={}
  642.     if A[ATAB].name~=nil then
  643.         for i = 1,#(tostring(A[ATAB].name)) do
  644.             ANAME[i]=string.byte(A[ATAB].name,i)
  645.         end
  646.     else
  647.         ANAME[1]=0
  648.     end
  649.     ACLASS=nil ACLASS={}
  650.     if A[ATAB].class~=nil then
  651.         for i = 1,#(tostring(A[ATAB].class)) do
  652.             ACLASS[i]=string.byte(A[ATAB].class,i)
  653.         end
  654.     else
  655.         A[ATAB].class=0
  656.     end
  657.    
  658.                 ASTART=AEND+1
  659.                 clear() t=1
  660.                 gg.searchNumber(":"..tostring(A[ATAB].method),1,false,gg.SIGN_EQUAL,gmds, gmde)
  661.                 xm=gg.getResults(2) gg.getResults(gg.getResultsCount())
  662.                 check()
  663.                     if E==0 then ATAB=ATAB+1
  664.                         if ATAB>ATOTAL then break return end
  665.                     goto AUTOSTART return
  666.                     end
  667.                 x=xm[1].value..";"..xm[2].value.."::2" refine()
  668.                 x=xm[1].value refine()
  669.                 o=-1 offset() x=0 refine() oo=#(tostring(A[ATAB].method))
  670.                 o=oo+1 offset() refine() o=-oo offset()
  671.                 check()
  672.                     if E==0 then ATAB=ATAB+1
  673.                         if ATAB>ATOTAL then break return end
  674.                     goto AUTOSTART return
  675.                     end
  676.                 gg.searchPointer(0) xcount=gg.getResultsCount()
  677.                 xpoint=gg.getResults(xcount,nil, nil, nil, nil, nil, nil, nil,gg.POINTER_READ_ONLY)
  678.                     if #(xpoint)==0 then ATAB=ATAB+1
  679.                         if ATAB>ATOTAL then break return end
  680.                     goto AUTOSTART return
  681.                     end
  682.                 clear()
  683.                     for xp=1,#(xpoint) do
  684.                     xpoint[xp].address=xpoint[xp].address+off1
  685.                     xpoint[xp].flags=typ
  686.                     end
  687.                 gg.loadResults(xpoint)
  688.                 xoff=gg.getResults(#(xpoint),nil, nil, nil, nil, nil, nil, nil, gg.POINTER_EXECUTABLE)
  689.                     if #(xoff)==0 then ATAB=ATAB+1
  690.                         if ATAB>ATOTAL then break return end
  691.                     goto AUTOSTART return
  692.                     end
  693.                     xfin=1
  694.                     while xfin<=#(xoff) do
  695.                     ::XFIN::
  696.                         if xfin>#(xoff) then ATAB=ATAB+1
  697.                             if ATAB>ATOTAL then break return end
  698.                         goto AUTOSTART return
  699.                         end
  700.                         if gg.getTargetInfo().x64 then
  701.                             xadd=tonumber(xoff[xfin].value)  
  702.                         else
  703.                             xadd=string.format("%X",tonumber(xoff[xfin].value))
  704.                             xadd=string.sub(tostring(xadd), -8,-1)
  705.                             xadd=tonumber("0x"..xadd)
  706.                         end    
  707.                     gval1=nil gval1={} gval1[1]={}
  708.                         if gg.getTargetInfo().x64 then gvo=24 gvo1=16 gvo2=24 else gvo=12 gvo1=8 gvo2=12 end
  709.                     gval1[1].address=xoff[xfin].address+gvo
  710.                     gval1[1].flags=typ
  711.                     gval1=gg.getValues(gval1)
  712.                         if gg.getTargetInfo().x64 then
  713.                             gval=tonumber(gval1[1].value)  
  714.                         else
  715.                             gval=string.format("%X",tonumber(gval1[1].value))
  716.                             gval=string.sub(tostring(gval), -8,-1)
  717.                             gval=tonumber("0x"..gval)
  718.                         end    
  719.                     gval2=nil gval2={} gval2[1]={} gval2[2]={}
  720.                     gval2[1].address=gval+gvo1
  721.                     gval2[1].flags=typ
  722.                     gval2[2].address=gval+gvo2
  723.                     gval2[2].flags=typ
  724.                     gval2=gg.getValues(gval2)
  725.                         if gg.getTargetInfo().x64 then
  726.                             gval21=tonumber(gval2[1].value)  
  727.                             gval22=tonumber(gval2[2].value)
  728.                         else
  729.                             gval21=string.format("%X",tonumber(gval2[1].value))
  730.                             gval21=string.sub(tostring(gval21), -8,-1)
  731.                             gval21=tonumber("0x"..gval21)
  732.                             gval22=string.format("%X",tonumber(gval2[2].value))
  733.                             gval22=string.sub(tostring(gval22), -8,-1)
  734.                             gval22=tonumber("0x"..gval22)
  735.                         end    
  736.                          xrefine=0
  737.                          if A[ATAB].class~=0 then
  738.                             for xyz=1,#(ACLASS) do
  739.                                 gvalc={} gvalc[1]={}
  740.                                 gvalc[1].address=gval21+(xyz-1)
  741.                                 gvalc[1].flags=1                        
  742.                                 gvalc=gg.getValues(gvalc)
  743.                                 if gvalc[1].value~=ACLASS[xyz] then xrefine=1 break xfin=xfin+1 goto XFIN end
  744.                             end
  745.                         end
  746.                        
  747.                         if A[ATAB].name~=0 then
  748.                             for xyz=1,#(ANAME) do
  749.                                 gvalc={} gvalc[1]={}
  750.                                 gvalc[1].address=gval22+(xyz-1)
  751.                                 gvalc[1].flags=1                        
  752.                                 gvalc=gg.getValues(gvalc)
  753.                                     if gvalc[1].value~=ANAME[xyz] then xrefine=1 break xfin=xfin+1 goto XFIN end                                
  754.                             end
  755.                         end
  756.                          
  757.                          if xrefine==0 then
  758.                         A[ATAB].start=ASTART AEND=AEND+1
  759.                         A[ATAB].finish=AEND
  760.                         A[ATAB].error=0
  761.                         clear() I[AEND]=xadd-xAPEXx[xXx]
  762.                         end
  763.                     xfin=xfin+1            
  764.                     end -- xfin
  765.     ATAB=ATAB+1
  766.     end -- ATAB
  767.    
  768. ---------------------------------------------------
  769.  
  770. ::FINISHED::
  771.  xBAR=0
  772.     for i = 1, ATOTAL do
  773.         if A[i].error~=0 then xBAR=xBAR+1 end
  774.     end
  775.     if xBAR==ATOTAL  then
  776.         gg.alert("× AUTO UPDATE FAILURE ×","EXIT",nil, xTAGx)  
  777.         exit()
  778.         return
  779.     end
  780.     if xBAR>=1 then gg.alert("× Auto Update Errors\nSome/All Hacks May Not Work","OK",nil, xTAGx)
  781.     else gg.alert("√ Auto Update Success","OK",nil, xTAGx)
  782.     end
  783.    
  784. --███████████████████████
  785. if xREV==1 then
  786. xRx=1 ORIG={} xREV={}
  787.     for XxX=1,#(xAPEXx) do  
  788.         for i, v in ipairs(I) do
  789.         ORIG[xRx]={}
  790.         ORIG[xRx].address=xAPEXx[XxX]+tonumber(I[i])
  791.         ORIG[xRx].flags=4
  792.         xRx=xRx+1
  793.         ORIG[xRx]={}
  794.         ORIG[xRx].address=xAPEXx[XxX]+tonumber(I[i])+4
  795.         ORIG[xRx].flags=4
  796.         xRx=xRx+1
  797.         end    
  798.     end
  799. ORIG=gg.getValues(ORIG)
  800. end
  801. --███████████████████████
  802. while true do
  803.     if gg.isVisible() then
  804.         gg.setVisible(false)
  805.         menu()
  806.     else
  807.         if apex==1 then
  808.             gg.setVisible(false)
  809.             menu()
  810.         end
  811.     end
  812. end
  813.  
Add Comment
Please, Sign In to add comment