Introduction - Qiu233/QTRHacker GitHub Wiki

Here is a simple introduction to this hack.

Structure

QTRHacker is made up of 3 main levels:

  • QHackLib and QHackCLR: the lowest level to provide BASIC operations on games on .net framework.
  • QTRHacker.Functions: the library to perform specialized hack operations on Terraria, contains most hack logic.
  • QTRHacker: UI implementation, contains little hack logic.

QHackLib

QHackLib is designed to perform low level actions such as inline-hook, aobscan and so on.
QHackCLR is a part of QHackLib and used to fetch CLR information from a process. It's a replacement of clrMD. There's no need to look into QHackCLR if you don't have any knowledge of CLR. QHackLib.CLRHelper is a lightweight wrapper for QHackCLR that should be enough in most cases.

QHackLib.HackObject represents a ref object or boxed value in CLR and QHackLib.HackValue represents a unboxed value. Both of them inherits QHackLib.Entity and in turns inherits DynamicObject.
Unlike QHackCLR.Common.ClrObject and QHackCLR.Common.ClrValue, these two wrappers provide syntax convenience to field and array access. You just need to convert a HackObject to dynamic like: dynamic obj = hackObject; then you can access its field like: int v = obj.field;. The type to be converted to could be inferred by C# compiler.

QHackLib.QHackContext provide context for a .netfx process.

TO BE CONTINUE