I noticed some people have been profiting from the recent NXT leaks. Since I really hate this kind of behavior I'll be releasing tools and tutorials over the next few weeks that should help out anyone trying to get going with NXT. I might possibly write an open-source framework from scratch that has NXT support too.
What does it do
This tool performs the following operations automatically:
- Creates classes and structures (and sets up some fields): jag::Isaac, jag::Client, jag::HeapInterface, jag::Packet, jag::ConnectionManager.
- Renames certain methods that are related to structures in the aforementioned classes.
- Renames all packet decoders (ServerProt), and applies a comment header.
- Prints the packet opcodes, sizes, and names to the console.
- Updated Support printing ServerProt opcode->name and ServerProt opcode->size mapping in Kotlin code style
- Updated Support detecting ClientProt opcodes+sizes (NOT NAMES), and printing ClientProt opcode->size mapping in Kotlin code style
What does it not do
- Give you source code that works
- Spoonfeed you all of NXT
Latest release tested on (this list might change in the future)
- win64 916 ghidra 9.1.1 and 9.2.3
- win64 918 ghidra 9.1.1 and 9.2.3
Note For Ghidra 9.2.3 read the note at the bottom of this post. Thanks to Woahscam for testing with Ghidra 9.2.3!
If your Ghidra project is not fresh, please make a backup before running this script. This script might override some of the changes you have made.
- Step 1
Create a new Ghidra project and import a recent win64 client. Older versions (<913?) may not work. Run the default analysis and wait for it to complete.
- Step 2
Open the scripts editor by clicking the following icon:
- Step 3
Create a new script by clicking the following icon:
In the pop-up dialogue, select "java" script. Click OK. Name the script "RS3NXTRefactorer.java". Click OK.
- Step 4
- Open the scripts editor by clicking the icon marked with a 1
- Paste your pasta in the window on the right marked with a 2. If you couldn't figure this step out please just close this thread - let's be honest, you're never going to get NXT to work.
- Select the script on the left pane marked with a 3. Basically, the script you just created.
- Execute the script. Hang back and wait for the tool to do its magic. This should take roughly 10-30 seconds. To execute the script press the button marked with a 4.
Enjoy your somewhat refactored client! This should save you many many hours.
Yes, the download is hidden at the bottom! You should read usage instructions first anyway.
I would like to kindly ask everyone that is interested in using this tool, that uses this tool, or that modifies/forks this tool, to star the repo and to share at least some of their finds with the rest of this community. It's a shame that it took 4 years and a leak to get NXT out there. It's unhealthy for the community as a whole to only take and never give.
That being said, you can find the Github repository containing the script here. Note that opening this in a code editor won't yield many useful results, since I threw the script in there without a build system.
[Only registered and activated users can see links. ]
Yes the code is terrible, I wrote it late at night last week, deal with it.
I've heard that on some newer Ghidra versions there is an error on line 874. If the script doesn't execute you could try replacing the insn.getRegisters().length == 0 with insn.getRegisters().size() == 0.
- This tool was entirely made by me. I did not receive help or information from anyone to create this tool.
- woahscam for testing this tool on Ghidra 9.2.3.
- This god-tier thread and all its contributors: [Only registered and activated users can see links. ].
Last edited by techdaan; 05-01-2021 at 06:30 PM. Reason: Updated the script
Works like a charm, good job.
Excellent work. Excited to see this out there. Will help out a ton for people that are interested in developing NXT.
Can confirm this works as intended, amazing to see you release another NXT thread. Can't wait for the next one.
I love your mentality Daan, screw those who only benefit.
Thank you for the share.
I just pushed an update to the Github repository, it has been tested on 916 and 918.
The following features have been added:
- Support printing ServerProt opcode->size and opcode->name mappings in Kotlin map style
- Support finding ClientProt and printing the opcode->size mappings in Kotlin map style
I doubt finding ClientProt names automatically like ServerProt is (easily?) possible. I might look into this later
You can x-ref these structures to find the packet encoders.
Amazing work u did there. I think I'm going to start archiving the binaries, cache and provide a refactored client using this. Thank you very much for sharing.
I have some nice features planned for my framework, but one base idea is that all the tooling required is bundled in the framework. That way there's no external dependencies other than Ghidra to get your own NXT RSPS going.
|« Feather 718/742 - Release | Matrix 592/OSRS »|
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)