Jump to content

BadCase

Modding Team
  • Posts

    687
  • Joined

  • Last visited

  • Days Won

    33

Everything posted by BadCase

  1. View File Obfuscated Class Finder by BadCase A tool to find new class names after updates in unity games that use obfuscated class, field and method names. You must have an old dump that you know the Namespace and Class name in and the current dump in order to find the new Class name. Submitter BadCase Submitted 12/22/2022 Category Tools  
  2. Version 1.0.0

    1,131 downloads

    A tool to find new class names after updates in unity games that use obfuscated class, field and method names. You must have an old dump that you know the Namespace and Class name in and the current dump in order to find the new Class name.
  3. View File Unity Script Templates by BadCase These are a few templates to allow you to easily create scripts for Unity based games. Fields.Class.Name.Offset.Template.by.BadCase Add edits to the "fieldEdits" table in the following format [1] = { editName = "Free Clothes", emoji = "", edits = { { className = "ClothesOriData", armEdits = {0X18, 0X28}, editTo = 0, editType = gg.TYPE_DWORD, editIfEqual = nil }, { className = "ClothesOriData", armEdits = {0X1C, 0X28}, editTo = 0, editType = gg.TYPE_DWORD, editIfEqual = nil }} }, className: is the name of the Class the Field belongs to armEdits: is a table in this format {arm7_field_offset,arm8_field_offset} editTo: is the value to edit the Field instances to editType: is the type of value to edit the Field instance as editIfEqual: use if you only want to edit fields of a certain value and or get user input for this value can bet set to nil: if editing all Field instance integer: for editing all Field instances of a single value integer range: in this format 0~100 for editing all Field instance with a value in that range text: for providing instructions to the user in a prompt asking them to specify the value to be edited Methods.Class.Method.Name.Template.by.BadCase Add edits to the "methodEdits" table in the following format [1] = { editName = "Unlimited Ammo", emoji = "", edits = { { className = "Player", methodName = "HasBulletsClip", armEdits = {{"~A MOV R0, #1", "~A BX LR"}, {"~A8 MOV W0, #1", "~A8 RET"}} }} }, className: is the name of the Class the Method belongs to methodName: is the name of the Method to edit armEdits: is a table in this format {(arm7_lib_edits},{arm8_lib_edits}} edits can be GG assembler opcodes (~A BX LR), hex (00000000h) or reverse hex (00000000r) Combined.Field.Method.Template.by.BadCase This is the above 2 templates combined, make sure you have the same items in both the "methodEdits" and "fieldEdits" If a function only has one type of edits for example "fieldEdits" and no "methodEdits" then the "methodEdits" edit table for that function should be an empty table {} Check the last function in the script for an example. Submitter BadCase Submitted 12/21/2022 Category Tools  
  4. Version 1.0.0

    1,491 downloads

    These are a few templates to allow you to easily create scripts for Unity based games. Fields.Class.Name.Offset.Template.by.BadCase Add edits to the "fieldEdits" table in the following format [1] = { editName = "Free Clothes", emoji = "", edits = { { className = "ClothesOriData", armEdits = {0X18, 0X28}, editTo = 0, editType = gg.TYPE_DWORD, editIfEqual = nil }, { className = "ClothesOriData", armEdits = {0X1C, 0X28}, editTo = 0, editType = gg.TYPE_DWORD, editIfEqual = nil }} }, className: is the name of the Class the Field belongs to armEdits: is a table in this format {arm7_field_offset,arm8_field_offset} editTo: is the value to edit the Field instances to editType: is the type of value to edit the Field instance as editIfEqual: use if you only want to edit fields of a certain value and or get user input for this value can bet set to nil: if editing all Field instance integer: for editing all Field instances of a single value integer range: in this format 0~100 for editing all Field instance with a value in that range text: for providing instructions to the user in a prompt asking them to specify the value to be edited Methods.Class.Method.Name.Template.by.BadCase Add edits to the "methodEdits" table in the following format [1] = { editName = "Unlimited Ammo", emoji = "", edits = { { className = "Player", methodName = "HasBulletsClip", armEdits = {{"~A MOV R0, #1", "~A BX LR"}, {"~A8 MOV W0, #1", "~A8 RET"}} }} }, className: is the name of the Class the Method belongs to methodName: is the name of the Method to edit armEdits: is a table in this format {(arm7_lib_edits},{arm8_lib_edits}} edits can be GG assembler opcodes (~A BX LR), hex (00000000h) or reverse hex (00000000r) Combined.Field.Method.Template.by.BadCase This is the above 2 templates combined, make sure you have the same items in both the "methodEdits" and "fieldEdits" If a function only has one type of edits for example "fieldEdits" and no "methodEdits" then the "methodEdits" edit table for that function should be an empty table {} Check the last function in the script for an example.
  5. Oops, I will fix in next update but changing "Il2cpp." to "ggil2cppEdits." on line 1281 should fix it in the meantime
  6. View File BadCase's GGIl2cpp Toolbox This script provides a frontend for all of the core functions of @Kruvcraft's GGIl2cpp (#1zbicc50) as well as some additional functions. FindClass: Calls GGIl2cpp's Il2cpp.FindClass() function and loads results to the Save List. Selecting results in the Save List opens a menu to copy data, load Field instances, make Method edits and create Field and Method edits for exported scripts. FindFields: Calls GGIl2cpp's Il2cpp.FindFields() function and loads results to the Save List. Selecting results in the Save List opens a menu to copy data, load instances of the Field and create Field edits for exported scripts. FindMethods: Calls GGIl2cpp's Il2cpp.FindMethods() function and loads results to the Save List. Selecting results in the Save List opens a menu to copy data, edit Methods and create Method edits for exported scripts. FindObject: Calls GGIl2cpp's Il2cpp.FindObject() function and loads results to the Save List. Selecting results in the Save List opens a menu to load Field instances. PatchesAddress: Calls GGIl2cpp's Il2cpp.PatchesAddress() function which edits a Method in Xa with a hex byte edit. The script can create the hex byte edits for you or you can enter them manually. Keyword Search: Allows you to search for Classes, Methods and Fields by keyword instead of exact name. Classes will be added to the Save List for Class and Field results, Methods will be added for Method results. Script Creator: Allows you to edit created function names, modify menu order and export scripts. Submitter BadCase Submitted 11/25/2022 Category Tools  
  7. Version 1.0.4

    2,382 downloads

    This script provides a frontend for all of the core functions of @Kruvcraft's GGIl2cpp (#1zbicc50) as well as some additional functions. FindClass: Calls GGIl2cpp's Il2cpp.FindClass() function and loads results to the Save List. Selecting results in the Save List opens a menu to copy data, load Field instances, make Method edits and create Field and Method edits for exported scripts. FindFields: Calls GGIl2cpp's Il2cpp.FindFields() function and loads results to the Save List. Selecting results in the Save List opens a menu to copy data, load instances of the Field and create Field edits for exported scripts. FindMethods: Calls GGIl2cpp's Il2cpp.FindMethods() function and loads results to the Save List. Selecting results in the Save List opens a menu to copy data, edit Methods and create Method edits for exported scripts. FindObject: Calls GGIl2cpp's Il2cpp.FindObject() function and loads results to the Save List. Selecting results in the Save List opens a menu to load Field instances. PatchesAddress: Calls GGIl2cpp's Il2cpp.PatchesAddress() function which edits a Method in Xa with a hex byte edit. The script can create the hex byte edits for you or you can enter them manually. Keyword Search: Allows you to search for Classes, Methods and Fields by keyword instead of exact name. Classes will be added to the Save List for Class and Field results, Methods will be added for Method results. Script Creator: Allows you to edit created function names, modify menu order and export scripts.
  8. Unfortunately for unrooted android 11+ users, virtual machines are the only working option for most. I reccomend VMOS Pro, some games will run better with different roms. I had one running too slow in the 64bit rom so I installed the 32bit one instead and it played smoother. Installing one with a different android version can make a difference as well. None of the other virtual machines have this type of flexibility. But there will still be some games that won't work in it
  9. BadCase

    Help field offset

    Then you are using it wrong...
  10. BadCase

    app crash on vmos

    If you install a 64 bit apk it should reboot with 64bit support What game are you trying to run?
  11. It is asking you to select a folder to save data to...
  12. BadCase

    dump lib

    Yes, only with unity engine games. Also he only said it once, I think his comment was moved down from the downvote so it appeared to be new lol
  13. BadCase

    dump lib

    This does not seem to be a Unity game
  14. BadCase

    dump lib

    This game is ARM8 only and my rooted device is ARM7 but I can create riru and zygisk modules to dump and hopefully someone else here will run them for you and give you the dump they create
  15. BadCase

    dump lib

    You can try Riru or Zygisk Il2CppDumper depending on if you have old magisk or zygisk magisk. If you do not have a PC to build it on let me know which magisk you are using and send a link to the game
  16. Headshot is a Boolean meaning it returns true or false, setting R0 to 1 makes it return true, setting it to 0 makes it return false, BX LR ends the function and returns to the code that called it.
  17. Anyone know if you can still change items to pets with swapping pointers? It is still working for everything else
  18. What method are you using to dump it?
  19. BadCase

    GGIl2cpp

    Excellent script, I wanted to let you know that in these versions there are two Offsets different than the standard v24 2018.3.0f2 - 2018.3.7f1 | v24.1 2018.3.8f1 - 2018.4.36f1 | v24.1 ClassApiCountMethods ARM8 = 0x118 ARM7 = 0xA8 ClassApiCountFields ARM8 = 0x11C ARM7 = 0xAC
  20. Oops, CmP just let me know for X0 ~A8 MOV X0, XZR or ~A8 MOV W0, WZR depends on the type of register X or W
  21. ~A8 MOV X0, WZR
  22. BadCase

    BadCase's Toolbox

    Ok, if you do not see it fixed in the next few days remind me
  23. BadCase

    BadCase's Toolbox

    Search dump.cs first, then you can see results here
  24. Looks like you only changed the code in KE18() and not in KE17()
  25. The code I posted will revert the values when KE18() is called
×
×
  • 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.