Home Page
  • February 29, 2024, 08:10:45 am *
  • Welcome, Guest
Please login or register.

Login with username, password and session length
Advanced search  


Official site launch very soon, hurrah!

Author Topic: Ragnarok Packet Sender  (Read 17753 times)


  • Programmer Person
  • Administrator
  • Hero Member
  • *****
  • Posts: 529
    • View Profile
    • Dakusan's Domain
Ragnarok Packet Sender
« on: September 28, 2009, 05:33:17 am »

Description: Reverse engineering project to send custom created packets via a shortcut key in a MMORPG client
Information: This was beyond useful as the server liked to accept anything from the clients even if it wasn’t supposed to be allowed.
Languages: ASM, VB6


  • Programmer Person
  • Administrator
  • Hero Member
  • *****
  • Posts: 529
    • View Profile
    • Dakusan's Domain
Re: Ragnarok Packet Sender
« Reply #1 on: September 28, 2009, 07:27:57 am »

So this forum won't be completely void of user content during its opening, I thought I'd post an email exchange I had last week pertaining to this project. :-)

Orichi on 09/21/09 at 5:08:57 AM -0500
Hi, I'm sorry my English is poor so I use Google translator.

I have long been on the internet looking for "hotkey packet sender".

I found it on your site, but does not work. I would like to ask how to get.
You have written the requirements of "Ragnarok Beta Client". This means that without the "Ragnarok Beta Client" that does not work?
On Sasami forum (http://www.castledragmire.com/ragnarok/downloads.php) I found the BETA client, but it is removed. I think you're Sasami. And I would ask you for help, give me your work packet sender for shortcuts.

Please reply to my email {email removed}
thank you very much

My Reply on 9/21/09 at 7:34AM -0600
The packet sender I made is specifically for a game called "Ragnarok Online", and it was for a very old version (5+ years old), and could only be used inside the game.
 I'm not sure exactly what you are looking for, but for the sounds of it, you want a program that just sends packets by the press of a button. You can't really do this without knowing more about networking and how network connections work. First a network connection has to be made between 2 computers (assuming you are using TCP, which most connections are) and then the program that made the connection communicates with the program that the connection was made to. You would have to send packets through the port that goes between the two programs to do what I think you want, and that is not easy, as the operating system locks the port to the specific program once the connection is made. There are ways, but its tricky.
 Your easiest bet might be to try looking into Winsock Packet editor v.7a, which I have on my site in the programs section (http://www.castledragmire.com/ragnarok/programs.php). With it, you can do realtime editing of packets, so if for example you make a packet go out that you know the format of (for example, sending a specific line of text in a MMORPG), you can have the program alter it to whatever you want. I have not actually tried the packet editing functionality of the program (I only use it for packet monitoring), but it might do what you need.
 I hope this helps.
 Oh, please let me know you received the email ok.

Orichi's reply on 09/21/09 at 11:13AM -0600
Thank you, that you wrote back.

Yes I use WPE pro 0.9 alpha, but there is settings for sending packets when you press the set key. WPE has the perfect property "target program".

I'm trying to solve this problem:

When you do a "ragnarok online" on dual. In one window I Priest, and the second window I Rogue.

In the window "I Priest", Priest pin "to follow" the Rogue. (SHIFT+Right Mouse) Priest then automatically go for the Rogue.

I'll put you on the window with Rogue. (ALT+TAB)
I go to increase the experience and kill monsters.

But if you want to give "boosts" (for example - "Agi up", "Bleassing ",..), I have to switch back to the window with the Priest. (again Alt Tab), but to no avail it resides.

Therefore I'm looking for software that can "target program", but that was set "hotkeys" for sending a packet.

- Seeking program in which one could adjust the transmission packet using keyboard shortcuts:
"Heal" for rogue = 38 04 0A 00 1C 00 07 F4 1E 00 (when sending the packet and squeeze "Num 0")
"Heal" for Priest = 38 04 0A 00 1C 00 41 F3 1E 00 (when sending the packet and squeeze "num 1")

"Blessing" for rogue = 38 04 0A 00 22 00 07 F4 1E 00 (when sending the packet and squeeze "num 2")
"Blessing" for Priest = 38 04 0A 00 22 00 41 F3 1E 00 (when sending the packet and squeeze "num 3")

"Agi Up" for rogue = 38 04 0A 00 1D 00 07 F4 1E 00 (when sending the packet and squeeze "num 4")
"Agi Up" for Priest = 38 04 0A 00 1D 00 41 F3 1E 00 (when sending the packet and squeeze "num 5")

"Kyrie Eleison" for rogue = 38 04 0A 00 49 00 07 F4 1E 00 (when sending the packet and squeeze "num 6")
"Kyrie Eleison" for Priest = 38 04 0A 00 49 00 41 F3 1E 00 (when sending the packet and squeeze "num 7")

"Imposition Manus' for rogue = 38 04 02 00 42 00 07 F4 1E 00 (when sending the packet and squeeze" num 8 ")
"Magnificat" = 38 04 05 00 4A 00 41 F3 1E 00 (when sending the packet and squeeze "Num 9")

smal info = ([skill packet = SS SS SS PP KK PP CH CH CH PP] (ss = ID packet?; PP= space; KK= skill; CH= ID char))

.. or any other packet under arbitrarily adjustable key.

It's my idea, which has no equivalent in the world ragnarok. :) Well, I just took your program "Sasami packet's sender, which is a lot like my idea.

I think that such a program there probably :(

Perhaps you understand what I mean, google translator to translate really broken: D


My Final Reply on 9/21/09 at 5:41PM -0600
Ah, yes, that is what my program did, but unfortunately it was for a very old version of Ragnarok. It might still work with a new version though with some updates if you want to look into it (I have not touched Ragnarok in something like 6 years -- had some pretty large disagreements with the management of the company that was running it then).
 Anywho, the basic way my program worked was I loaded custom assembly code directly into the executable at runtine in the unused space of the executable (areas filled with 0s). I made a function that called the packet sending function with the passed packet when a certain key was pressed, and then had the key press function call my function whenever a key was pressed.
 The Ragnarok executable code base has probably gone under too many iterations for my assembly insertion code to work anymore, but that was the basic premise.
 If you REALLY wanted to try to continue my work, I could release the VB6 Code as open source, but I'd prefer to not deal with cleaning it up unless you were actually going to use it, and you'd have to do assembly hacking.
 Actually, you could do an easy test to see if my code might still work without assembly hacking. Search for the following hex strings in the current Ragnarok executable and see if they are still there.
 "08 25 FF 00 00 00 25 FF 00 00 00 85 C0 74 3B" (I think this is where the key press code was?)
 "D6 C6 45 DA 01 8D 55 D4 52 0F BF 45 D4 50" (Function table?)
 "74 00 72 6D 61 00 67 61"  (End of executable?)
 Unfortunately, this kind of thing takes a lot of patience to do, and can be broken by executable patches/updates :-\.
 An easier way would be to write a global key hook (See my halfkey project at http://www.castledragmire.com/Projects/HalfKey) and see if you cant just have it directly call the winsock sending function in the executable (again, you'd have to find it).