Register for your free account! | Forgot your password?

Go Back   elitepvpers > Popular Games > Silkroad Online > SRO Coding Corner
You last visited: Today at 17:32

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

Advertisement



[Guide] Locating Silkroad’s Direct3D Objects

Discussion on [Guide] Locating Silkroad’s Direct3D Objects within the SRO Coding Corner forum part of the Silkroad Online category.

Reply
 
Old 07/10/2009, 10:09   #16
 
elite*gold: 0
Join Date: Jul 2009
Posts: 3
Received Thanks: 0
Hi there,

I am very interested in your knowledge ^^

I am currently working on a personal project which would need to list ingame objects. By object I mean complex objects, like mobs, npcs, players, etc... Not simple Vertex or whatever.

Here is how I'm working:
I chose to make a dll proxy. It seemed easier for me to proceed as such.
I tried different ways to make silkroad load my own dll instead of the system one :
patching the sro_client.exe: failed (I was sure the game at least checks this, I tried anyway, it does)
patching the sro_client memory (launch, suspend, patch, resume): failed (I don't understand what happens, but it seems the game detects the patch and loads the real one instead anyway)
replacing the original d3d9.dll: I'm on windows seven, so failed ^^
so finally I installed a VM with XP on it, so I could replace the original d3d9.dll easilly: success (but slower of course)

so I made a dll proxy for d3d9.dll which is working fine. I clear a rect somewhere and I see it. Cool huh?

Anyway,
I'm a complete beginner on directX. From what I found on the internet, I saw that mostly EndScene will be my friend to display additional info.
But now I need a way to detect game's interesting objects. like "how can I detect this is a Mangyang"?

Can you give me a hand on this? I believe it is possible since I remember an ex co-worker added turning bubbles around mobs (blue bubbles on mobs, and red ones when selected). But I have no contact with him any more.

In short: I'm lost now, can you provide me with something to start with?

Thanks!
epifriend is offline  
Old 07/10/2009, 13:10   #17
 
elite*gold: 20
Join Date: Jul 2007
Posts: 1,617
Received Thanks: 574
Quote:
Originally Posted by epifriend View Post
I am currently working on a personal project which would need to list ingame objects. By object I mean complex objects, like mobs, npcs, players, etc... Not simple Vertex or whatever.
im not sure, but u will find them with reading packages easier than using directx.
recking is offline  
Old 07/10/2009, 14:19   #18
 
elite*gold: 0
Join Date: Jun 2008
Posts: 188
Received Thanks: 106
Quote:
Originally Posted by epifriend View Post
Hi there,

I am very interested in your knowledge ^^

I am currently working on a personal project which would need to list ingame objects. By object I mean complex objects, like mobs, npcs, players, etc... Not simple Vertex or whatever.

Here is how I'm working:
I chose to make a dll proxy. It seemed easier for me to proceed as such.
I tried different ways to make silkroad load my own dll instead of the system one :
patching the sro_client.exe: failed (I was sure the game at least checks this, I tried anyway, it does)
patching the sro_client memory (launch, suspend, patch, resume): failed (I don't understand what happens, but it seems the game detects the patch and loads the real one instead anyway)
replacing the original d3d9.dll: I'm on windows seven, so failed ^^
so finally I installed a VM with XP on it, so I could replace the original d3d9.dll easilly: success (but slower of course)

so I made a dll proxy for d3d9.dll which is working fine. I clear a rect somewhere and I see it. Cool huh?

Anyway,
I'm a complete beginner on directX. From what I found on the internet, I saw that mostly EndScene will be my friend to display additional info.
But now I need a way to detect game's interesting objects. like "how can I detect this is a Mangyang"?

Can you give me a hand on this? I believe it is possible since I remember an ex co-worker added turning bubbles around mobs (blue bubbles on mobs, and red ones when selected). But I have no contact with him any more.

In short: I'm lost now, can you provide me with something to start with?

Thanks!
Try looking for a "Model recognition finder". You would have to get the numvertices for Mangyang and then check if the model being drawn matches the Mangyang. However, this will take an enormous amount of time and you're better off with parsing 0x30D7/0x3417 packets.
maxbot is offline  
Old 07/10/2009, 14:30   #19
 
elite*gold: 0
Join Date: Jul 2009
Posts: 3
Received Thanks: 0
Quote:
Originally Posted by recking View Post
im not sure, but u will find them with reading packages easier than using directx.
I'm sure it is simpler using packets. If I have no other choice I even might do it this way.
But I would prefer not to rely on other tools (I'm talking about nuConnector for instance). I mean, I prefer be the owner the whole chain. And I don't plan on developping myNuConnector

And another point, I intend to have some features like a colored glow (or equivalent) around mobs depending on the level difference between the char and the mob, this kind of stuff. So at one point I'll need to identify all that little people.
If I can't do it using directX only, how can I find the link between a network-object and a list of vertices?

It's more a new challenge for me.

Thanks for your answer anyway, it'll be a solution if I can't do it in my dll only ^^


Quote:
Originally Posted by maxbot View Post
Try looking for a "Model recognition finder". You would have to get the numvertices for Mangyang and then check if the model being drawn matches the Mangyang. However, this will take an enormous amount of time and you're better off with parsing 0x30D7/0x3417 packets.
Said like this, I guess so! But how the guy I told you about could add bubbles around mobs?
There is something I don't get ^^
Thanks
epifriend is offline  
Old 07/11/2009, 11:06   #20
 
elite*gold: 0
Join Date: Jun 2008
Posts: 188
Received Thanks: 106
Quote:
Originally Posted by epifriend View Post
I'm sure it is simpler using packets. If I have no other choice I even might do it this way.
But I would prefer not to rely on other tools (I'm talking about nuConnector for instance). I mean, I prefer be the owner the whole chain. And I don't plan on developping myNuConnector

And another point, I intend to have some features like a colored glow (or equivalent) around mobs depending on the level difference between the char and the mob, this kind of stuff. So at one point I'll need to identify all that little people.
If I can't do it using directX only, how can I find the link between a network-object and a list of vertices?

It's more a new challenge for me.

Thanks for your answer anyway, it'll be a solution if I can't do it in my dll only ^^




Said like this, I guess so! But how the guy I told you about could add bubbles around mobs?
There is something I don't get ^^
Thanks
Once you find the Mangryang or any other monster, you could use either world or screen coordinates to put up your own objects in the game. You can read my guide (Making a Silkroad ingame GUI) on how is adding 2D objects done, altho it's not what you really want.
maxbot is offline  
Old 07/12/2009, 21:49   #21
 
elite*gold: 0
Join Date: Jul 2009
Posts: 3
Received Thanks: 0
Ok thanks, I'll have a look into it. I'm not in a hurry, it's more a challenge for me...
epifriend is offline  
Old 07/13/2009, 02:50   #22

 
elite*gold: 260
Join Date: Aug 2008
Posts: 560
Received Thanks: 3,780
Quote:
Originally Posted by epifriend View Post
I am currently working on a personal project which would need to list ingame objects. By object I mean complex objects, like mobs, npcs, players, etc... Not simple Vertex or whatever.
As mentioned, trying to use the DirectX DLL only would be very impractical for such a task and would not get you anything useful. Instead you must find the entity processing function in the client and hook it. Finding it is not too hard, just trace through the group spawn and individual spawn packet functions!

From there, you can store the ID of the entity. After you have a list of IDs, you then have to find the function that will return the object pointer based on the entity ID. This operation is more or less a std::map access. Once you have the object pointer, you can get all of the entities data from type, position, and anything else useful that's needed in the game.

That is the method I am using right now to be able to get all entities around the player as well as their real-time positions. It is very useful and works well. You also need to hook the entity remove function to know when to remove entity IDs as well! If you don't you'll crash the client trying to get the object pointer of an entity that does not exist!
pushedx is offline  
Old 07/13/2009, 15:53   #23
 
elite*gold: 0
Join Date: Jun 2008
Posts: 188
Received Thanks: 106
I wish I know reversing as you do :|

Wouldn't have to bother with spawn packets, altho I almost got them parsed thanks to Bot90210.

I'm going to take a look into this entity processing function, I may actually find something

Totally OT, but seems debugging can be enabled in SRO. If I'd just knew where is stuff outputed.

Code:
006A6A28  |. /74 14         JE SHORT sro_clie.006A6A3E
006A6A2A  |. |68 E845C300   PUSH sro_clie.00C345E8                                  ;  UNICODE "DebugMsg On"
006A6A2F  |. |68 00010000   PUSH 100
006A6A34  |. |8D8C24 C40200>LEA ECX,DWORD PTR SS:[ESP+2C4]
006A6A3B  |. |51            PUSH ECX
006A6A3C  |. |EB 12         JMP SHORT sro_clie.006A6A50
006A6A3E  |> \68 CC45C300   PUSH sro_clie.00C345CC                                  ;  UNICODE "DebugMsg Off"
006A6A43  |.  68 00010000   PUSH 100
maxbot is offline  
Old 09/25/2009, 17:53   #24
 
Vegetta91's Avatar
 
elite*gold: 0
Join Date: Nov 2007
Posts: 45
Received Thanks: 5
What other marker can i use instead of nop's? I tried the max allowed commands by olly witch is 8 consecutive nop's but it still finds over 100 matches. Could I use some JMP's? Thnx for the tutorials
Vegetta91 is offline  
Old 09/25/2009, 18:20   #25
 
elite*gold: 0
Join Date: Dec 2007
Posts: 242
Received Thanks: 49
Quote:
Originally Posted by Vegetta91 View Post
What other marker can i use instead of nop's? I tried the max allowed commands by olly witch is 8 consecutive nop's but it still finds over 100 matches. Could I use some JMP's? Thnx for the tutorials
NOP = No OPeration. JMP = JuMP.
TheSpy is offline  
Old 09/25/2009, 20:07   #26
 
Vegetta91's Avatar
 
elite*gold: 0
Join Date: Nov 2007
Posts: 45
Received Thanks: 5
I know what they mean just don't know what they do... im n00b at reverse engeneering
Vegetta91 is offline  
Old 05/25/2010, 17:04   #27
 
elite*gold: 0
Join Date: Apr 2006
Posts: 164
Received Thanks: 210
It's generally easier to codecave or hook Direct3DCreateX api. From there, you can either do vtbl hooking (they're COM objects, purely virtual, every function is, as in the documentation, in the vtable). You can also just use it to poison the game's D3D object pointers to your own class wrapper around the COM objects.

I find these methods more general and simpler. You don't have to 'find' anything, you just hook it anyway .



Oh ****, schlurmann beat me to it :|.. by a lot :|..
jM3 is offline  
Reply


Similar Threads Similar Threads
Need help locating dmg modifiers?
05/13/2010 - Mabinogi - 13 Replies
So, last night, around this time, I had the brilliant idea to wase my free time by modding mabinogi so I could smash for, not 500%, but 500000% damage ("Desert dragon slayer with a single blow", anyone?) As well as mod the critical and maybe the lucky finish rates. However, that was almost 24 hours ago. I havn't slept in that time, barely eaten, my eyes are dry, I have a throbbing, pounding head... ect, and all I have to show for it is.... I have nothing to show for it. I cannot, for the life...
Locating item names
09/28/2009 - Diablo 2 - 3 Replies
Hey guys i'm just wondering where to find the item names. I mean where are they stored etc etc. Any help will be useful :)
Locating for edits
01/09/2008 - CO2 Weapon, Armor, Effects & Interface edits - 4 Replies
I want to start editing I am pretty good at photoshop but been browsing for a while and I cant seem to locate some of the edits u guys made. Like sword, blade, etc.. c3/texture don't have the sword or some that I am looking for. Can someone be nice and point out the folders. thanks!!
(Request)Locating Pker's
05/12/2006 - Conquer Online 2 - 8 Replies
Hello I am here to see if you have a program that can locate pker that will so in the map.. For example You know in team when u put the mouse over the players face it will show u where they r in the team. Yea something like that.... I remeber that there was something like that In CO 1 but i was wounderin if it is possible to make one for CO2 if there is let me know where to find it. Thank You



All times are GMT +1. The time now is 17:32.


Powered by vBulletin®
Copyright ©2000 - 2026, 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 ©2026 elitepvpers All Rights Reserved.