I'm working with this on code::blocks, i cant stand visual studio :P I'm using git via Git Bash. I'm accustomed to it because it works the same way at native git bash on linux. "git add ." here, "git commit" there, and after good work done "git push" :P Anyway, it totally works now :D I'll commit it in a moment and upload working release. Next step is to refactor and comment code.
@edit:
it actually evolved to project, so i move it to separated thread. Leave this for more philosophical discussions :P
Save injection almost works, but "MapScript.galaxy" is handled by editor while interrupted, so i can't write to it. Anything other just works. I need a workaround. Tried to close and reopen handle after replace, but it is passed by variable, so i can't just do that. New handle has new id. I probably need to override file deletion for handle check. Anyway, tomorrow or maybe even later. School just begins. Too bad. Good night Europeans x)
yep, you are a human :P and i am going to update it. Actually you can create pull request too :P I'm coding it on windows, because it uses WinApi and StarCraft II didn't work under wine :( This post is from fedora :P
Hi!
You should really check this out :) try saving map from hacked editor and see, where and what it writes before packing :P
working alpha build of Gemini: gemini_build0.1.7z
and of course source full source code on github
there will be a bunch of messageboxes with CreateFileW in the title during startup. Just click ok until editor opens.
Tell me if you're antivirus tell you something bad about this exe, and if, treat it as false positive. My program uses some hacks like dll injection and Import Address Table (IAT) pathing. This is dangerous stuff for helpless application :P but i have good intentions doing that. If you don't trust me, check source and maybe even compile it for your own :) full code::blocks project and lualib included.
Good work :) thanks mate. I'm sure it will be very useful :)
I'm planning to rewrite it completely, but i need some critical addresses anyway. I think it crashes, because phyngal overwrites memory, not just injecting some code. I have better idea how to do that. I want to add some jumps here and there, after that jump i will execute the patched instruction, do what i am jumping for and just return from hack. The same as i done with dll injection, but here i just path EIP register so i actually did not overwritten any other memory ;) this is good approach when i need something to be done immediately. Of course anything will be called from lua :)
btw:
there will be a big editor path in 1.4, i just hope opcode signatures wont change x)
Check out my sc2Gemini project on github. It is in very early stage of development, but I'm working on it ;)
Next step is link it with lua or node.js, but i probably put on lua, because it doesn't need external exe. I will release working build as soon as it will do something useful :P
@midiway: Go
I know that, i want to do the same what grimoire does in WE. I will export all data from map's mpq after save, run some other process on it (something like jassHelper, but for galaxy, i.e. galaxy++ parser). Another thing will be detecting, when user opens trigger editor (to inject TESH-like editor), add some windows menus etc. I wont really modify memory, only a few instructions ;) I have no time at the moment, but after hours i'm working on simple dll injector (and it actually almost works :P).
@SouLCarveRR: Go
Thanks for suggestions, but i wont create "jassHelper" or "TESH", but "Grimoire" :P Maybe later ;) Anyway, this is how it will work.
doing small progress.
Here is my current VerAddr table. If anybody can help me find missing adresses, it will be great ;)
Small howto: google for older SC2Editor.exe, check for adresses in adress.asm from phyngal, find maching instructions in new version, get current address (and maybe signature for later scanning).
I will update it every time i find something.
@edit:
nevermind, midiway get a good job done here, pray to him :P
I used flat assembler. I'm aiming to compile it as *.o and just link into some C++ source for clarity (i prefer GCC/MinGW). For now I'm learning assembler and I'm doing pretty well :) Old SC2Editor.exe will be great ;)
edit:
I left the theory part behind me, so it is time for practice now :P
BTW, I'm trying to debug GE right now, searching for some functions. Without any success for now (actually i do it second time without source, first was much easier :P). Too much multi-threading :P
edit:
Compiles without any special effort. The only thing i have done was updating include pathes.
Wow wow, assembler source :D I have no real experience with it. I know it is possible to run this code from C/C++ (or just make compatible dlls in it). So far i see it is outdated. :( "oh shi~ unsupported editor build"
edit:
Just seen grimoire source... mix of cpp, asm, lua, some pascal... wtf! I feel dumb :P Anyway, it is possible, and actually it is not THAT big application :P Phyngal is even smaller, and i think it is good entry point. So bad i don't really understand fasm...
Anyone know how to update address.asm (form phyngal) for latest editor?
I want, but i don't exactly know how to do it (for now, maybe later ;P just love learning it), and probably i would have no time for a year (last year of high school... you know).
You said modification detections. Maybe game files, but i think they just don't care about editor's memory during runtime. Maybe game, but editor? I don't believe it :P There always is any way to integrate into existing process. You can manipulate winapi handles or insert some data here and there. New trigger editor may be only an overlay (or new window, who cares), which just insert written code into map during save (and maybe compile/optimize it before). There is always a way ;)
Hi.
You guys made good work, so far we have some good editors, "galaxy extended" languages and many many other tools. But i feel like something is missing. While developing maps in wc3, we have all hacks together in original WE. Anyone ever tried to create Grimoire-like toolkit for SC2 (dll injection, maybe clever winapi usage), or maybe this actually exists (and i missed it)? It will be extremely useful for in-editor modifications. Just imagine data editor wizards for creating units, items... or galaxy++ / andromeda inside trigger editor (just like vJass). Another idea, there is no way to diff maps between versions. Simple unpack/pack map in editor next to git or mercurial... awesome :D
I'm actually php / javascript (experimenting with NodeJS too) programmer with some c++ experience, but no time :( thats why i just wrote it here without any work... forgive me and just discuss about this idea ;)
I'm working with this on code::blocks, i cant stand visual studio :P I'm using git via Git Bash. I'm accustomed to it because it works the same way at native git bash on linux. "git add ." here, "git commit" there, and after good work done "git push" :P Anyway, it totally works now :D I'll commit it in a moment and upload working release. Next step is to refactor and comment code.
@edit:
it actually evolved to project, so i move it to separated thread. Leave this for more philosophical discussions :P
Save injection almost works, but "MapScript.galaxy" is handled by editor while interrupted, so i can't write to it. Anything other just works. I need a workaround. Tried to close and reopen handle after replace, but it is passed by variable, so i can't just do that. New handle has new id. I probably need to override file deletion for handle check. Anyway, tomorrow or maybe even later. School just begins. Too bad. Good night Europeans x)
yep, you are a human :P and i am going to update it. Actually you can create pull request too :P I'm coding it on windows, because it uses WinApi and StarCraft II didn't work under wine :( This post is from fedora :P
Hi!
You should really check this out :) try saving map from hacked editor and see, where and what it writes before packing :P
working alpha build of Gemini: gemini_build0.1.7z
and of course source full source code on github
there will be a bunch of messageboxes with CreateFileW in the title during startup. Just click ok until editor opens.
Tell me if you're antivirus tell you something bad about this exe, and if, treat it as false positive. My program uses some hacks like dll injection and Import Address Table (IAT) pathing. This is dangerous stuff for helpless application :P but i have good intentions doing that. If you don't trust me, check source and maybe even compile it for your own :) full code::blocks project and lualib included.
Don't forget to check humans.txt on repo :)
Good work :) thanks mate. I'm sure it will be very useful :) I'm planning to rewrite it completely, but i need some critical addresses anyway. I think it crashes, because phyngal overwrites memory, not just injecting some code. I have better idea how to do that. I want to add some jumps here and there, after that jump i will execute the patched instruction, do what i am jumping for and just return from hack. The same as i done with dll injection, but here i just path EIP register so i actually did not overwritten any other memory ;) this is good approach when i need something to be done immediately. Of course anything will be called from lua :)
btw:
there will be a big editor path in 1.4, i just hope opcode signatures wont change x)
Check out my sc2Gemini project on github. It is in very early stage of development, but I'm working on it ;) Next step is link it with lua or node.js, but i probably put on lua, because it doesn't need external exe. I will release working build as soon as it will do something useful :P
@midiway: Go
I know that, i want to do the same what grimoire does in WE. I will export all data from map's mpq after save, run some other process on it (something like jassHelper, but for galaxy, i.e. galaxy
++
parser). Another thing will be detecting, when user opens trigger editor (to inject TESH-like editor), add some windows menus etc. I wont really modify memory, only a few instructions ;) I have no time at the moment, but after hours i'm working on simple dll injector (and it actually almost works :P).@SouLCarveRR: Go
Thanks for suggestions, but i wont create "jassHelper" or "TESH", but "Grimoire" :P Maybe later ;) Anyway, this is how it will work.
doing small progress. Here is my current VerAddr table. If anybody can help me find missing adresses, it will be great ;) Small howto: google for older SC2Editor.exe, check for adresses in adress.asm from phyngal, find maching instructions in new version, get current address (and maybe signature for later scanning).
I will update it every time i find something.
@edit:
nevermind, midiway get a good job done here, pray to him :P
I used flat assembler. I'm aiming to compile it as
*
.o and just link into some C++
source for clarity (i prefer GCC/MinGW). For now I'm learning assembler and I'm doing pretty well :) Old SC2Editor.exe will be great ;)edit:
I left the theory part behind me, so it is time for practice now :P
I can try to compile it.
BTW, I'm trying to debug GE right now, searching for some functions. Without any success for now (actually i do it second time without source, first was much easier :P). Too much multi-threading :P
edit:
Compiles without any special effort. The only thing i have done was updating include pathes.
Wow wow, assembler source :D I have no real experience with it. I know it is possible to run this code from C/C
++
(or just make compatible dlls in it). So far i see it is outdated. :( "oh shi~ unsupported editor build"edit:
Just seen grimoire source... mix of cpp, asm, lua, some pascal... wtf! I feel dumb :P Anyway, it is possible, and actually it is not THAT big application :P Phyngal is even smaller, and i think it is good entry point. So bad i don't really understand fasm...
Anyone know how to update address.asm (form phyngal) for latest editor?
I want, but i don't exactly know how to do it (for now, maybe later ;P just love learning it), and probably i would have no time for a year (last year of high school... you know).
You said modification detections. Maybe game files, but i think they just don't care about editor's memory during runtime. Maybe game, but editor? I don't believe it :P There always is any way to integrate into existing process. You can manipulate winapi handles or insert some data here and there. New trigger editor may be only an overlay (or new window, who cares), which just insert written code into map during save (and maybe compile/optimize it before). There is always a way ;)
Hi.
You guys made good work, so far we have some good editors, "galaxy extended" languages and many many other tools. But i feel like something is missing. While developing maps in wc3, we have all hacks together in original WE. Anyone ever tried to create Grimoire-like toolkit for SC2 (dll injection, maybe clever winapi usage), or maybe this actually exists (and i missed it)? It will be extremely useful for in-editor modifications. Just imagine data editor wizards for creating units, items... or galaxy
++
/ andromeda inside trigger editor (just like vJass). Another idea, there is no way to diff maps between versions. Simple unpack/pack map in editor next to git or mercurial... awesome :DI'm actually php / javascript (experimenting with NodeJS too) programmer with some c
++
experience, but no time :( thats why i just wrote it here without any work... forgive me and just discuss about this idea ;)