Sign in to follow this  
PBNut

Unity Going bald here!

Recommended Posts

PBNut    122
The community here is super! Thus far I've never been made to feel an idiot with my trivial (to you all) problems in anyones responses! Thanks! That being said... Scenario I have a program that contains a function I need to call. I only know the address of this function, but I also know the parameters it needs as well as the datatypes. Now I inject a DLL into this other program that hooks some winsock functions. Which works fine. What i'm trying to do is call the other function from within the injected DLL via an exported procedure. While hammering on this issue, the app I use to inject/uninject my DLL is where I'm calling the exported procedure contained in the injected DLL. Providing 2 parameters. Whats happening is I get: Exception: Memory Access Violation (Program tried to read/wite and invalid memory address) I'm assuming this means my app doesn't have access to the function address in the target program. I thought however since I'm injected into the target program that I (the DLL) was 'part' of the target programs address space. How can I do this? Been working on this for 2 days and am about brain dead... I just need to be able to invoke this function in the target application from my own program. Like all my issues, I'm assuming its something stupidly simple I'm overlooking. Thanks in advance!

Share this post


Link to post
Share on other sites
ZQJ    496
So, your injecting app contains the function to be called but you're trying to call it from the DLL within the target app right? If I've got that much right, then the reason is that the two processes have different address spaces. You've injected the DLL (by the way I don't know how to do that kind of thing...) but not the rest of the program. If you need to inform the injecting app of something you'll have to use IPC (I'm assuming it's not a utility function because then you could just move it into the DLL).

Share this post


Link to post
Share on other sites
LessBread    1415
The title of this thread is lacking. You'd get more help with a title more specific to your question.

What mechanism are you using to inject the dll? If you hooked a window message proc or loop, take note that you can send messages to windows in other processes and use the WM_COPYDATA message to get info back. You won't ever be able to invoke a function in another process from outside of that process. You can, along with the injected dll, insert a message handler into the message proc of the hooked window and with that in place send that window messages and so on.

Share this post


Link to post
Share on other sites
PBNut    122
Ok, I use MadCodeHook to do the injection.

Program1 is a program that I inject into. This program has a function I need to call but have to do so by its pointer since its compiled and I dont have the source.

InjectDll is a DLL that gets injected into Program1. Its in this DLL that I export a procedure that when invoked calls the function in program1.

If you were asking if i'm doing a callback, no. Not for the function in program1.

I'm not sure how I can put in a message handler in the injected DLL. If I place a dialog in the DLL, execution of program1 halts until an event is triggerd in that form/dialog.

I can use IPC but still comes back to allowing the handler and program1 to run simultaneously.

Share this post


Link to post
Share on other sites
LessBread    1415
Quote:
Original post by PBNut
Ok, I use MadCodeHook to do the injection.


I don't know what that means. MadCodeHook? That sounds like something someone else came up with. This might help identify the approach you're using: Three Ways to Inject Your Code into Another Process.

Quote:
Original post by PBNut
Program1 is a program that I inject into. This program has a function I need to call but have to do so by its pointer since its compiled and I dont have the source.

InjectDll is a DLL that gets injected into Program1. Its in this DLL that I export a procedure that when invoked calls the function in program1.


Ok. Let's call the program that instigates the injection Program 2. When Program 2 invokes the function exported by injectdll, it does so in it's own address space, presuming of course that injectdll is also loaded into Program 2.

Quote:
Original post by PBNut
If you were asking if i'm doing a callback, no. Not for the function in program1.


Ok.

Quote:
Original post by PBNut
I'm not sure how I can put in a message handler in the injected DLL. If I place a dialog in the DLL, execution of program1 halts until an event is triggerd in that form/dialog.


The message handler can be inserted as part of the process of hooking a window in the other process. There are a variety of hooks that can be applied, a couple of them intercept messages.

Quote:
Original post by PBNut
I can use IPC but still comes back to allowing the handler and program1 to run simultaneously.


Ok.

Share this post


Link to post
Share on other sites
LessBread    1415
To add a little more to the above, code injection is not the easiest task. My advice is to start with something simple, some sample code that you know works and works well with the compiler that you regularly use. The above link provides code for MSVC. You'll probably have to google to find code that works with other compilers. Work with whichever sample you find until you get it to work for you and so that you understand how it works as well. Understanding how the mechanism works is very important because the next step after that is to adapt it to do what you want it to.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

  • Similar Content

    • By drcrack
      Hey
      I'm developing a game inspired by World of Warcraft PvP
      Key features:
      — It's not an MMORPG, you don't need to level up and gear up your characters
      — Many different rated and casual gamemodes: duels, 2v2 and 3v3 arenas, battlegrounds, deathmatches
      — Built-in voice and matchmaking without a party (if you don't want to push serious rating)
      — Non-targeting combat system
      Sign up for beta here: https://goo.gl/forms/IYSAQtiRXQVY2B192
      Duels:
      3v3 with bots: 
      More videos coming soon!
    • By Affgoo
      About us:
      We are a team of 14 developers developing multiple mid scope games both are over halfway complete. We polish all of our games and focus on quality.


      We are a small team, everyone currently on the team and future teammates must be interested in game development as a whole and not just one role, being a small indie company it is very important that you can wear a few hats and not just one. Everyone on our team is a game dev.

      looking for:
      3d Artist (hand painting a huge plus)
      3d Animator
      entry level Software engineer with reasonable skills in c# / shaders. 

      ^ requirement for all positions: A true love of game development and to be very self motivated.
      We are a very active team, you must be too. 


      If interested or for more information add me on skype: nicholas.boucher4


      Atlas Sentry art style: (art complete)(code complete)
      http://www.slidedb.com/games/atlas-sentry

      Rat n Gat art style: In Devlopment

    • By EvaBalikova
      Main menu in Feudal Alloy. 
      twitter
    • By Jcyshadow97
      Hi guys,i m looking for someone that can work with me on a "top-down" multiplayer fps as 2d and 3d artist.I used photon server and i can take the part of programming.For now i made only the basic gameplay of the game that include shooting,switch weapon and and damage player.If someone can help me please contact me via e mail: 270514974@libero.it.
      I really appreciate your collaboration and hope you have a good day.....
      Thanks for you time to read the post
      At the bottom i attach some screenshot of the current game,i m sorry that i can't attach a video...



    • By Raptor42
      I'm looking to form a new game development team, mostly for training purposes.
      About me:
      I'm a student - Unity C# developer, who worked part-time in this industry for a couple of years already. I've been a lead developer in many "random collab groups" as well as a few companies. I specialize in creating 2D games for Android, but I'm looking forward to trying out new things - especially 3D development.
      Currently, I've got one Android game close to a release so I'd work for this team in my spare time. 
      About the project:
      I've been thinking about creating a simple tycoon-like simulation game for Android (and PC eventually), inspired by the Game Dev Story (initially released by Kairosoft in 1997) https://en.wikipedia.org/wiki/Game_Dev_Story 
      I haven't done much planning though, therefore I'm looking forward to hearing out your ideas.
      Right now, I've only created a test 3D scene using placeholder models and implemented a simple pathfinding system for me to play around with:
      https://i.imgur.com/xAd0l4o.png
      https://i.imgur.com/nHZerOT.png
      I'm looking to work with people who are:
      - willing to take a position of a: 3D modeller/2D artist/Designer
      - not necessarily very experienced, but eager to learn and improve their skills
      - active - check in at least once a day
      If you'd like to apply for a different position which I didn't list here, you are welcome to contact me as well.
      While this project is created mostly for learning purposes, if we ever get to release it and generate any revenue - you will recieve a certain percentage of it.
       
      To Apply:
      Send an email to rk.softwaredev@gmail.com
      Introduce yourself and attach an example of your work (if you have any)
  • Popular Now