View previous topic :: View next topic |
Author |
Message |
chris421
Joined: 07 Apr 2005 Posts: 53
|
Posted: Fri Jun 09, 2006 18:20 Post subject: Alternatives to MadCHook.dll |
|
|
Doesn't sound like much is being done at madshi to update to x64 support. Could the dependency on this third-party dll be removed / replaced? Maybe you guys can try emailing him.
http://www.madshi.net/madCodeHookDescription.htm
This is pretty devastating for all potentially new NWNX users come NWN2. |
|
Back to top |
|
|
Papillon x-man
Joined: 28 Dec 2004 Posts: 1060 Location: Germany
|
Posted: Tue Jun 13, 2006 10:32 Post subject: |
|
|
Uhm, could you please explain why this would be devastating ? There will not be a NWN2-64 either... _________________ Papillon |
|
Back to top |
|
|
NoMercy
Joined: 03 Jan 2005 Posts: 123 Location: UK
|
Posted: Wed Jun 14, 2006 2:09 Post subject: |
|
|
With pretty much all new procesors which arn't 'budget' supporting 64bit (AMD64/EM64T), and Vista on the horizon, I'd never rule out the possibility that the'll be a 64 bit version of NWN2.
But that said, the'll always be a version which will run on older machines and operating systems. at best it's a buffering period, at worst it's a complete cop-out excuse :) |
|
Back to top |
|
|
chris421
Joined: 07 Apr 2005 Posts: 53
|
Posted: Wed Jun 14, 2006 5:29 Post subject: |
|
|
Madshi doesn't, and has made no commitment to, work under x64.
Neverwinter Nights 2, while not being a x64 app itself, will likely bring droves of new players and hosters to the community, the bulk of whom will probably have never heard of NWNX.
After they realize the default NWN2 database is slow/impractical/unmanageable and stumble onto NWNX, the incompatibility of their OSes (with MadCHook) may be enough to discourage the NWN2 PW community before it even gets started.
I currently run 32-bit R2, SQL2K5 SP1, IIS, a large RAMDisk, NWNX-ODBC, and nwserver 1.67 on a dual-core 64-bit cpu with 4gb of ram. I plan to go quad-core with 8gb of ram sometime early 2007. So x64 is not just a buzzword for me; I have a legitimate need beyond 32-bit OS memory constraints.
If you can remove a dependency on Madshi's release schedule and just compile your own flavor(s) of his dll, you should probably do so. He offers the Delphi source, and the C++ if you ask nicely. |
|
Back to top |
|
|
Papillon x-man
Joined: 28 Dec 2004 Posts: 1060 Location: Germany
|
Posted: Wed Jun 14, 2006 10:42 Post subject: |
|
|
Well, at least he is working on Vista support. Even if he would send me the source code, I doubt I would be able to create a 64bit version (Delphi... shudder).
OTOH, I hooked the Linux server without a library like madcodehook, so it should be possible to do this on Windows as well... _________________ Papillon |
|
Back to top |
|
|
chris421
Joined: 07 Apr 2005 Posts: 53
|
Posted: Wed Jun 14, 2006 17:48 Post subject: |
|
|
He never really specifies Vista 32 or 64, which I assume will release in two flavors.
Regardless, I'm sure you'd have a long list of volunteers to help QA a homebrewed windows hooking solution.
Glad to see the renewed activity on the project. Thanks! |
|
Back to top |
|
|
MagnumMan
Joined: 01 Apr 2005 Posts: 8 Location: MA
|
Posted: Mon Dec 11, 2006 17:00 Post subject: x64 Support |
|
|
Amia (www.amiaworld.net) is running on x86-64. We're using a pre-release madCHook which allows us to run on x86-64, along with NWNX2 32-bit, nwserver 32-bit, and mysql 64-bit. madshi said that this support would come in the next official release in an email I have stored from May 2006. In any case I know it is possible since we're doing it, perhaps a donation to madshi would be in order - I certainly made one. |
|
Back to top |
|
|
Papillon x-man
Joined: 28 Dec 2004 Posts: 1060 Location: Germany
|
Posted: Mon Dec 11, 2006 17:16 Post subject: |
|
|
I talked to him about it, and he told me the same ("next version"). But he promised to create a special version for NWNX that supports 64bit as well. As soon as I get it, I'll replace the standard version. _________________ Papillon |
|
Back to top |
|
|
chaoslink
Joined: 23 Aug 2006 Posts: 37
|
Posted: Tue Dec 19, 2006 21:47 Post subject: |
|
|
I've altered NWNX to use (cross-platform) functionality pulled from Microsoft's Detours library. My dev machine has been down so I need some time to clean things up, but I can offer this to the community. It removes the need for any assembly in the hook code (the detours code does some dissasembling of the instructions for trampolining runtime). |
|
Back to top |
|
|
Papillon x-man
Joined: 28 Dec 2004 Posts: 1060 Location: Germany
|
Posted: Tue Dec 19, 2006 22:04 Post subject: |
|
|
As I said in my PM to you a while ago, I'm interested to see your solution . _________________ Papillon |
|
Back to top |
|
|
chaoslink
Joined: 23 Aug 2006 Posts: 37
|
Posted: Wed Dec 20, 2006 0:49 Post subject: |
|
|
yeah, I'm getting there... when I got my copy of the NWN2 beta my machine died, so it has been a rough road to recovery
*edit: I have it tested under linux, I just need to double-check that it compiles and runs correctly under windows.* |
|
Back to top |
|
|
chaoslink
Joined: 23 Aug 2006 Posts: 37
|
Posted: Fri Dec 29, 2006 22:21 Post subject: |
|
|
I've finally got visual studio re-installed and the project moved over to my windows dev machine. There's more linux-specific code that I didn't realize at first which still needs some cross-platform magic applied. Stay tuned.
BTW, this is a modification of the linux NWNX2 source to be cross-platform and to use the detours code, so the windows version will be command-line and function the same as the linux version. If I can grab a copy of the source code for both platforms for each of the bundled plug-ins, I will try to give them the same treatement. |
|
Back to top |
|
|
Papillon x-man
Joined: 28 Dec 2004 Posts: 1060 Location: Germany
|
Posted: Sun Dec 31, 2006 1:14 Post subject: |
|
|
Cool, I am interested how things will turn out on Windows. And I'm curious how the hooking is done with Detours... _________________ Papillon |
|
Back to top |
|
|
chaoslink
Joined: 23 Aug 2006 Posts: 37
|
Posted: Sun Dec 31, 2006 1:23 Post subject: |
|
|
Papillon wrote: | Cool, I am interested how things will turn out on Windows. And I'm curious how the hooking is done with Detours... |
Locating the function is the same. Once the function has been located, I just supply the function address to the detours code along with a function pointer to the trampoline.
the detours code disassembles part of the original function to determine proper instruction boundaries, and copies it to another location in memory with a jump to the next portion of the function. It then replaces the original portion with a jump to the trampoline and returns a pointer to the location of the copied portion. This can be used to execute the original code from the trampoline.
It's Microsoft's code, and it was written for Windows. Luckily the portion of it I described above works under Linux as well (probably for any x86 OS). There are some Windows specific functions I'm using to preload the DLL since there is no LD_PRELOAD for Windows. |
|
Back to top |
|
|
Grinning Fool
Joined: 12 Feb 2005 Posts: 264
|
Posted: Mon Jan 01, 2007 13:35 Post subject: |
|
|
Quote: | the detours code disassembles part of the original function to determine proper instruction boundaries, and copies it to another location in memory with a jump to the next portion of the function. It then replaces the original portion with a jump to the trampoline and returns a pointer to the location of the copied portion. This can be used to execute the original code from the trampoline.
|
Wouldn't that do Really Bad Things in terms of whatever is in place to protect access to system memory, especially under Vista?
(Actually, I kind of hope it would, or that I'm missing something obvious -- otherwise, I'm not holding out much hope for Vista's security enhancements) _________________ Khalidine, a NWN2 persistent world
Looking for volunteers. |
|
Back to top |
|
|
|