[MPGH]Dave84311 (12-10-2015),Hunter (12-22-2015),maestro1994 (12-01-2015),pean153 (12-16-2015),stephD (02-01-2016)
What is Yami Framework?
Yami framework is a object oriented library with Form system, UI system and lots of other Utils used for file management, crypting etc!
Features:
Crypter:
The crypter contains functions to Encrypt or Decrypt files with cryptography keys, you can Encrypt/Decrypt a file into memory, you can decrypt a encrypted file and save it as another file (e.g encrypted.enc, decrypt and save as decrypted.exe) And vice versa!
Example:
Code:Shared<YCrypter> pCrypter = make_shared<YCrypter>(); cryptograpy_key key("MPGH"); // Cryptograpy key pCrypter->EncryptFile("exe.exe", "encrypted.data", key); // Encrypt the file // Decrypt encrypted data to be able to use the exe like normal again (or dll or whatever you stored) pCrypter->DecryptFile("encrypted.data", "newexe.exe", key); // Remember that the key must always be the same, you cannot encrypt a file with key 'MPGH' and then try to decrypt it with 'mpgh'
EventHandler:
The EventHandler is used to Dispatch events, All UI Systems and the Window class uses the Event system to dispath certain events for key presses, mouse moves or other general events. (Use += operator assign a events function)
To use the eventhandler with member functions use a lamda, to use member functions put 'this' in the capture-list, to use local definitions pass '&' to the capture-list:
Code:// Member function event += [this](arguments) { memberfunction(arguments); }; // Local function .... definiton of 'object' .... event += [&](arguments) { object->function(arguments); };
FileManagement:
The file management is used to check if files exists, get all files in a certain directory, there is also a config system avaiable that can get/set variables in a file.
Managed: (Big)
The managed section of the library contains alot of the memory & pointer managing.
Thread system is used to start threads, with this Thread system you can start threads for Member functions, now the syntax is a bit ugly because of how C++ Member Function Pointers work and some other retarded shit kek.
Example of Thread System:
The Pointer system is based on Shared pointers, this is to manage an object much better, you do not need to worry about destroying the object, when Shared's Destructor is called it will delete the pointer it manages, but only if it is the original owner!Code:TestClass class; // Object Shared<YThread> thread = make_shared<YThread>(); // Shared pointer (You'll learn what Shared pointer is in a sec) thread->Start(&class, &TestClass::FunctionYouWantToBeThread, argumentsused);
When creating a Shared pointer you must use make_shared, you cannot initalize a Shared pointer with an already created pointer, you must use make_shared to create the pointer, however you can copy a Shared pointer.
Example:
Memory part of Managed.Code:Shared<TestClass> object = make_shared<TestClass>(); // object is the original owner of this pointer now, only object can destroy it Shared<TestClass> shared_ptr(object); // shared_ptr can also access the object now std::cout << "object is " << (object.is_owner() ? "Owner" : "Brother") << std::endl; // Outputs Owner std::cout << "shared_ptr is " << (shared_ptr.is_owner() ? "Owner" : "Brother") << std::endl; // Outputs Brother // When object goes out of scope the managed pointer will be destroyed and all memory de-allocated!
There are 2 iterators avaiable, Prcocess iterators and Module iterators, these can be used to iterate through all processes or all modules inside a process.
Example:
The Memory class is used for Reading & Writing memory, you must attach to a process (using Attach func) before you can Read/Write from a process, if the Attach fails the Read/Write call will also fail (probably give you deref error to).Code:YProcessIterator pIter; while(++pIter) // ++ operator has been overloaded, every time you ++ the iterator it goes to the next process (it returns true if there is a next process) { if (pIter->name == "csgo.exe") // Name is the name of the process { YModuleIterator mIter(pIter->pID); // Module iterator must be constructed with a process ID while(++mIter) // Same as proc iter { if (mIter->name == "client.dll") // If name etc etc } } }
Example:
Code:Shared<YMemory> pMemory = make_shared<YMemory>(); // Managed object if (pMemory->Attach("csgo.exe")) { YModule client; pMemory->Module("client.dll", &client); pMemory->Read<int>(someaddr); }
UI:
The UI System can be used to create advanced User interfaces with tabs.
Example of what is currently existent:
To show an example of UI code would be a bit to much to be able show, and that is why you should use "Project Generator.exe" to generate a sample project showcasing A form class with a few UI elements.
Window
This actually contains more than just the window, the name will be reconsidered at a later date.
The Renderer contains all the functions required to draw on the screen.
The window creates a WINAPI Window, to create a renderer you need a window to draw on.
The texture class creates texture from a file (In memory or saved)
Yami Application:
This is the main framework, here you have your Application, Form and Timer class.
The Application class is used to manage your application, but atm it is still missing alot, however you need it to run a form, to create the application class you need to run the Start function with correct parameters.
Example:
Code:int main(int argC, char* argV[) { Shared<YApplication> app = Start(argC, argV); // Start application return app->Exit(); // Exit application }
Known Bugs
- Currently when the window is opened the params are wrong, you must resize the window a tiny bit and you'll be able to click everything perfectly! (Trying to figure this one out)
- Some classes have yet to be updated to match the managed part of the framework (e.g the UI Controls)
How to install:
- Extract the contents of the .rar
- Open "Project Generator.exe"
- Type: gen newProject
- There should now be a newProject folder where "Project Generator" was located, inisde this folder you should find a Visual studio project with a main.cpp setup!
- Next you need to setup the project includes & library includes.
- Change the includes in main.cpp to fit how you included the Includes file.
Video Tutorial: (topkek music m8s)
Virusscan
Please report any bugs to MPGH.Yamiez on skype!
Last edited by Yemiez; 12-21-2015 at 02:38 PM.
[MPGH]Dave84311 (12-10-2015),Hunter (12-22-2015),maestro1994 (12-01-2015),pean153 (12-16-2015),stephD (02-01-2016)
Approved .
THE EYE OF AN ADMINISTRATOR IS UPON YOU. ANY WRONG YOU DO IM GONNA SEE, WHEN YOU'RE ON MPGH, LOOK BEHIND YOU, 'CAUSE THATS WHERE IM GONNA BE
"First they ignore you. Then they laugh at you. Then they fight you. Then you lose.” - Dave84311
HAVING VIRTUAL DETOX
Yemiez (11-30-2015)
Very nice, reminds me of Qt a bit.
Yemiez (11-30-2015)
Yemiez (12-04-2015)