Friday, May 15, 2009

5

Wolfram Alpha is incredible! You can get almost any information you want with it... now I don't know what to use it for, but I'll keep it in mind for future assignments.

Watched an old Xenimus PVP movie.  Good examples of style.

I've learned a lot more about DLL "hooking" by reading some articles about wallhacks.  Most of them are l33t h4x0r types, but this article on GameDev.net is really good.  He gives full source-code for hooking a d3d9 application.  I'd love to have it as a drop-in profiling/debugging tool for Evidyon so I could hook the game on various computers and see what's going on.  Unfortunately, although it works on the two simple samples I tried (vertices tutorial, meshes tutorial) it *doesn't* work on Evidyon!  Somehow, the DLL (which swaps out the Direct3DCreate9 method) only gets loaded *after* the method is invoked...so it never has a chance to be called!  Unless there's a way to up the priority of this library then I'm not sure it can work.


In fact, there is a way!  Thanks to this Wikipeda article on DLL injection, if I put the DLL in c:\windows\system32 and add it to the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs it is loaded whenever user32.dll is brought into memory by the program.  I played around with this a little and thanks to some code I found on the web originally for creating your own wall hacks, was able to intercept several method calls on IDirect3DDevice8 objects from D3D8.DLL.  Groovy.



Reading this article on how software is developed for the Space Shuttle inspired me to write out the following idea I had for small-scale robust software development that I'd like to try at Unseen Studios once it grows a bit:

Each project is tackled by three teams:  Specifiers, Programmers and Verifiers (or in less stoic lingo Dreamers, Hackers and Smashers).  Everyone working on a project is either a Programmer, Verifier, Specifier-Verifier or Specifier-Programmer.  Only management can be just Specifiers.  Assume gaining "points" is motivating.

Verifiers gain points when they find a bug in the code or something missing from the spec.  Programmers gain points when they find nontrivial unspecified behavior in the spec, or discover a way to shorten the current development cycle.  An example would be reusing old code instead of writing new code.  Programmers also gain points when code they've written gets reused.

No comments: