Advertisement
Tekekpro

UnlockChou

Feb 23rd, 2025
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.73 KB | Writing | 0 0
  1. local getMetadata = gg.getRangesList("global-metadata.dat")
  2. for lib, name in ipairs(getMetadata) do
  3. if name.state == "O" then metadataStartAddress, metadataEndAddress = name["start"], name["end"]  end
  4. end
  5.  
  6. local getMetadata = gg.getRangesList("global-csharp-metadata.dat")
  7. for lib, name in ipairs(getMetadata) do
  8. if name.state == "O" then metadataCSharpStartAddress, metadataCSharpEndAddress = name["start"], name["end"]  end
  9. end
  10.  
  11. cSharpMetadata = {metadataCSharpStartAddress, metadataCSharpEndAddress}
  12.  
  13. function searchClass(class, useMetadata)
  14.     if gg.getTargetInfo().x64 == true then thisBit = 16 else thisBit = 8 end
  15. gg.setRanges(gg.REGION_OTHER)
  16. gg.searchNumber(":" .. class , gg.TYPE_BYTE, false, gg.SIGN_EQUAL, useMetadata[1], useMetadata[2])
  17. if gg.getResultsCount() == 0 then
  18. gg.searchNumber(":" .. class , gg.TYPE_BYTE)
  19. end
  20. c = gg.getResults(gg.getResultsCount())
  21. if gg.getResultsCount() == 0 then return nil end
  22. gg.refineNumber(":".. string.sub(class, 1,1) , gg.TYPE_BYTE)
  23. c = gg.getResults(gg.getResultsCount())
  24. gg.clearResults()
  25. gg.setRanges(gg.REGION_C_ALLOC)
  26. gg.loadResults(c)
  27. gg.searchPointer(0)
  28. c = gg.getResults(gg.getResultsCount())
  29. for k, v in ipairs(c) do
  30. v.address = v.address - thisBit
  31. end
  32. c = gg.getValues(c)
  33. if gg.getResultsCount() == 0 then return nil else
  34. gg.clearResults()
  35. return c
  36. end
  37. end
  38.  
  39. function C_A_Pointer(myoffsets , type , addrData , kpr)
  40. gg.clearResults()
  41. gg.setRanges(gg.REGION_ANONYMOUS)
  42. if addrData == nil then return nil end
  43. gg.loadResults(addrData)
  44. if gg.getResultsCount() == 0 then return nil end
  45. repl = gg.getResults(gg.getResultsCount())
  46. gg.searchPointer(0)
  47. if gg.getResultsCount() == 0 then
  48. for k , v in ipairs(repl) do
  49. v.address = v.address + 0xb400000000000000
  50. v.flags = gg.TYPE_QWORD
  51. end
  52. n = 1
  53. if #repl > 8 then gg.toast("be patient, this takes a little while") end
  54. while(n <= #repl) do
  55. gg.searchNumber(repl[n].address , gg.TYPE_QWORD)
  56. t = gg.getResults(gg.getResultsCount())
  57. gg.clearResults()
  58. gg.addListItems(t)
  59. n = n + 1
  60. end
  61. gg.loadResults(gg.getListItems())
  62. gg.clearList()
  63. TsuNever = gg.getResults(gg.getResultsCount())
  64. else
  65. t = gg.getResults(gg.getResultsCount())
  66. end
  67. if gg.getResultsCount() == 0 then return nil end
  68. gg.clearResults()
  69. if kpr == true then return t end
  70. for k , v in ipairs(t) do
  71. v.address = v.address + myoffsets
  72. v.flags = type
  73. end
  74. TsuNever = gg.getValues(t)
  75. gg.clearResults()
  76. return TsuNever
  77. end
  78.  
  79. function stringMethod(startAddress, method)
  80. local stringName = {}
  81. for lengthName = 0 ,#method do
  82. local getAddressName = gg.getValues({
  83.     {
  84.         address = startAddress + lengthName,
  85.         flags = gg.TYPE_BYTE
  86.         }
  87.         })
  88.         if getAddressName[1].value == 0 then return tostring(table.concat(stringName)) end
  89.         if getAddressName[1].value > 0 and getAddressName[1].value <= 255 then
  90.         table.insert(stringName, string.char(getAddressName[1].value))
  91.         end
  92.         end
  93.         return tostring(table.concat(stringName))
  94. end
  95. UIRankHero = {
  96.     banList = 0x180
  97.     }
  98. pointerUIRankHero = nil
  99. fileDataUIRankHero = gg.EXT_CACHE_DIR .. "/UIRankHero"
  100.  
  101. function initUIRankHero()
  102.     local loadVar = loadfile(fileDataUIRankHero)
  103.     if loadVar ~= nil then
  104.         pointerUIRankHero = loadVar()
  105.         loadVar = nil
  106.         local getValue = gg.getValues({{address = pointerUIRankHero, flags = gg.TYPE_QWORD}})
  107.         getValue = gg.getValues({{address = getValue[1].value + 0x10, flags = gg.TYPE_QWORD}})
  108.         if stringMethod(getValue[1].value, "UIChooseHero") == "UIChooseHero" then
  109.             return pointerUIRankHero
  110.         end
  111.     end --// loadVar
  112.     local classUIRankHero = searchClass("UIChooseHero", cSharpMetadata)
  113.     if classUIRankHero == nil then
  114.         return
  115.     end
  116.     local pointerUIRankHero = C_A_Pointer(0, gg.TYPE_QWORD, classUIRankHero, true)
  117.     if pointerUIRankHero == nil then
  118.         return
  119.     end
  120.     for totalLen = 1, #pointerUIRankHero do
  121.         local getValue = gg.getValues({{address = pointerUIRankHero[totalLen].address + UIRankHero.banList, flags = gg.TYPE_QWORD}})[1].value
  122.         getValue = gg.getValues({{address = getValue, flags = gg.TYPE_QWORD}})[1].value
  123.         getValue = gg.getValues({{address = getValue + 0x10, flags = gg.TYPE_QWORD}})[1].value
  124.         if stringMethod(getValue, "UI_ChooseHeroUI") == "UI_ChooseHeroUI" then
  125.             gg.saveVariable(pointerUIRankHero[totalLen].address, fileDataUIRankHero)
  126.             return pointerUIRankHero[totalLen].address
  127.         end
  128.     end
  129. return
  130. end
  131.  
  132. UIInit = initUIRankHero()
  133.  
  134. function firstMenu()
  135.     local choose = gg.choice({
  136.     "Chou"
  137.     })
  138.     if choose then
  139. if choose == 1 then
  140. gg.addListItems({{address = UIInit + 0x270, flags = gg.TYPE_DWORD, value = 26, freeze = true}})
  141. end
  142. end
  143. end
  144.  
  145. while true do
  146. if gg.isVisible(true) then
  147. gg.setVisible(false)
  148. firstMenu()
  149. end
  150. end
Tags: Script
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement