This may ramble on a bit, but it explains my desire to create this tool.

I was working on a project for myself, an emulated console arcade. I had the need for a good controller interface to a computer that would be hooked up to my TV. I found MotioninJoy as a suitable driver, but wanted more functionality than was provided by default. Specifically I wanted to be able to get the battery status of bluetooth connected DS3 controllers, as I was implementing a PS3 style XMB overlay. So, I started digging around in the DS3_Tool.exe program that comes with the MotioninJoy driver. At first, I was only going to extract the values of the actual battery charge status that shows in DS3_Tool.exe, and I discovered that this was next to impossible because DS3_Tool.exe uses an Internet Explorer server, specifically the WebBrowser control, and I can only assume that for security reasons, the operating system doesn’t allow this to be hooked.

This got me curious as to why the author decided to build DS3_Tool.exe in this manner. I was also determined to achieve what I described previously. I first noticed outbound connections over the internet, which I assumed at first was to deliver ads in the main screen. However, it does more than that.

You see, all the heavy lifting is done by DS3_Tool.exe locally, however, it has no application logic whatsoever to determine when it should interface with the MIJFilter driver, this is all decided by the green “GUI” that is presented to you via HTML and JavaScript inside of that WebBrowser control. This HTML and JavaScript comes from a remote server out on the internet, this is where things become somewhat nefarious in my opinion.

DS3_Tool.exe is signed with the same digital certificate that the MIJFilter driver is signed with. I assume this is to overcome the driver signing requirements in x64 systems. The problem however is, DS3_Tool.exe, being signed will occasionally request administrative privileges. To do certain housekeeping tasks, like updating, or managing the MIJFilter driver installed in your system. Since the “GUI” tells the trusted and signed DS3_Tool.exe what to do, this means that all the active content that’s delivered to your computer from a remote server is also trusted. Since DS3_Tool.exe is just acting as a proxy for whatever the remotely delivered “GUI” tells it to do. This connection to the server is not protected by SSL, it’s also hard-coded as a domain name in the DS3_Tool.exe itself. This leaves open a couple of avenues of exploitation by an attacker. First off, the man in the middle scenario since the connection to the “GUI” is not secured with SSL. Secondly, what if the author abandons this domain, and an attacker buys it up? DS3_Tool.exe will execute the JavaScript contained on this new domain without question. This to me is troublesome, the driver itself works well enough. But DS3_Tool.exe is just terrible.

There are a couple of other odd things to point out here, DS3_Tool.exe stores files at …\”UserProfile”\AppData\Roaming\MotioninJoy\DS3tool. These files are Base64 encoded DES encrypted files which contain some offline JavaScript routines, as well as the configuration information for DS3_Tool.exe itself. Why would the author of MotioninJoy go through this much trouble? Surely it’d be easier to create a fully native application for managing the driver. I can’t say for sure if the author is using this method to just deliver ads, or to be able to quickly update the functionality of the program without users downloading an update, or for some other purpose. But DS3_Tool.exe does have the ability to download files from a remote location and execute them.

To me this is the very definition of a Trojan horse.

So, I made this replacement for DS3_Tool.exe.
I hope you enjoy it.

36 comments on “Why?
  1. Paul says:

    Hello Phil

    I just picked up a DS3 ps3 controller too night, with one thing in mind Playing games (old school ROMS) on my Win7 laptop. Then i find out the only good way to do this is with some kinda China who knows what its really doing software. So i just wanted to say thank you for making this.

    a Few questions

    1 how do you install this? do you install MotioninJoy then Better DS3 then uninstall MotioninJoy? or just Delete MotioninJoy?

    2 i can’t tell from the screen shots, can you unload/load the Bluetooth drivers with Better DS3?

    • Phil says:

      You’re welcome!

      1.) Once you have the MotioninJoy drivers working, you run Better DS3. Then you can use Better DS3 to assign your controller mappings, and pair bluetooth controllers. You shouldn’t uninstall MotioninJoy, but once you have the drivers installed you don’t need to use DS3_Tool anymore. Better DS3 doesn’t need to be installed, just copy it to your computer somewhere and run it. If you want it to start automatically with windows, just drag a shortcut of Better DS3 to your Startup folder.

      2.) No, currently the drivers can’t be loaded and unloaded with Better DS3, sorry.

  2. bvv says:

    hello Phil!

    I have a question:
    I have the DS3_Tool installed on my computer, and you say that in some way somebody can go ‘inside’ my computer trough an internet connection. but can they only get in when i’m running DS3_Tool? or can they also get inside when the DS3_Tool is not running?
    and does this work Offline?

    thank you very much!

    • Phil says:

      DS3_Tool.exe from MIJ will check for updates from motioninjoy.com, if there are any available, they will be downloaded and installed, without asking you. I’m not saying the author of MIJ has malicious intent, however, if they decide not to continue maintaining the domain, an attacker could purchase the domain and use it to distribute malware to everybody using DS3_Tool.exe. DS3_Tool.exe will happily execute the instructions provided to it by motioninjoy.com. Nothing bad can happen when DS3_Tool.exe is not running.

      This ability only exists in DS3_Tool.exe itself, not the MIJFilter driver.

      Better DS3 aims to replace DS3_Tool.exe without requiring an internet connection, so yes, it works offline. It never communicates over the internet at all.

  3. bvv says:

    allright! thank you very much for your quick answer and this great product! it works very good, i just used it and it works great.
    i have only one question: how can i connect my ps3 controller with my computer using bluetooth? it’s an amazing feature but i don’t know how to activate it.

  4. GK says:

    Excellent tool, thank you very much.

    I am very much a “noob” when it comes to this kind of thing so would appreciate some further clarification. Further to BVV’s question and your response, when I turn on my dual shock 3 (that has been paired via the original DS3.exe and set as default profile), would that count as running the original DS3.exe?

    i.e. Let’s say I have just turned my PC on, haven’t opened/run DS3.exe but turn on my Dual Shock 3 and get the connection “ping” sound and go on to use it in games just like a 360 controller, am I correct in assuming that this does not run the DS3 tool and is merely utilising the MIJ filter drivers to which you refer?

    The reason I ask is because I am wondering if there is a need for me to revoke firewall permissions for the original DS3 tool in general? I can of course do this but it would be a hassle to change permissions every time I needed pressure sensitive Dual Shock 2 (not 3) functionality for PCSX2 use.

    As a side note do you have any plans for a PCSX2 pressure sensitive preset? – This would then remove the need for the original DS3 tool entirely! 🙂

    Whatever the case, well done for your hard work, much appreciated. Sorry if I was not able to articulate my questions well.

    • Phil says:

      You’re welcome, I’m glad you like it!

      Basically if it works in DS3 Tool, it will work in Better DS3. Once the driver is installed, you no longer need to use DS3 Tool, you can just use Better DS3.

      Your assumption is correct, DS3 Tool just configures the driver, this is exactly what my tool does.

      What I did is this, I dragged a shortcut for Better DS3 into my Startup folder in the start menu. I have Better DS3 options set for Start Minimized, and Minimize to Tray. I find myself usually using the same profile all the time, so I check the box in the profile editor to automatically apply this profile. Now when I turn my computer on and am ready to use the controller, I just power the controller on via the PS button and everything just works like I want. You can do what you’d like, but I think most people will find this method of use the most hassle free.

      I’m pretty sure I can add the PCSX2 feature, keep an eye out for it on Monday or Tuesday. You can click the Latest Version? link in the window periodically, it will open your browser to a page on my site, passing your version number in the URL, and let you know what’s new.

  5. Robert says:

    Hey Phil,

    I just found your tool, it’s great. It works with a Sony Navigation Controller but unfortunately not with my Sony Motion Controller. I’m also a .NET developer and probably could fix it on my own. Do you plan to share your source code with other developers?


    • Phil says:

      I assume you’re talking about the PS Move controller, I don’t think spatial tracking would work since MIJ doesn’t work with the Playstation Eye as far as I know. I think the accelerometer parts might work, but I don’t have a PS Move to play around with it. I don’t plan on sharing the source code at the moment.

  6. Jason John says:

    Hey man great program but I have a question. So DS3Tool does work for me when I have connection but my wifi is currently disabled so Im at the library. The thing is when I use Better Ds3 my ps3 controller does not show up on the list and I’m pretty sure the drivers are installed because it does work on Ds3Tool when I’m connected over the internet. So if you can help me out that would be great. Thanks.

    • Phil says:

      That’s odd, shot in the dark here, sounds like you might be using a laptop. Maybe you’re trying to connect the DualShock controller over Bluetooth, it’s possible your laptop disables Bluetooth when you disable WiFi?

  7. Sypher says:

    Hey there.

    Just wanna go on record to say that this is a great program, and I’m sure that the world will appreciate your efforts. In case they don’t say it, I will, thanks. 🙂

    Also was wondering, if it was possible that you could add the driver installation of the controllers straight through the program without using MotioninJoy at all, kind of scary to me, after reading your findings. Would make the installation of DS3’s go even faster, without having to install another program to make it work. This would then just be the first choice for a program for DS3’s instead of people just sticking with MotioninJoy.

  8. Sohaib says:

    i have been using ds3 tool but wanted offline use so i switched to better ds3. i know the drivers have been installed because it worked with ds3tool but better ds3 doesnt show the controller. i have the controller wired. any help?

    • Phil says:

      Make sure that you are using version 0.7.1001 of MotioninJoy.
      Also, make sure that you are using the latest version of Better DS3, 1.4.1.

  9. Elliot Gindi says:

    Is it possible in the future this could replace DS3 tool 100%?

    • Phil says:

      What do you mean by replacing DS3 Tool 100%, what features are you looking for? I think Better DS3 covers pretty much all the functionality for controller mapping that DS3 Tool does, and more.

      • Elliot Gindi says:

        I mean making it in such a way that I can just eliminate DS3 tool altogether. Like the tool would do it all! It’s just so much better and it actually WORKS.

        Also I have no idea if this is possible but do you think you could put the vibrate and custom lights on the front and not tie them to profiles? It seems like it would be handier there.

        Also (jeez I’m demanding) if you use 360 mode would it be possible to select which player that controller counted as and have it show up on said controller by using the LEDs?

        I just really dig this tool since DS3 Tool kinda sucks and I wanna see it be the best it can be. You do awesome work!

        • Phil says:

          Thanks for the kind words.

          The vibration and LED controls could be placed on the main window, as an override to what is set for the currently applied profile. Only because I feel by removing these settings from the profile section would cause a regression in functionality. Being able to just have a profile set automatically was my main goal in placing these functions in the profile, and I feel like this is more useful for most cases.

          I’m not sure that it’s possible to detect which DS3 controller is assigned to which virtual XBox 360 controller. Without going into too much detail, this is because it is impossible to identify which DS3 controller is assigned to which virtual XInput or DirectInput controller.

          • Elliot Gindi says:

            Ah, ok see this is why you’re the developer guy and I feel like a genius everytime I look down and see I’m tricking my PC with my controller.

            I ask for the vibration test in the front because it’s a quick easy way to see which DS3 I’m currently configuring.

            As for the lights, I figured multiplayer would be way easier if the lights could be used for their intended purpose of telling me which player I am, but like you said that’s impossible so whatever right?

            Just wish I had this when I was traveling, I’d run around trying to get wifi for a few seconds to get the controller going.

            Thanks for the program man, don’t stop man, you’re making PC gaming history!

  10. Veli says:

    Just dropped in to say, thank you. Didn’t work on earlier driver version, 0.6.005, but having no issues with latest 0.7.1001.

  11. Player1 says:

    Great tool indeed. Do you know if it works wit Win XP? I’m building an arcade PC and I’m not sure whether to buy a Win 7 license or to use the XP license I already have.

    • Phil says:

      I’m not sure, I don’t have any computers that run Windows XP anymore.
      Although there’s nothing that should specifically prevent it from working, as long as you have .Net 3.5 installed.

      Basically Better DS3 should work wherever MIJ works, although I’ve only personally used it on 64-bit versions of Windows 7. I have heard reports of it working on Windows 8 as well.

      • Player1 says:

        Ok, thanks for the answer. I will try it on my machine then and report back. Could take a while though, as I first need to get a good bluetooth dongle.

  12. Player2 says:

    I was looking around for an offline solution for MiJ when I found this YT video from wiltshire12345 http://www.youtube.com/watch?v=XONp–MdnE4&NR
    An year ago I used another driver which I got off ps3-hacks.com (now dashhacks.com/ps3.html) and it worked perfectly for me! But ever since the redesign of the site, I could never find the file again when I switched to a new laptop. For sometime now I’ve been using MiJ and I never liked it. Then I see a too-good-to-be true alternative that is your software! I am liking this and would recommend to all those fellows out there who had doubts like I had.

    I’ve got a laptop so I’ve got embedded bluetooth that works with the windows bluetooth stack. How do I go about connecting my ps3 controller via bluetooth? What does Host, Current Master, all mean? I do not want to get a USB dongle when it might be a waste 😀
    Bluetooth Adapter: Qualcomm Atheros AR3012 Bluetooth 4.0+HS
    Laptop Model: Asus k45vd
    OS: Windows 8 x64

    Thanks for the great work!

    • Phil says:

      Host will show the bluetooth MAC address of the bluetooth adapter in your computer that has the MotioninJoy driver installed.

      Current Master shows the bluetooth adapter address that the selected USB connected DualShock 3 controller is currently paired to.

      New Master allows you to assign a new pairing address for the selected USB connected DualShock 3 controller.

      Controller shows the bluetooth address of the controller itself, and isn’t really useful for anything.

  13. Oscar Abraham says:

    Thank you.

    This is a great and secure alternative for MotionJoy!

  14. Clavus says:

    Awesome work dude. Now I can play Dark Souls without feeling like my computer is being invaded in the background.

  15. Ricky Face Person says:

    In the future could BetterDS3 end up replacing Motioninjoy completely, so that it isn’t necessary at all to even initially install the drivers?

    Also, another helpful hint for other users might be to block off the Motionijoy exe files with Windows Firewall.

    From start menu, search for “Firewall” and select Windows Firewall with Advanced Security

    Choose Outbound Rules from the tree at the left.

    Choose New Rule… from the menu at the right.

    New Outbound Rule Wizard opens. This is really easy now:

    a. Select Program as rule type.

    b. Select the program’s EXE file.

    c. Choose Block the connection.

  16. Ayo says:

    Hi, I’ve tried both ds3 tool and better ds3 but neither of them can detect my controller. It’s a Genius Maxfire Blaze3. My computer can detect it well enough so I can play FIFA but i can’t play 360 games like arkham city. Will you be creating drivers for that anytime soon? thanks!

    Great work by the way. keep it up

  17. Floris says:

    Hey dude, great work!
    As you may have noticed, the Motioninjoy site has been down for a while. I know this isn’t your fault, but I thought, maybe you could update your program in such a way that the MIJ drivers aren’t needed anymore because people can’t download them anymore.

    Anyway, keep up the good work and thank you very much!


  18. Darryl says:

    hi, i recently installed MIJ-DS3 and Better DS3 and i love your tool a lot, but i’ve got a problem and maybe you can help me, everytime i do the “install all” for the generic USB controller, it somehow does not make my mouse to work. so everytime i want to play the game, id install the device in DS3, then switch to Better DS3 then when im done, i would do a system restore for my mouse drivers to come back and work on my laptop, maybe you have encountered such problem and maybe you guys can help me.
    Thank you so much and keep up the great work!

    • Phil says:

      Wow, that sounds like a real hassle.
      I’ve never experienced this before.
      I would suggest trying to plug my mouse into a different USB port on the back of the computer, if that didn’t work I would use device manager to uninstall the driver from the generic controller and then, also using device manager, scan for new hardware changes.

      But I don’t really know if that will help. Sorry.

  19. Player1 says:

    Hi Phil. Any chance you will be improving this already great tool in the future?

Leave a Reply

Your email address will not be published. Required fields are marked *