Jump to content

Stillo

Members
  • Posts

    16
  • Joined

  • Last visited

Posts posted by Stillo

  1. On 10/31/2023 at 11:22 AM, _itsukei69 said:

    Hey, sorry for the late reply @MonkeySAN. There is just one thing with your first method. It seems, the value affects globally (including non-playable units). So, when I set all the attributes to the highest, when I clicked end turn, my allies (non-playable units) also become OP. XD

    Therefore, I mixed the way of changing the values. 

    1. Find my unit HP (using your method).

    2. Edit the Mobility and Attack Range (not too OP).

    3. Freeze this, like you shared. (Btw, this one helped alot). Thank you for sharing your findings and knowledge. 😁

    4. Leave the rest. 

    5. Unfreeze the values on point 3 right after your mission is completed screen pops up, to avoid sudden crash to home screen. (Important, always unfreeze).

     

    Side note for other players:

    a. Do not set your Mobility/Attack Range willy-nilly. Set it to limited amount of values. I set my Mobility max to 15, and Attack Range to 3-5.

    I will try to advise about some interesting courses that I have learned about recently. But at first I was wondering whether I should take them or not. But then I found a lot of information about them, about Bar https://edureviewer.com/courses/crushendo-review/ as a whole and I was able to make some kind of picture for myself. I hope I helped you too.

    Thank you again, for sharing @MonkeySAN.

    Cheers! 🥂 

    I tried to do this algorithm but it didn't do much.

  2. On 1/19/2023 at 9:00 AM, Platonic said:

    Can the script be improved in writing and speed? When i run the script it seems to take a suspicious amount of time to add the string names to the corresponding addresses.  Im not sure how i could improve it so that the script in general goes faster.

    local range = gg.getRangesList("anon:linker_alloc")
    local valStart = range[3].start + 0x20
    local valEnd = range[3]["end"]
    local loop = valEnd - valStart
    
    dex = {}
    for i = 1, loop do
      dex[#dex + 1] = {address = valStart, flags = gg.TYPE_QWORD}
      valStart = valStart + 0x250
      if valStart >= range[3]["end"] then break end
    end
    
    gg.loadResults(dex)
    gg.refineNumber(0, gg.TYPE_QWORD, nil, gg.SIGN_NOT_EQUAL)
    
    local dex = gg.getResults(gg.getResultsCount())
    local strPointer = {}
    local exe = {}
    
    for i, v in ipairs(dex) do
      strPointer[i] = {address = v.address + 0xC8, flags = gg.TYPE_QWORD}
      exe[i] = {address = v.value, flags = gg.TYPE_DWORD}
    end
    
    exe = gg.getValues(exe)
    strPointer = gg.getValues(strPointer)
    
    local lup = 1
    local executable = {}
    
    for i = 1, #exe do
      local stringAddress = {}
      local final = {}
      for j = 1, 150 do
        stringAddress[#stringAddress + 1] = {address = strPointer[lup].value, flags = gg.TYPE_BYTE}
        strPointer[lup].value = strPointer[lup].value + 1
      end
      strings = gg.getValues(stringAddress)
      for b, t in ipairs(strings) do
        if strings[b].value ~= "0" then
          final[#final + 1] = string.char(t.value&0xFF)
          a = table.concat(final)
        else
          break
        end
      end
      executable[#executable + 1] = {address = exe[i].address, flags = gg.TYPE_DWORD, name = a}
      lup = lup + 1
    end
    gg.addListItems(executable)
    
    local lib = {}
    for i, v in ipairs(executable) do
      if (string.find(v.name, "libil2cpp.so")) ~= nil then
        lib[#lib + 1] = v
        break
      end
    end
    gg.loadResults(lib)

    I've also discovered a great passion for math problems. I try to solve as many of them as possible to develop my logic and intelligence. But sometimes even I couldn't cope, that's why I get help here https://assignmentbro.com/us/math-assignment-help from math experts. I think it will be useful for you if you are also a student like me, even with the most difficult problems in higher math can quickly cope.

    I tried to test your script, but it gives me an error. Did you change anything in the end?

  3. On 12/1/2022 at 3:21 PM, MAARS said:

    for me  the main problem is optimization,

    the problem i have noticed

    •  you are using global variable everywhere

    Use local variable, they are more fast

    • can you explain why you double loop here ?

    The first loop might be ok but the second one i think there is to much iteration going on here, an address divided by 4 still result a big number i think

    after test, this his approximately how much time you loop every time, the list still go down, so it is totally normal that you crash.

    image.thumb.png.79152ce2e1be372a8ba31d3c24a03e84.png

    code used for test

    local ranges = gg.getRangesList("anon:libc_malloc")
    
    for i, v in ipairs(ranges) do
      print('( v["end"] - v.start ) / 4 => ', (v["end"] - v.start) / 4)
    end

     

    • You just override a native libary

    Unless you voluntary does it, table is a native library, so when you use it as a variable name you just override everything from it

    I would try not to change anything if I were you. But the update is cool as always. The update is really really cool. I didn't even expect to get something like this. But as for books, I recently wrote a review on a similar one. It helped me that I found customwriting.com specialists here who can help with that. Doing a quality review or review is worth a lot, for example for the same book. I hope you will find this helpful too.

    • You are using #identifiant +1 to set your table index

    this is a big performance problem, unless you are looping just 10 or 20 time that might be ok, but here you will loop more that 1000 time i guess event more,what the # operator does on a table ? actually it will also loop to count every item on your table so as you guess, when you have a 10k+ item on your table imagine how slow and memory that will take.

    in the beginning you say you must load  value within offset of 4 but since you are using DWORD, offset 4 mean just the next address, since DWORD value are 8bit encoded

     

     

     

    I outsourced such problems because I could not fix optimization myself, it is a complex and difficult task.

  4. On 12/2/2021 at 10:26 AM, CmP said:

    Let's not forget what scripts for GG are. They are automation of methods for certain modifications in games via process memory editing. Authorship of scripts essentially boils down to authorship of methods implemented in them, since value of scripts lies exactly in them. If methods are public, particular scripts that implement them in most cases aren't important, because methods can be applied manually and/or can be implemented in other scripts. So for authorship of scripts to be relevant, methods need to be not public, but this leads to contradiction: public release of scripts for GG fundamentally can't co-exist with keeping implemented methods private. Therefore, authorship of scripts for GG the way you want it to be can't exist.

    However, it can (and does) exist the same way as authorship of methods for using GG to achieve certain result in certain game that get published at this forum or anywhere else. It doesn't matter whether methods are published in form of text, video or script, their authors most often get the popularity they deserve (even though some of them don't even care about it). But popularity/recognition by themselves is a wrong goal, instead one should strive to become better at activities of one's interest.

    Thank you for detailing this, it's much appreciated. And I agree with this way of development, although it is quite difficult.

  5. On 10/19/2022 at 9:58 PM, Dakhowl said:

    is there any way to change ART to Dalvik? I tried using X8 Sandbox and the speedhack is working, but not on my rooted device

    It's simple, if I understand it correctly. The usual algorithm: Settings > Developer Options > Select Runtime and choose between Dalvik and ART

  6. On 6/28/2023 at 12:05 PM, Xaviesz said:

    [ @Stillo ]
    ---
    It is normal. Libil2cpp or LibUE4 is popular because there's a lot reference to that, it is a library where the game stores many in-game datas. If your game doesn't have this, you would likely to find the value manually, differs to Libil2cpp.so; where there's many tools that allows you to see the game datas from that library.
    ---

    I'm just still new to this. What is the best toolkit?

  7. On 9/19/2022 at 10:59 PM, MC189 said:

    Hi! I'm trying to answer as easy as possible, hopefully it's also easy to understand. Starts off the first one; Memory range is 'How long the Memory'. First of all, Memory is consist of many addresses. In that memory, there's App data that currently processed/used by the app. To understand memory range, let's take a real-life example: there's a library, it has many rack of books.

    • - Cooking books are served in the last 8-9 rack
    • - Utensils are in the first - 3 row and
    • - Novels is on upstairs.

    From this; you can get the idea on how the memory works:

    • - 8-9 rack are location range of Cooking books
    • - Utensils are stored in 1-3 row range, and
    • - Novels is on upstairs (It's related to offset, we going to talk about it next) 

    Libs is a Library; it contains saved data that app will use to run. There's a memory-range with various data related to players, weapon, etc. It's the same as a Book Library we talked about earlier, it contains many rack of books for people to read. There's a range place of cooking books, novels and etc.

    It's the name of Unity Games Library. Unity is a game engine; that people use to make games. So, if a game is made from Unity; it has many chance from being similar from another unity game. Each game engine has it's own unique library name and data-structure; in Unreal Engine 4, the lib naming is LibUE4.so. You shouldn't be worry about this, it's just a naming; the same as a product brand.

    So.. Offsets.. It's a displacement or an instructional form to get into your destination. In Memory; There's address. It's the same to regular address in real-life. Taking an example from earlier; Rack 8 and Rack 9 is address for Cooking books; Row 1, 2, and 3 is address for Utensils. The different is: Memory Address is written like this: 01234567 in Hex form. For clarity; Hex can also be written like this

    • - 01 23 45 67
    • - 0x01234567
    • - 0x01 0x23 0x45 0x67

    Alright, let's dive into Offsets. Offset is how to get into your address, in instructional form. Again, we going to use the same example: Let's say you're on a library and you want to read a cooking book. So the offset to cooking book is:

    • - From the entrance, walk straight to the end
    • - Turn right into rack 8

    Now, in Memory; again let's say that you want to get into 12345678 address, the offsets would be:

    • - From base/first address 00 00 00 00
    • - Add 12 34 56 78 (00000000 + 12345678 = 12345678)

    Let's do another example: if you're on Address 00 A0 and want to reach 01 50; you can do (00 A0 + 00 B0 = 01 50). If you're confused with hexing, you can experiment with: Hex Calculator

    I don't have il2cpp, is this normal or do I need to reinstall?

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.