L. Spiro
April 26th, 2006, 00:46
I have been working on a general hacking tool called Memory Hacking Software.
It has a searcher, debugger, disassembler, code injector, and some other things.
The reason for this post is that I am about to add a new feature and before it is done I would like a bit of feedback to ensure its maximum potential is reached.
I am adding a full programming language to the software.
The language itself is stand-alone; if I distribute the library, it can be used in any application to quickly add script support to that application (Windows x86 only).
Currently the primary features of the language are:
Compiled into bytecode like Java: Fast to execute.
90% C syntax: No need to learn a new language.
Structs/Unions: Not classes, but does support structures and unions like C.
Full pointer functionality: Allows &, *, and -> pointer-indirection operators and ultimately allows the same flexibility when working with RAM as C.
Two "interface" layers:
Two-pass compilation: No need to predeclare globals, functions, enums, structs, or unions, in most cases.
Preprocessing: Full preprocessing support, including #include and #pragma, and all preprocessing directives related to macros.
I am at a point now in the language's creation process where the foundation of the language, which is already definite and concrete (the byte-code emition for all expressions and statements) is nearly done, and I can begin working on the upper levels of the language that could be subject to change, should I get new ideas.
That is why I am writing now.
I am at the point where I have begun creating the basic standard API (StrCmp(), StrCat(), MemCpy(), Malloc(), Free(), etc.)
Firstly, are there any specific standard API functions of an odd sort that one would consider valuable to have in the language?
Note that if I miss any functions, those functions can be written in the language itself anyway, but I am looking at ease in use, trying to create a full API.
I now need to explain my intention for interface layer 2.
My intent for this layer, when used with Memory Hacking Software, is to allow the user to declare variables and functions inside the target process.
For example:
This way you can manipulate the RAM of the target process as if it is local in your own code.
The read/write operations on g_dwHealth will be redirected via interface layer 2 to read/write the value in the target process, outside of Memory Hacking Software.
This is a new feature in programming and I hope to make the most of it, which is the reason I am posting now.
The second part of layer 2 is declaring functions in the target process.
This would redirect the code execution to the actual code in the target process, then return the result back to your local script.
Which means it becomes easy to call functions in the target process and work with them.
For example:
As you can see, there is a lot of potential with this type of system, and I am hoping to maximize that.
I would like to know of any ideas for the API set, and if there are any ideas for extra features for the language such as this one.
Right now I am just at that point where the next things I code make the language final, so before I start on it I need to get all my ideas together.
If there are any ideas you may have for situations where the language would be able to help with any other types of hacking/debugging/etc., please provide your input.
Thank you.
L. Spiro
It has a searcher, debugger, disassembler, code injector, and some other things.
The reason for this post is that I am about to add a new feature and before it is done I would like a bit of feedback to ensure its maximum potential is reached.
I am adding a full programming language to the software.
The language itself is stand-alone; if I distribute the library, it can be used in any application to quickly add script support to that application (Windows x86 only).
Currently the primary features of the language are:
Compiled into bytecode like Java: Fast to execute.
90% C syntax: No need to learn a new language.
Structs/Unions: Not classes, but does support structures and unions like C.
Full pointer functionality: Allows &, *, and -> pointer-indirection operators and ultimately allows the same flexibility when working with RAM as C.
Two "interface" layers:
The base layer allows linking the language code to actual C/C++ functions, which means the language can call your custom functions written in a DLL.
The second layer is an "external" interface that allows the application to control I/0 flow and even code-execution flow. I will explain the intended purpose for this later.
Two-pass compilation: No need to predeclare globals, functions, enums, structs, or unions, in most cases.
Preprocessing: Full preprocessing support, including #include and #pragma, and all preprocessing directives related to macros.
I am at a point now in the language's creation process where the foundation of the language, which is already definite and concrete (the byte-code emition for all expressions and statements) is nearly done, and I can begin working on the upper levels of the language that could be subject to change, should I get new ideas.
That is why I am writing now.
I am at the point where I have begun creating the basic standard API (StrCmp(), StrCat(), MemCpy(), Malloc(), Free(), etc.)
Firstly, are there any specific standard API functions of an odd sort that one would consider valuable to have in the language?
Note that if I miss any functions, those functions can be written in the language itself anyway, but I am looking at ease in use, trying to create a full API.
I now need to explain my intention for interface layer 2.
My intent for this layer, when used with Memory Hacking Software, is to allow the user to declare variables and functions inside the target process.
For example:
Code:
extern DWORD g_dwHealth = { "gamex86.dll", 0x443DC }; // Declare g_dwHealth as a variable in the target process.
g_dwHealth++; // Increase the value in the target process.
This way you can manipulate the RAM of the target process as if it is local in your own code.
The read/write operations on g_dwHealth will be redirected via interface layer 2 to read/write the value in the target process, outside of Memory Hacking Software.
This is a new feature in programming and I hope to make the most of it, which is the reason I am posting now.
The second part of layer 2 is declaring functions in the target process.
Code:
extern __stdcall DWORD RuleWorld( BOOL bMakeHumansIntoPets, DWORD dwNumberOfYourBaseThatAreBelongToUs ) = { "gamex86.dll", 0x463D3 };
This would redirect the code execution to the actual code in the target process, then return the result back to your local script.
Which means it becomes easy to call functions in the target process and work with them.
For example:
Code:
g_dwHealth = RuleWorld( TRUE, 32 ); // Call the function in the target process and assign the return to a value in the target process.
if ( RuleWorld( FALSE, g_dwHealth ) == 90 ) { ; } // Branch based off the return of the function in the target process.
As you can see, there is a lot of potential with this type of system, and I am hoping to maximize that.
I would like to know of any ideas for the API set, and if there are any ideas for extra features for the language such as this one.
Right now I am just at that point where the next things I code make the language final, so before I start on it I need to get all my ideas together.
If there are any ideas you may have for situations where the language would be able to help with any other types of hacking/debugging/etc., please provide your input.
Thank you.
L. Spiro