• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Looking for people interested in creating a SC2 Debugger

Status
Not open for further replies.
Level 9
Joined
Dec 26, 2007
Messages
202
Hey guys,

So I'm making this StarCraft 2 IDE called Moonlite (http://www.vestras.net/moonlite/), in which I would like to include a debugger. Although I do have knowledge in injection and hooks and stuff, I would like to have a "team" behind me also writing on the debugger. Here's how it would work:

1) The user sets a breakpoint on a line of code and runs SC2.
2) When the SC2 VM hits the line of code that has the breakpoint, the debugger collects information on the variables in the current context's values, pauses the SC2 thread and focuses Moonlite, which then shows the information.
3) The user can hit continue any time he/she wants to continue the SC2 thread.

Now, I am 100% percent sure that this is possible, seeing as Grimoire could do it in WC3 and SC2 is built the same way. (VM, etc.)

  • The debugger wouldn't be specific for Moonlite; everyone should be able to use the .dll.
  • The debugger will be written in Visual C++ for interaction with .NET applications.
  • We will use Git or Subversion for source control.

Basically I am looking for people who know what they're doing in the whole memory management thingy, as I am less experienced in that. I will of course contribute with code once we have the basic injection and hook APIs setup. (I have already set up some code, although I am not sure if it is working.
So, anyone who is interested, please apply, telling me what you can do, what you've done before, etc.

Thanks,
Vestras
 

Dr Super Good

Spell Reviewer
Level 63
Joined
Jan 18, 2005
Messages
27,191
The problem with injecting stuff into code is that it requires you displacing parts of the code. Thus you probably have to include the displaced code in the reroute so that the major functionality is not altered. If you inject when something loads, this probably does not happen but you then have to find the code responsible for loading the part you want to inject into and adding your code once that process reaches a certain point and this is what I believe JNGP and such did.

Personally, the process of finding where such stuff as variables are stored is enough to drive one mad and after spending 8 hours with WC3 I gave up. You prety much have to use a dissassembler and through logical questioning eventually find the blocks which contain the data. You also have to find the right pieces of code to look at. Far beyond the skill of even second year computer scientists.

Further more, people with the skills to do this sort of task generally abuse it rather than putting it to constructive uses like making a SC2 debugger as this uses simlar principles as are behind some viruses/worms and game hacking.

I can see why you are outsourcing this to someone else but ultimatly you will have to be lucky enough to find someone with enough dedicated time to pull this off.

Also does the SC2 editor not contain its own debugger? It might be a good place to start by looking at how the SC2 editor debugger opperates as you could then try to mirror some of its functionality more easilly (like how it hooks with the game).
 
Status
Not open for further replies.
Top