User blog:4thDimensionTraveler/Monster Debugger

I've realized that this is basicly the last thing that I haven't released to everyone, so here it is!

This is probably the last post about SAS 4, ever.

This also works for any other flash game.

1. Download Monster Debugger

2. Download the latest version of RABCDAsm. The source is here: [//github.com/CyberShadow/RABCDAsm https://github.com/CyberShadow/RABCDAsm]

If you are not doing SAS 4, you may need to compile the latest version. You may also need the liblzma library if you're doing other swfs (more details on the github page).

Extract it to a folder.



3. Now, export the Monster Debugger code. Press "Export" and find the swc file. Change it to a zip. You should find library.swf inside. Extract it out to the directory where the RABCDAsm folder is.

4. Now, you need to disassemble it. Use abcexport and rabcdasm on it (details on github page). Note that you will need to do this for all abc files except for library-0.abc.

Generally:

Run "abcexport .swf" (Extracts scripts from the .swf file) Run "rabcdasm -0.abc" (Decompiles the scripts)

Note: If multiple abc files come up, you need to check all of them (except for Monster Debugger which I documented for you)

5. There should now be 9 folders, from library-1 to library-10. For each one, go into com/demonsters/debugger, and you'll find 2 files inside. Extract them all into one folder, and you should have 18 files.

6. Download the game's swf and place it in the RABCDAsm folder. Disassemble it just like you would have on step 4.

7. Open the folder where you game has been disassembled, and insert all the files you have for Monster Debugger. You have to create inside your game a com folder, a demonsters folder inside it, and then a debugger folder inside of that.



8. Now open the class you want to modify variables within. The debugger will get initialized when the class is loaded. If you are modding SAS 4, there is a list of keywords to help you search the right class for the right purpose.

Open up the class and find pushscope. It should be the first one you see. Add the following lines after it:

getlex QName(PackageNamespace("com.demonsters.debugger"), "MonsterDebugger") getlocal0 callpropvoid       QName(PackageNamespace(""), "initialize"), 1

This will init monster debugger at the init method of your class.

9. Now go to (swf name)-0.main.asasm and open that up. Paste the following above:

[//4thdimensiontraveler.fandom.com/wiki/Thread:553 https://4thdimensiontraveler.fandom.com/wiki/Thread:553]

'''Note: Please replace the 1. with a hashtag (#).'''

10. Run "rabcasm -0/ -0.main.asasm" (Recompile scripts back to .abc)

11. Run "abcreplace .swf 0 -0/ -0.main.abc" (Add modified script to .swf file)

12. Now, download Fiddler. Go to Tools > Options > HTTPS and press "Decrypt HTTPS Traffic".

13. Go to AutoResponder, and enable the following:

"Enable Rules"

"Unmatched Requests Passthrough"

Paste the (real) link to the SWF in the first box. Paste the link to your compiled SWF (press "Find a file") in the second.

You should be done now. Open up the link and Monster Debugger. When the class is loaded, Monster Debugger will switch to debug mode.

Below is a guide for keywords you should search for. I haven't updated it since 2017, so some of it may be broken.

Script Names to Modify
For step 8, here are the files you should modify if you want to do specific hacks. SAS 4 hasn't changed its obfuscation mappings since Apr 2017, so it should still be accurate.

Name Spoof - o4787 getKongUsername (Note: Do not attach monster debugger to this, just change the name)

Character Data - o9145

Skills Buffer - o14094

SAS 4 Lookup Guide
gear gen function: (1000, weapon stats function: 1.1 mp stats function: this.name (find vars for mp stat then search with it) armor/crit chance:0.99 exp:0.33 ticket function: [0,0,0]; cooldown: + (param1 - 1) * skill point: == 31) (also mp stat) revive token: (0,0,0,0,0,0,0); champ medals: [502]; then scroll up until see return value temp diamond badge public function o15865(param1:int, param2:int) : void { var _loc3_:Vector. = o7521(param1); §§dup(_loc3_[param2]).value++; (for aug 28 swf) how to make new char asap: apply mp stat hack, apply instant 100 at loading char, 100 cores/respec, etc mastery hack:   = Math.random < 0.5; look for something before line 100 full of loc vars mastery set:  < 71) (public function o143(param1:int, param2:Boolean) : void) for feb10 2018 swf temp diamond badge: (same as champ medal) HDA: > 0.001 turret hack (no limit): * 5.3; (line 2928) zombie spawn rate increase: - 3) / 2 * 0.01 + character stuff hack (XP, weapons) (Universal weapon/armor adder): Math.random * 2147483647; (it only has dictionary import)

WEAPONS AND ARMOR are stored in ARRAYS (folders in monster debugger), you should be able to see unobfuscated variables such as "grade" and the armor name and description

Weapon IDs
(For those who want to change weapons, change its ID) (You will need to refresh to see it) If you are unsure which variable is the ID, buy a red ronson 50 and see which variable says 180! 116=Trailblazer 117=ZombieMachineGun (20 damage) 118=ZombieSeekingMissileLauncher (750 damage) 119=ZombieSeekingMissileLauncher (1500 damage) 120=ZombieFlameThrower (40 damage) 121=ZombieMiniGun 122=ZombieSmallTurret 123=ZombieTurretRocket 124=CM Zeus Child 125=ZombieMachineGun (320 damage) 126=ZombieMissileLauncher (6000 damage) 127=ZombieSeekingMissileLauncher (12000 damage) 128=ZombieFlameThrower (160 damage) 129=Z-5 Heavy 180= Red ronson 50 181= Trident 182= M1000 183= Temp don't spawn 184= Planet Stormer LTD 185= Ronson WP in. 186= HIKS A10 187= donderbus 188= Ria 15 se 189= Torm 190= X1 Furie 191= Null (no weapon) 194=Handkanone 195= CM 505 Alpha 196= HIKS S4000 197= Vitriol 198= CM 000 Kelvin 199= Ronson 5x5 200=Supermarine Alpha Ltd Edition 201=RIA 8A 202=CM Lazer Drill 203=CM 467 204=CM 352 Quasar 205=Ricochet 206=Bayonet 207=RIA 75 208=HIKS 888 Caw 211=Zerfallen 212=CM Proton Arc