Register for your free account! | Forgot your password?

Go Back   elitepvpers > MMORPGs > Nostale
You last visited: Today at 19:17

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



NosHook - Direct3D Hook / Plugins / Addons

Discussion on NosHook - Direct3D Hook / Plugins / Addons within the Nostale forum part of the MMORPGs category.

Reply
 
Old   #1
 
atom0s's Avatar
 
elite*gold: 0
Join Date: May 2013
Posts: 175
Received Thanks: 123
NosHook - Direct3D Hook / Plugins / Addons

NosHook
Direct3D Hook / Plugins / Addons

What is it?

NosHook is a third-party injected hook that allows users to enhance their gameplay in various ways. NosHook wraps the games Direct3D engine allowing for custom rendering of various things as well as exposes a feature rich SDK to plugins and addons.

NosHook includes the ability to:
  • Render custom font objects that are highly customizable.
  • Render full featured GUI windows via ImGui.
  • Read and block packets that are being sent or received.
  • Inject packets in either direction.
  • Write messages to the chat window directly.
NosHook includes the ability for others to write full-featured plugins that have full access to the NosHook SDK to handle various things. NosHook also includes a plugin called 'Addons' that allows users to script plugin-like scripts of code via Lua that have nearly the same abilities as if you were coding in a C/C++ plugin.


Screenshots

Here are some screenshots of things while being in beta:


A simple injector:



Writing directly to the chat log:



Dumping packets to a readable buffer:



ImGui demo window being rendered:



Download

At this time I am still working on NosHook and have not released a beta yet. I am looking to get feedback on things people would want to see included if they are interested in using this.


I am not looking for suggestions like 'make a bot to do 'x'', but rather features that are generically useful to all within something like this. Like the ability to multi-client, the ability to set the resolution to something custom etc.


Interested in hearing any feedback.
atom0s is offline  
Thanks
6 Users
Old 08/02/2016, 23:47   #2
 
elite*gold: 0
Join Date: Jan 2014
Posts: 149
Received Thanks: 8
Well, seems interesting, can you put screenshots on epvpers hosting ? I didn't understood everything but if you release it i will probably
chyrla is offline  
Old 08/03/2016, 02:44   #3
 
atom0s's Avatar
 
elite*gold: 0
Join Date: May 2013
Posts: 175
Received Thanks: 123
Quote:
Originally Posted by chyrla View Post
Well, seems interesting, can you put screenshots on epvpers hosting ? I didn't understood everything but if you release it i will probably
Sure:

Injector:


Chat Log Writting:


Dumping Packets:


ImGui Demo:


Progress Update
  • Added in-game console to interact with NosHook.
  • Added text scripts to execute commands easily.
  • Added multi-client support to allow multiple instances of Nostale to run at once.
  • Added prevention of the splash screen from showing.


The console looks like:



Commands are handled by input and start with / such as:
/exec Default.txt
atom0s is offline  
Old 08/03/2016, 09:15   #4
 
~Teiko~'s Avatar
 
elite*gold: 0
Join Date: Apr 2015
Posts: 446
Received Thanks: 149
Looks really awesome
~Teiko~ is offline  
Old 08/03/2016, 11:03   #5

 
Blowa's Avatar
 
elite*gold: 98
Join Date: Jan 2010
Posts: 631
Received Thanks: 1,726
Well done, i had to work once with Imgui, it's a pretty cool UI Lib

Hope we will be able to do some interesting things.
(I wanted to work on my proper hook but didn't have the time to learn that)

Anyway, thanks for that D3D hook
Blowa is offline  
Old 08/03/2016, 23:20   #6
 
atom0s's Avatar
 
elite*gold: 0
Join Date: May 2013
Posts: 175
Received Thanks: 123
Thanks for the feedback guys.

Progress Update (8/3/2016)
  • Implemented a handful of console commands.
  • Implemented keybinds so you can execute commands on the fly.
  • Finished up the beta plugin SDK for others to create plugins.
Next up I am working on the addons plugin for allowing Lua scripting then I think this will be ready for public testing.



If there is anything else before I push a beta that people are interested in, let me know.
atom0s is offline  
Old 08/04/2016, 12:16   #7

 
Blowa's Avatar
 
elite*gold: 98
Join Date: Jan 2010
Posts: 631
Received Thanks: 1,726
Quote:
Originally Posted by atom0s View Post
Thanks for the feedback guys.

Progress Update (8/3/2016)
  • Implemented a handful of console commands.
  • Implemented keybinds so you can execute commands on the fly.
  • Finished up the beta plugin SDK for others to create plugins.
Next up I am working on the addons plugin for allowing Lua scripting then I think this will be ready for public testing.



If there is anything else before I push a beta that people are interested in, let me know.
Just got a question, when you will release it, how will you handle "features request" ?
Actually It's a little blur about how people will be able to implement features through the SDK, could you explain a bit ?
Will there be an "example plugin" ?
What is actually possible with the console ?

Don't know if i'm all clear with those questions, just pm or ask here if I need to be more precise.
Thanks for your work, very excited about your project
Blowa is offline  
Old 08/04/2016, 22:22   #8
 
atom0s's Avatar
 
elite*gold: 0
Join Date: May 2013
Posts: 175
Received Thanks: 123
Feature requests will be handled by judging if the feature fits in the hook itself, or should be done as a plugin/addon. If it is not something that fits in the hook itself I don't want to put it in the main hook code. The idea is to keep the hook itself lightweight and avoid features that have the potential of breaking between game updates.

The SDK allows people to code plugins that can interact with my hook directly as well as directly access the game memory. My hook has several callbacks that every plugin can implement as well to handle various things such as packets and console commands.


For example, if you want your plugin to handle a console command you could implement the following:

Code:
bool YourPluginClass::HandleCommand(const char* command)
{
    // Obtain the command arguments..
    std::vector<std::string> args;
    auto count = Atomic::Commands::GetCommandArgs(command, &args);


    // Handle the hello command..
    HANDLECOMMAND("/hello")
    {
        // Print a message to the console..
        this->m_HookCore->GetConsole()->Write(D3DCOLOR_ARGB(255, 0, 255, 0), "Hello world!");
        return true;
    }
    
    return false;
}
Plugins can also access the packet flow including block packets from being sent or received by the client:
Code:
bool YourPluginClass::HandleOutgoingPacket(const char* packet, bool blocked)
{
    // If something else blocked the packet already, just ignore it..
    if (blocked)
        return false;
        
    // Block outgoing /say packets from happening..
    if (strncmp(packet, "/say ", 5) == 0)
        return true;
        
    // Returning false here allows the plugin to continue..
    return false;
}
For those that are not familiar with C/C++, that is where addons come in. You can also script addons in Lua that have the same features/access as plugins do to the hook. For example, doing the same to things above:
Code:
----------------------------------------------------------------------------------------------------
-- func: command
-- desc: Event called when a console command has been entered.
----------------------------------------------------------------------------------------------------
hook.register_event('command', function(cmd)
    -- Parse the command for arguments..
    local args = cmd:GetArgs();
    
    -- Ensure this is the hello command..
    if (args[1] ~= "/hello") then
        return false;
    end
    
    HookCore:GetConsole():Write(0xFF00FF00, 'Hello world!');
    return true;
end);


----------------------------------------------------------------------------------------------------
-- func: outgoing_packet
-- desc: Event called when an outgoing packet is being handled. (Client -> Server)
----------------------------------------------------------------------------------------------------
hook.register_event('outgoing_packet', function(packet, blocked)
    if (blocked == true) then
        return false;
    end
    
    if (packet:startswith('/say ')) then
        return true;
    end
    
    return false;
end);
I will be including an example plugin as well as an example addon in the release package showing how to do both.

Since I can post more freely on my own site as well as have the images show directly, I will post status updates more frequently over there. You can find the development thread on my site here:
Code:
http://atom0s.com/forums/viewtopic.php?f=21&t=128

It will also be released over there along with updates posted there etc.


I will still post info to this thread though as development goes and will make a new thread once a full release is ready.


Right now I'm messing with an auto-login feature that does not do crappy things like SendInput/SendKeys to do things. Instead, I'm directly calling the game functions to handle the login process. Sadly they coded things a bit wonky so it's a little rough going and no promises that it will make it in the release.
atom0s is offline  
Thanks
2 Users
Old 08/05/2016, 00:10   #9

 
Blowa's Avatar
 
elite*gold: 98
Join Date: Jan 2010
Posts: 631
Received Thanks: 1,726
Nice work, I prefer C/C++ than LUA :3
Blowa is offline  
Old 08/06/2016, 00:43   #10
 
atom0s's Avatar
 
elite*gold: 0
Join Date: May 2013
Posts: 175
Received Thanks: 123
Plugin interface is done and working today. I have the Addons plugin fully done and working as well along with an example plugin and example addon written up demonstrating some basics. Tonight I spent some free time cleaning up the code, going through things in a minor code review to ensure everything is cooperating nicely and working as expected. Logging has been adjusted a bit to work better. Tonights change log so far:


Part 1
  • Changed character format to char* on chat manager calls.
  • Added Writef to ChatManager for formatted message usage.
  • Renamed ConfigurationManager Load override to LoadEx for Lua bindings.
  • Implemented key binding.
  • Added Console support to SDK.
  • Added keybind support to SDK.
  • Added GetGameInstallPath to IHookManager interface.
  • Renamed plugin base to NosHookPlugin.
  • Added HandleKeyboard and HandleMouse to plugin interface.
  • Added console output to the plugin manager.
  • Implemented Addons plugin.
  • Implemented example plugin.
  • Added more logging to some classes.
  • Fixed logging engine not logging to files.
  • Fixed logging engine not logging full queue when game was unloaded.
  • Reordered some internal class initialization to prevent pointer bugs.
  • General Code Cleanup

Part 2
  • Cleanup of console output from addons.
  • Cleanup of console output from plugins.
  • Fixed typo in /echo console command.
  • Removed some stale code from another project.
  • Added some more logging to the plugin manager.
  • Implemented default text script execution on load. (/Scripts/Default.txt will execute when the game is loaded allowing you to auto-load addons/plugins as well as other commands to configure things to your needs.)

Part 3
  • Some more code cleanup.
  • Implemented configurations for some basic stuff.
  • Discovered a bug/issue that can be avoided but is kind of annoying.

Known Issues
- Nostale does not call Reset on the device to resize it. Instead, they completely destroy the device and recreate it. This causes NosHook to reload everything due to how it works. As long as you stick to one resolution you will never see any issues. For those that swap resolutions often, it may become annoying.

Some more updates this morning, I should hopefully have a beta package ready soon.

  • Added new documentation.
  • Added some more Lua bindings for addons.
  • Renamed a few bindings for addons.
  • Adjusted a default config value.
atom0s is offline  
Thanks
1 User
Old 08/06/2016, 01:10   #11


 
Liihes's Avatar
 
elite*gold: 0
Join Date: Dec 2012
Posts: 2,728
Received Thanks: 934
Its exciting to see your effort for this, thanks for that
Liihes is offline  
Old 08/06/2016, 02:08   #12
 
atom0s's Avatar
 
elite*gold: 0
Join Date: May 2013
Posts: 175
Received Thanks: 123
I have released the beta v1.0.0.0 package of NosHook here:


If a moderator could please close this topic.


All future information will be posted to the new topic in the release section.
atom0s is offline  
Old 08/06/2016, 15:50   #13
 
Uppermost's Avatar
 
elite*gold: 0
Join Date: Feb 2016
Posts: 139
Received Thanks: 191
Thanks to add virustotal link.
Uppermost is offline  
Old 08/06/2016, 22:10   #14
 
atom0s's Avatar
 
elite*gold: 0
Join Date: May 2013
Posts: 175
Received Thanks: 123
Quote:
Originally Posted by Uppermost View Post
Thanks to add virustotal link.
atom0s is offline  
Thanks
1 User
Old 08/07/2016, 18:12   #15
 
Aniwen's Avatar
 
elite*gold: 0
Join Date: Sep 2010
Posts: 46
Received Thanks: 7
Nice work
Aniwen is offline  
Reply


Similar Threads Similar Threads
[SUPPORT-SERVICE] WBB 3.x & 4.x • PLUGINS, TUTORIALS, ADDONS, STYLES UND MEHR!
12/25/2013 - elite*gold Trading - 2 Replies
Servus Community, hiermit eröffne ich meinen offiziellen WBB Support-Service Thread. Da ich mich seit mehr als drei Jahren mit Woltlab beschäftige und jede Menge Erfahrungen, in jede verschiedene Ecke gesammelt habe, biete ich diesen Service euch an. Es geht darum, dass ich euer WBB Forum Supporte, sozusagen die Software, ich gebe euch Tipps, helfe euch bei euren Problemen, schlage euch oder verkaufe euch Plugins, Styles oder auf Bedarf Tutorials. Ihr müsst euch bei mir nur mit der...
[S]CSS Jailserver Plugins/Addons [B]eGold, PayPal, PSC
01/19/2013 - elite*gold Trading - 4 Replies
Jo Servus leutz, habe vor mir einen Root Server zu mieten. Daraus will ich, wie der Titel schon sagt einen Jailbreak Server machen. Da ich aber im Bereich Server für CSS 0 Ahnung habe bräuchte ich Starterhilfe. Diese folgenden Plugins will ich auch noch installieren: - Joinmusik
[12.7] xCrazia's Direct3D Hook v2.8 [Artillery,AutoMedic,AutoAmmo,UnlAmmo,Chams,STW]
07/14/2012 - WarRock Hacks, Bots, Cheats & Exploits - 22 Replies
Here is my newest hack, i have fully recoded the Base for No Crash! :) Video: xCrazia Hack Preview (Artillery,UnlAmmo and more) - YouTube Screen: http://img5.fotos-hochladen.net/uploads/sssssndya zcsq1m.png Download: File-Upload.net - xCrazia-s-Direct3D-Hook-v2.8.rar
Counter-Strike 1.6 Addons/Plugins *Problem*
04/18/2011 - Counter-Strike - 1 Replies
Guten Tag, Ich besitze ein Linux Debian 6 vServer mit Counter Strike 1.6 Dedicated Server. Server startet und restartet mit TekBase Webinterface. Das starten, stoppen und restarten funktioniert alles ohne Probleme. Mein Problem ist das ich Metamod & AMX Mod X auf mein CS 1.6 Server installiert habe und die Addons/Plugins nicht geladen werden, wenn ich in der Konsole "meta list" oder "meta version" eingebe wird da angezeigt "meta list": Currently running plugins: 0 plugins...
CyberRazzer Direct3D Hook :) *Chams/WallHack/WireFrame*
11/12/2010 - WarRock Hacks, Bots, Cheats & Exploits - 57 Replies
http://s5.directupload.net/images/101105/sg3s5rke. png Download: (Unten) VirusScan: Online Virus Scan http://www.elitepvpers.com/forum/images/misc/light box_progress.gif



All times are GMT +2. The time now is 19:17.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.