hello and welcome to mpgh. this is the correct section and you dont need to worry.
let me answer your questions:
-crossfire mainly depends on several files:
crossfire.exe : the mail executable file, it contains mainly, the engine code (lithtech jupiter), and xtrap initialization code.
engine.rez : used by the game engine for some reason.
cshell.dll : contains all game client code, is loaded by crossfire.exe after xtrap and engine initialization.
object.dll : contains server side code, is loaded on demand by crossfire.exe .
-you may use access the game client using two different techniques :
external manipulation : using an external executable, use ReadProcessMemory / WriteProcessMemory to manipulate game memory
and enable hack features. but since xtrap blocks all external access to the game process, this method is not going to work.
internal manipulation : probably the best method, works by injecting a dll into the game process, and starting
a thread from its entry point,
the thread will have a direct memory access so no Read/WriteProcessMemory apis needed (unsafe code might come in handy here ).
but unfortunately, C# and other managed code based dlls dont have entry points, there is a work around for this,
you might want to check this.
-i have no much information about xtrap. sorry. but you won't need to bypass it anyway. it wont detect the C# code running within CLR.
-i have no idea what 'AUX server' means, but i will assume you mean the game server.
you may split packets sent or received by the client to two parts :
TCP packets : used anywhere except the game room, for example, entering a channel, buying a weapon, chatting with friends, etc.
they flow decrypted in both directions, and have some easy structure.
they are managed by the game client itself, the packets flowing in direction C->S pass through a function called CClientLib::Send,
while those flowing in direction S->C are received in main window produce via a special message code, for more information,
check this.
here is an example psedocode of how to send fake data to the server :
Code:
//assume that pPacket and pClientLib are valid pointers
pClientLib->Send(pPacket);
UDP packets : used in game room only. those are managed mainly by the engine, and packed as a sort of "messages",
packets flowing in direction C->S pass through ILTClient::SendToServer which is implemented in engine code,
but those packets have an extra checksum, to prevent unwanted manipulation (or at least game developers hope so)
packets flowing in direction S->S are received through IClientShell::OnMessage which is implemented in client code,
there is no extra checks in these, and they are easy to manipulate.
if you are want to manipulate UDP packets, you will have to acquire a copy of the engine, and implement
the message functions to C#.
google "NOLF2 SDK" if you want to download it.
here is another psedocode:
Code:
//send a message to the server
pLTClient->SendToServer(pMsg);
//send a message to the client
pCShell->OnMessage(pMsg);
of course, the two examples above depend on having a dll injected to your process, if you are going to use
external executable, you will have to implement a proxy server.
-no, most hacks mainly depend on manipulating game memory, not packets and there should be no problem with it,
but if you still want to fake packets, you will have to figure out how the checksum part work.
here is another example of how to do a basic hack (sorry C++ not C#!):
Code:
//internal modification
pWeapon->AmmoDamage = 999.;
//external modification
WriteProcessMemory(pProcess, (VOID*)(pAddress + offsetof(struct WEAPONINFO, AmmoDamage)), &fValue, sizeof(float), &dwWritten);
any more questions? feel free to ask me.
regards.