What Firegraft does is essentially inject code in Starcraft.exe and other related things
Code injection is auto flagged as malware by most antivirus including default windows smartscreen and quarantined (functionally deleted)
Yet, you actually don't need code injection for many/most of firegraft functions, let alone have the packaged in a "suspicious" custom exe
In fact, you could do them by just changing the locations in Starcraft.exe yourself, which would not be flagged by any antivirus at least as far as parameter edits and assembly code are concerned.
However, I have searched. And searched. And found no such list of hex locations to edit. Even though it is exactly the same as Firegraft is doing, in a more integrated manner. So the locations exist and are known
for example: all in the exe hack section for the most obvious:
- morphing any unit,
- doing archon merging with any unit as valid,
- cloaking enabled for everything,
- Speed/range upgrades, etc.
Since firegraft itself does not display the hex locations, neither does it alter the original .exe as I would find preferable, these are very hard to come by.
Anyone has an online resource, or knowledge about this method and locations?
Many thanks.
Attachments:
None.
I believe you just have to subtract 0x400000 from the in-game address to get the offset within the exe file. Most everything should line up, unless it's located in uninitialized memory (which will go beyond the end of the file)
It looks like the offsets in the .fgd file in firegraft's data.mpq use the exe offsets directly, eg:
46Change=0x90
46Entry=Units,Create Unit,Unit Morph,Order Restriction - Check Unit Type
46IsLong=1
46Offset=0x5dfc4
46Prev=40
46Size=6
46Type=Jump
I assume that means replace 6 bytes at 0x5dfc4 with 0x90
For the one in your screenshot,
235Entry=Upgrades,Capacity,Carrier Capacity,Initital Interceptor Capacity
235Hint=Initial amount of interceptors a carrier can build.
235Offset=0x65407
235Size=1
235Type=Const
235VarType=1
Just replace 1 byte at 0x65407 with the value you want.
Post has been edited 2 time(s), last time on Aug 10 2025, 1:46 am by FaRTy1billion.
TinyMap2 - Latest in map compression! ( 7/09/14 - New build! )
EUD Action Enabler - Lightweight EUD/EPD support! (ChaosLauncher/MPQDraft support!)
EUDDB -
topic - Help out by adding your EUDs! Or Submit reference files in the References tab!
MapSketch - New image->map generator!
EUDTrig -
topic - Quickly and easily convert offsets to EUDs! (extended players supported)
SC2 Map Texture Mask Importer/Exporter - Edit texture placement in an image editor!
This page has been viewed [img]http://farty1billion.dyndns.org/Clicky.php?img.gif[/img] times!
Hmmm... that is some interesting info.
So I extract the fgds from the mpq within firegraft folder
open the extracted FGDs with a text editor
And the offsets are mostly there, yes
it's not that easy to know at a glance how to use them, but this is a massive leap forward in knowing, thanks.
None.
Well, i'm kind of back to square one.
I have fired up hex editor neo and searched for the locations in the fgd files, but these don't correspond to the actual .exe
Perhaps it is different in runtime. Probably. Because it is meant to modify the program at runtime and not as a file
for example: Supply limit hex doesn't point to a 200, starting worker doesn't point to a unit identifier, etc. (my editor doesn't use +-400000, this would go out of bounds from the file every time btw; all of the listed offsets)
Don't have the solution right now, but I'm warning so people know its that easy and if this doesn't work is because its wrong.
I have also tried one of the edits for the heck of it with the corresponding dat edits (turn 000f4691 into 90 ) for the Devourer attack spores to affect ground, but it just crashed (the proper Firegraft version doesn't do that)
On the other hand,. I am maybe wrong because some offsets do seem correct and working (like shield points per cycle)
Attachments:
Post has been edited 3 time(s), last time on Aug 12 2025, 6:32 am by NimoStar.
None.
Maybe only certain memory segments line up, I'm not really sure
TinyMap2 - Latest in map compression! ( 7/09/14 - New build! )
EUD Action Enabler - Lightweight EUD/EPD support! (ChaosLauncher/MPQDraft support!)
EUDDB -
topic - Help out by adding your EUDs! Or Submit reference files in the References tab!
MapSketch - New image->map generator!
EUDTrig -
topic - Quickly and easily convert offsets to EUDs! (extended players supported)
SC2 Map Texture Mask Importer/Exporter - Edit texture placement in an image editor!
This page has been viewed [img]http://farty1billion.dyndns.org/Clicky.php?img.gif[/img] times!
I have also tried one of the edits for the heck of it with the corresponding dat edits (turn 000f4691 into 90 ) for the Devourer attack spores to affect ground, but it just crashed (the proper Firegraft version doesn't do that)
At 0xF4691 is a 2-byte JE opcode. You edited the byte at 0xF4691, but not the byte at 0xF4692. Because you've written only a single NOP, this realigns the opcode interpretation for the CPU, effectively changing the "TEST EAX,0x4000000" opcode at 0xF4693 (A9 00 00 00 04) into "AND CH,byte ptr[ECX+0x4000000]" at 0xF4692 (22 A9 00 00 00 04), and causes your read access exception.
Well I have mastered now how to edit all instructions contained in the firegraft .txt
Yet when googling Starcraft hex editing locations I still end up in this topic.
So I would appreciate anyone with knowledge of the following areas:
* WHERE / How to edit
buttonsets of each unit (VERY important, and also theoretically simple)
* WHERE / How to edit
buttons in the buttonsets themselves (key for adding and changing abilities and researches, as well as for constructing units and buildings not enabled for the regular game)
* WHERE are
requirements stored (by hex editing a value you should be able to individually substitue any requirement; necessary to enable abilities, units and buildings, and editing tech trees).
* WHERE / How to edit
damage types (not as important but still fun, like customizing/adding the missing damage type or changing "independent" damage which is kind of unused)
As for something I can contribute:
tHE DAMNED UNIT ARRAY for extended range ends before there is Reaver, Scarab and Observer; while including many unnecessary heroes
So, you have no way of extending Reaver, Scarab or Observer attack range via researches. This unit array is shorter than others, since you *can* give them for example increased speed or increased sight (Observer has these upgrades in the normal game and that's probably why those arrays are relatively extended, while there are no such attack range upgrades)
The last unit with a possible range upgrade is Fenix (Dragoon), further supporting this line of thinking (since Dragoons do have a range upgrade). Even then, it's completely wasted on it, since they could have just increased its hero weapon's range (while this isn't an option with Warbringer and Reaver). The same applies to most heroes in the list, because they are upgrade-enabled, yet they are nearly always upgraded by default despite having custom weapons where the upgrade stats could have been merged (hero units could have been listed after all regular units to avoid this problem).
Curiously (and given this, probably dumbly) Warbringer (Hero) is listed before the actual Reaver, the only hero to be listed before their base unit.
Sadly without changing building buttons you can't meaningfully switch Reaver's unit position to one where it has a range upgrade.
Post has been edited 5 time(s), last time on Feb 23 2026, 8:50 am by NimoStar.
None.