eqjoe wrote:A lot of peeps are looking forward to a macro program for EQ2. Just being able to target mobs and macro an attack would be an accomplishment. The EQ hacking community as already stated it's objection to any open source EQ2 macro utility on another board. It seems that I am not the only one who doesnt like what a thousand freeloading noobs does to a game with opensource cheat software. :)
-j
I actually agree. I am a macroer and an exploiter (there, I said it), but I will not give out my source to anyone who hasn't proven to me that they can and will contribute, and if I distribute binaries, I'm going to hardcode the offsets into the binary (which is far from impossible to reverse, but if you can reverse-engineer the offsets out of a compiled binary, get off your lazy ass and help with the project!)
I want to put together a core of a few people to make a MacroQuest look-alike for EQ2. With the packet engine detoured, we've got about 10% of the work done. Still remaining:
Offsets
-----------------
* commands entered
* chat output (found!)
* network receive (found!)
* location/heading
* spawn lists (these appear to be in std::map's now, key is spawnid)
Components
------------------
* IPC -- I want to do the macro processing out-of-process; there are a lot of reasons for this, but the biggest one is that if the macro-processor crashes, it won't take EQ2 with it. So, IPC is necessary.
* Stealthing -- I already hide my injected DLL from the loaded module list, but I'd like to have some folks pay close attention to making sure that Sony can't detect our code. I'd also like to find a way to make it hard for others out of the "inner circle" to get ahold of the code/binaries. I'm not sure what the best way to do this is -- as a hacker, I'm well aware that no security is insurmountable, but if you make it inconvenient enough, people won't do it (usually).
Information
-------------------
* Packet encryption --I need someone to reverse engineer the RSA encryption that's on about 1% of the packets still, and to properly inflate the packets that have been deflated (again, about 1%). This will give me 100% of the packets that I receive, not just 98% (like now).
* Packet protocol -- now that we have the packets, we need to start figuring out which opcodes mean what, what the offsets are, etc.
[Note that it's a *lot* better to use packets to trigger events than detoured offsets within the binary, because detours require offsets (that are not always trivial to find) and are inherently vulnerable to code changes. There are a few (very few) events that will require "internal" hooks, but almost everything else can be based on events received in packet form.]
* Class layouts for the important classes (or at least as much as we can get of the SPAWNINFO, ACTORINFO, etc. classes)
Tools
--------------
* Offset finder. I think maybe this is already solved (with IDA scripts? Don't know anything about IDA scripts yet...), but manually re-locating the offsets with each patch is a pain in the ass. I'd like some kind of tool to mostly reautomate rediscovery.
* Macro processor -- with the macro processing out of process, this becomes pretty easy. It can be written in damned near anything -- perl, c#, LISP, whatever -- as long as it can talk the IPC protocol we come up with (which should be as simple as possible; command-response and broadcast, at most; I don't want to deal with passwords and permissions and stuff like that).
* Process explorer -- to find new offsets/values. I've already got a tool that diffs (CRC32's) pages of memory to find static/changing ones. It also searches for known values. I'd like to see someone run with this and flesh it out to simplify finding further offsets.
This is all I can think of right now. I'm sure I left something out. I'm willing to talk to people about helping, and once I've determined that folks can help out, I'll share my code with them only. I don't think I want more than 2-3 other people involved, just so that if we have a leak, we'll know really quickly who to blame.
*whew* Sorry if I come off sounding like a prick, but I don't want to waste a lot of time with people telling me that they know Java or some shit and asking for code. C++/Win32/asm only please! :)