Chad Boyda wrote:
Snowcrash installs a Windows CBT (Computer-Based Training) system hook.
Normally these are used for automating training systems or for accessibility
utilities to help the impaired and disabled use Windows.

The CBT hook causes Windows to load the snowflake.dll into the memory space
of every running process. Once loaded the snowflake.dll detects the current
process name and if does not match "SECONDLIFE.EXE" it removes itself from
memory otherwise it continues to load. Once loaded it rewrites the import
table of the current process in memory, rerouting the memory addresses of
externally linked API library calls that SECONDLIFE.EXE uses through proxy
functions within snowflake.dll.

Currently snowcrash reroutes several functions from WinSock, OpenGL, and
basic system APIs. The WinSock functions are used by Second Life for
networking and by proxying these functions through snowflake.dll we are able
to capture, modify, and/or remove any data transferred between the client
and server. The OpenGL functions are used by the Second Life client for
rendering and can be hooked to modify the way that the client displays the
world, objects, and GUI.

Additionally, snowcrash subclasses the Second Life window frame allowing you
to extend upon it as a standard window class derived from CFrameWindowImpl.
All of these pieces working together essentially give you full control of
how the Second Life client functions and looks. With unrestricted access to
the process's memory space its a nice suite for debugging and extending the
client in the form of plugins.

Back in the World of Warcraft days (before memory space checking was added), internal function calls in the program were hooked and proxied to read function parameters or modify incoming/outgoing data. Is snowcrash setup to do something like this, assuming you had the address of a function call, or would a different approach be needed?

John

_______________________________________________
libsecondlife-dev mailing list
libsecondlife-dev@gna.org
https://mail.gna.org/listinfo/libsecondlife-dev

Reply via email to