wilmans2m

offtheroad

Mar 31st, 2024
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 13.74 KB | Gaming | 0 0
  1. LUA = 'WILS2M'
  2. GLabel = 'Off The Road'
  3. GProcess = 'com.dogbytegames.offtheroad'
  4. GVersion = '1.14.0'
  5. xbit = 64
  6. LibResult = 1
  7. xlib = 'libgame.so'
  8. xREV = 1  I={}
  9. xREQ = 1
  10. xCNE = 0
  11. xSSE = 0
  12. XbitX = 1
  13. LIBX='libgame'
  14. TargetLib='libgame.so[1].start'
  15. --███████████████████████
  16. expire='free'
  17. game = gg.getTargetInfo()
  18. P=game.processName
  19. FP=game.name
  20. L=gg.getTargetInfo().label
  21. M=gg.getTargetInfo()["label"]
  22. V=game.versionName
  23. TP=gg.getTargetPackage()
  24. xTAGx="Have fun"
  25. xLINKx="https://t.me/HxE_Chat"
  26. xLINK1x="https://www.tiktok.com/@hxesq"
  27. APEXSN=gg.getFile():match('[^/]+$')
  28. printx="---------------------------------------------------------------"
  29. print(printx)
  30. print(xTAGx)
  31. print("Telegram = "..xLINKx)
  32. print("TikTok = "..xLINK1x)
  33. print(printx)  
  34. print("Script = "..GLabel.."  "..GVersion)
  35.  
  36. --███████████████████████
  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("APKcombo version")
  60.  
  61. gg.alert("                           Patch Note\
  62.           ❦ ════ •⊰❂ - ❂⊱• ════ ❦\
  63. - HxE script menu\
  64. - New script interface (Apex[GG])\
  65. - Corrected new lib and seek from dev (thanks to APEX[GG]v2)\
  66. - Updated to 1.14.0\
  67. - Maps unlocked\
  68. - VIP Vehicules unlocked\
  69. - Money hack\
  70. - No Ads\
  71. - VIP unlocked\
  72.           ❦ ════ •⊰❂ - ❂⊱• ════ ❦\
  73. ")
  74.  
  75. --███████████████████████
  76.     if L == GLabel then
  77.         gg.toast('➣ Game : ' .. L)
  78.         gg.clearResults()
  79.     else
  80.         gg.alert("Bad process selected")
  81.         gg.setVisible(true)
  82.         print('Bad process')
  83.         os.exit()
  84.         return
  85.     end
  86. ------------------------------------------------------------------------------ 
  87.     if v.processName~=GProcess then
  88.         print("This Script is For:\n    "..GLabel.."\n    "..GProcess.."\nYou Selected:\n    "..v.label.."\n    "..v.processName)
  89.         gg.setVisible (true) os.exit()
  90.         return
  91.     else
  92.         gg.toast('➣ Package : ' .. GProcess)
  93.     end
  94. ------------------------------------------------------------------------------
  95.     if v.x64 then bitx=64 xBITx="[x64]" else bitx=32 xBITx="[x32]" end
  96.         print(xBITx)  
  97.         print(printx)  
  98. ------------------------------------------------------------------------------
  99.     if XbitX==1 then
  100.         if bitx~=xbit then
  101.             print("This Script is For "..xbit.."bit Process\nYour Process is "..bitx.."bit")
  102.             gg.setVisible(true) os.exit()
  103.             return
  104.         end
  105.     end
  106. ------------------------------------------------------------------------------
  107.     if GVersion~=v.versionName then
  108.         print("This Script is for Game Version:\n    "..GVersion.."\nYour Game Version is:\n    "..v.versionName)
  109.         gg.setVisible(true) os.exit()
  110.         return
  111.     else
  112.         gg.toast('➣ Version :  '.. GVersion )
  113.     end
  114. --███████████████████████
  115.     if LibResult==1 then
  116.     xAPEXx={} xXx=0
  117.     xLibRes=0
  118.     libx=gg.getRangesList()
  119.         if #(libx)==0 then
  120.         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' ")
  121.         gg.setVisible(true)
  122.         os.exit()
  123.         end
  124.     libx=gg.getRangesList(xlib)
  125.         if #(libx)==0 then  
  126.         print("×× No "..xlib.." Found")
  127.         xLibRes=2
  128.         goto APEX_SPLIT
  129.         end
  130.     xlibn=0
  131.         for i, v in ipairs(libx) do
  132.             if libx[i].state=="Xa" then
  133.             xXx=xXx+1
  134.             xAPEXx[xXx]=libx[i].start
  135.             xLibRes=1
  136.             end
  137.         end
  138.         if xLibRes==0 then
  139.         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' ")
  140.         gg.setVisible(true)
  141.         os.exit()    
  142.         end    
  143.                  
  144.         ::APEX_SPLIT::    
  145.         if xLibRes==2 then
  146.         splitapk=0
  147.         libx=gg.getRangesList()
  148.             for i, v in ipairs(libx) do
  149.                 if libx[i].state=="Xa" and string.match(libx[i].name,"split_config") then
  150.                 splitapk=1
  151.                 end
  152.             end
  153.             if splitapk==1 then
  154.             xsapk={} xsapkx=0
  155.                 for i, v in ipairs(libx) do
  156.                     if libx[i].state=="Xa" then
  157.                     xsapkx=xsapkx+1
  158.                     xsapk[xsapkx]=libx[i]["end"]-libx[i].start
  159.                     end
  160.                 end
  161.                 if xsapkx~=0 then                
  162.                 APEXQ=math.max(table.unpack(xsapk))
  163.                     for i, v in ipairs(libx) do              
  164.                         if libx[i].state=="Xa" and libx[i]["end"]-libx[i].start==APEXQ then              
  165.                         xXx=xXx+1            
  166.                        xAPEXx[xXx]=libx[i].start
  167.                         print("√√ Split Apk Lib Found\n√√ "..libx[i].name)
  168.                         xLibRes=1                      
  169.                         end
  170.                     end
  171.                 end
  172.             end
  173.          
  174.              if splitapk==0 and xLibRes~=1 then
  175.              print("×× No split_config Lib Found")  
  176.              xc=1 xt={}
  177.              libx=gg.getRangesList()
  178.                  for i, v in ipairs(libx) do
  179.                      if libx[i].state=="Xa" then
  180.                      xt[xc]=tonumber(libx[i]["end"]-libx[i].start)
  181.                      xc=xc+1
  182.                      end
  183.                  end
  184.              APEXQ=math.max(table.unpack(xt))
  185.                  for i, v in ipairs(libx) do              
  186.                      if libx[i].state=="Xa" and libx[i]["end"]-libx[i].start==APEXQ then        
  187.                      xXx=xXx+1      
  188.                      xAPEXx[xXx]=libx[i].start
  189.                      print("√√ math.max Xa Lib Found\n√√ "..libx[i].name)
  190.                      xLibRes=1  
  191.                      end
  192.                  end
  193.             end                        
  194.  
  195.             if xLibRes~=1 then
  196.             print("×× Correct Lib Not Found ××\n×× Direct/Split Config/Xa Max ××")
  197.             gg.setVisible(true)
  198.             os.exit()
  199.              return
  200.             end
  201.         end
  202.     end
  203. --███████████████████████
  204. --loop lib function (to Xa) (thanks for APEXGG)
  205. liby=1 xatrue=0
  206. if TargetLib~="nil" then
  207.     libx=gg.getRangesList(LIBX)  
  208.         for i, v in ipairs(libx) do
  209.             if libx[i].state == "Xa" then
  210.                 libz=LIBX.."["..liby.."]"  
  211.                 xatrue=1
  212.                 break
  213.             end
  214.         liby=liby+1
  215.        end
  216. else
  217.     xatrue=3
  218. end
  219.  
  220. if xatrue==1 then
  221. LibStart=gg.getRangesList(LIBX)[1].start
  222. --liby does not return good value
  223. end
  224. --loop lib function (to Xa) (thanks for APEXGG)
  225. --███████████████████████
  226. function arm()
  227. o=tonumber(o)
  228.     for XxX=1,#(xAPEXx) do
  229.     xdump=nil xdump={}
  230.     xdump[1]={} xdump[2]={}
  231.     xdump[1].address=xAPEXx[XxX] + o
  232.     xdump[1].flags=4
  233.         if x==0 then xdump[1].value=xfalse end
  234.         if x==1 then xdump[1].value=xtrue end
  235.         if x~=0 and x~=1 then xdump[1].value=x end
  236.     xdump[2].address=xAPEXx[XxX]+(o+4)
  237.     xdump[2].flags=4
  238.     xdump[2].value=xEND
  239.     gg.setValues(xdump)
  240.     end
  241. end
  242. ------------------------------------------------------------------------------
  243. function xrev()
  244. if xREV==1 then
  245. xRx=1 ORIG={} xREV={}
  246.     for i, v in ipairs(I) do
  247.         ORIG[xRx]={}
  248.         ORIG[xRx].address=xAPEXx+tonumber(I[i])
  249.         ORIG[xRx].flags=4
  250.         xRx=xRx+1
  251.         ORIG[xRx]={}
  252.         ORIG[xRx].address=xAPEXx+tonumber(I[i])+4
  253.         ORIG[xRx].flags=4
  254.         xRx=xRx+1
  255.     end
  256. ORIG=gg.getValues(ORIG)
  257. end
  258. end
  259. ------------------------------------------------------------------------------
  260. function revert()
  261.     for XxX=1,#(xAPEXx) do
  262.     REVERT=nil REVERT={} xRx=nil xRx=1
  263.         for i, v in ipairs(ORIG) do
  264.             if tonumber(xAPEXx[XxX]+o)==ORIG[i].address then
  265.             REVERT[xRx]={}
  266.             REVERT[xRx].address=xAPEXx[XxX]+o
  267.             REVERT[xRx].flags=4
  268.             REVERT[xRx].value=ORIG[i].value
  269.             xRx=xRx+1
  270.             REVERT[xRx]={}
  271.             REVERT[xRx].address=xAPEXx[XxX]+o+4
  272.             REVERT[xRx].flags=4
  273.             REVERT[xRx].value=ORIG[i+1].value
  274.             gg.setValues(REVERT)
  275.             break
  276.             end
  277.         xRx=xRx+1
  278.         end
  279.     end
  280. end
  281. -------------------------------------------------------------------------
  282. function revert1()
  283. o=tonumber(o)
  284. HxEr=nil
  285. HxEr={}
  286. HxEr[1]={}
  287. HxEr[1].address=LibStart + o
  288. HxEr[1].flags=4
  289. HxEr[1].value=x1
  290. HxEr[2]={}
  291. HxEr[2].address=LibStart + (o+4)
  292. HxEr[2].flags=4
  293. HxEr[2].value=x2
  294. gg.setValues(HxEr)
  295. end
  296. --███████████████████████
  297. if v.x64 then
  298. xtrue="h200080D2" -- MOV X0, #0x1
  299. xfalse="h000080D2" -- MOV X0, #0x0
  300. xEND="hC0035FD6" -- RET
  301. else
  302. xtrue="h0100A0E3" -- MOVW R0, #1
  303. xfalse="h0000A0E3" -- MOVW R0, #0
  304. xEND="h1EFF2FE1" -- BX LR
  305. end
  306. ------------------------------------------------------------------------------  
  307. if xREV==1 then
  308. xRx=1 ORIG={} xREV={}
  309.     for XxX=1,#(xAPEXx) do  
  310.         for i, v in ipairs(I) do
  311.         ORIG[xRx]={}
  312.         ORIG[xRx].address=xAPEXx[XxX]+tonumber(I[i])
  313.         ORIG[xRx].flags=4
  314.         xRx=xRx+1
  315.         ORIG[xRx]={}
  316.         ORIG[xRx].address=xAPEXx[XxX]+tonumber(I[i])+4
  317.         ORIG[xRx].flags=4
  318.         xRx=xRx+1
  319.         end    
  320.     end
  321. ORIG=gg.getValues(ORIG)
  322. end
  323. --███████████████████████
  324. ---------------------------------------NoAds
  325. --cUserData::hasRemoveAds(void)
  326. o=0x049587C x=1 arm()
  327. ---------------------------------------NoAds
  328. --███████████████████████
  329. --███████████████████████
  330. --███████████████████████
  331. ------------------------------------------------------------------------------
  332. gg.setRanges(gg.REGION_ANONYMOUS)
  333. ------------------------------------------------------------------------------
  334. OFF="× " ON="√ "
  335.  
  336. UN=OFF UM=OFF
  337.  
  338. function menu()
  339. apex=0
  340. gg.toast(xTAGx)  
  341. mc=gg.multiChoice({
  342.     UN.."Maps, vehicules, vip unlocked",
  343.     UM.."Money hack",
  344.     "[ EXIT ]"},
  345.     {},xTAGx.."\n"..xLINKx.."\n"..GLabel.." "..GVersion.." "..xBITx)
  346.    
  347.     if mc==nil then cancel() return end
  348.     if mc[1] then unlocked() end
  349.     if mc[2] then money() end
  350.    
  351. xhaX={
  352.     UN.."Maps, vehicules, vip unlocked",
  353.     UM.."Money hack",
  354.     }
  355. xhaX=table.concat(xhaX, "\n")
  356. xhaX=tostring(xhaX)
  357.  
  358.     if mc[3] then exit() return end
  359.  
  360. gg.toast("[√] Complete")
  361.  
  362. gg.alert("Hacks "..GLabel.." "..GVersion.." "..xBITx.."\n\n"..xhaX,"OK",nil,xTAGx)
  363.  
  364. end
  365. --███████████████████████
  366. --cUserData::isVipClubMember(void)
  367. I[1]=0x04958CC
  368. --cUserData::getSeasonalOfferPurchased(int)
  369. I[2]=0x04A46DC
  370. function unlocked()
  371.     if UN==OFF then
  372.     o=I[1] xrev() x=1 arm()
  373.     o=I[2] xrev() x=1 arm()
  374.     UN=ON
  375.     else
  376.     o=I[1] revert()
  377.     o=I[2] revert()
  378.     UN=OFF
  379.     end
  380. end
  381. --█████████████████████
  382. function money()
  383. --gg.setRanges(gg.REGION_C_ALLOC)
  384. current=gg.prompt({'💰💰Current coins 💰💰','💰💰Coins You want💰💰'},{300,999999})
  385. gg.searchNumber(current[1],gg.TYPE_DWORD)
  386. gg.getResults(100)
  387. gg.editAll(current[2],gg.TYPE_DWORD)
  388. UM=ON
  389. end
  390. --███████████████████████
  391. --███████████████████████
  392. --███████████████████████
  393.  
  394. function cancel()
  395. gg.toast("Cancelled")
  396. end
  397. ------------------------------------------------------------------------------  
  398. function wait()
  399. gg.toast("Please Wait..")
  400. end
  401. ------------------------------------------------------------------------------  
  402. function error()
  403. gg.toast("× ERROR ×")
  404. gg.sleep(1000)
  405. end
  406. ------------------------------------------------------------------------------  
  407. function exit()
  408. print("--------------------------------------------------------------------")
  409. print("More links - WILS2M")
  410. print("https://helleteden.go.yj.fr/accueil/fr/")
  411. print("https://discord.gg/GB3K2CRk")
  412. print("https://www.tiktok.com/@helledengaming")
  413. print("https://odysee.com/@HellEtEden-gaming:9")
  414. print("https://vimeo.com/showcase/10427325")
  415. gg.processResume()
  416. gg.getListItems()
  417. gg.clearList()
  418. gg.getResults(gg.getResultsCount())
  419. gg.clearResults()
  420. gg.toast("[ EXIT ]")  
  421.     if xhaX~=nil then
  422.         print(printx)
  423.         print(xhaX)
  424.         print(printx)  
  425.     end
  426. gg.setVisible(true)
  427. os.exit()
  428. return
  429. end
  430. --███████████████████████
  431. while true do
  432.     if gg.isVisible() then
  433.         gg.setVisible(false)
  434.         menu()
  435.     else
  436.         if apex==1 then
  437.             gg.setVisible(false)
  438.             menu()
  439.         end
  440.     end
  441. end
  442.  
Add Comment
Please, Sign In to add comment