Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Commits on Jun 8, 2011
Commits on Apr 9, 2011
  1. Added support for cryptographically signed scripts

    Loading a script now checks its signature and if no valid signature is found, the user is prompted to whitelist it
  2. Upgraded to C# 4

Commits on Jan 12, 2011
  1. Added missing using() blocks around futures returned by BlockingQueue…

    ….Dequeue. Whoops. :(
    Thread safety tweak to RPCChannel
Commits on Jan 11, 2011
  1. You can attach multiple named databases now so that everything doesn'…

    …t have to be stored in prefs.db
    The default table converter should handle removed columns now
    A script can request references to all loaded scripts that implement a given interface or derive from a given type
Commits on Jan 8, 2011
Commits on Jan 4, 2011
  1. Use the new OwnedFutureSet type

  2. Payload was passing a size to VirtualFree, which causes it to fail if…

    … invoked with MEM_RELEASE. Whoops.
    No reason to use strlen in rpcSend.
    Fix a small potential leak in RPCChannel.
Commits on Jan 3, 2011
Commits on Dec 31, 2010
  1. Managed scripts now maintain a table of futures attached to a given p…

    …rocess so that when they are reloaded, they can terminate any running attached tasks
Commits on Dec 24, 2010
  1. Get the semantics of startup/injection closer to ideal: Now we suspen…

    …d the target process before injecting, so that when our payload thread starts, nothing else is running, and once it's alive we resume the rest of the process so the payload can interact with it. This helps address some races.
  2. FunctionDisabler is a little more smart about how it suspends/resumes…

    … processes
    Fixed some bugs in the payload that could cause crashes if it was loaded into a process that had not completed initializing python.
    Attempt to temporarily disable DLL_THREAD_ATTACH when starting the payload thread, because some libraries can become confused by it.
Commits on Dec 23, 2010
  1. Version bump

Commits on Dec 18, 2010
  1. Version bump

Commits on Dec 15, 2010
  1. Try and fix a stray exception at shutdown

    CreateDBTable will now handle cases where you've added new columns to your schema by default
    Try and suppress exceptions from missing __load__
Commits on Dec 12, 2010
Commits on Dec 10, 2010
  1. Python scripts can now express dependencies via the shootblues.Depend…

    …ency and shootblues.OptionalDependency functions
    The status window will not run out of stack when encountering a circular dependency
Commits on Dec 9, 2010
  1. Trigger an OnPreferencesChanged event at construction of a Preference…

    …Store since calling 'Preferences.Dirty' would otherwise set the dirty signal before it's being observed by the task in some cases. This ensures that preferences are always flushed at script startup.
    Don't ignore function calls made before a process is ready. Instead, defer them until the process is ready.
    Dispose process objects more consistently.
  2. Various improvements to handling of permissions issues:

    Shoot Blues will now work when run as a limited user, though it can only interact with EVE processes also running as that user
    Both the payload and Shoot Blues attempt to change the windows message filter so that RPC messages can be sent in both directions
    If an RPC message fails to be sent by Shoot Blues, an exception will be thrown instead of a silent failure
    Request debug privilege at startup so that Process.HasExited works
    ProcessWatcher will use a timer when WMI event notifications are not available (running as limited user)
    Detect when another copy of shoot blues is already running
Commits on Dec 8, 2010
  1. Fixed saving preferences of non-numeric type

    Improved handling of permissions in ProcessInjector and RPCChannel
    Added new FunctionDisabler class for disabling kernel functions in remote processes
Commits on Dec 4, 2010
Commits on Dec 2, 2010
  1. Clean up the usage of remote memory regions and centralize some of th…

    …e behavior to make it easier to debug
    Fix a memory leak related to freeing of remote memory regions
Commits on Dec 1, 2010
  1. Don't choke and die if a nonexistent .dll file is in the scripts list…

    … in your prefs
    Show a message box if an error occurs in the main task
  2. Payload builds without default libs now

    Python scripts that are meant to be loaded by themselves have a extension now
  3. Fixed more race conditions. Christ.

    Profiles are now given the option to delay the loading of user scripts until the remote python environment is in a good state
    Explicitly check to ensure that all the scripts we tried to load were loaded when performing a ReloadModules RPC, so that we don't get confusing failures later if one failed silently
Commits on Nov 30, 2010
  1. Version bump

    GetProcessesRunningScript will not return processes that are not Ready
Commits on Nov 29, 2010
  1. Profiles can have dependencies now.

    Profile dependencies show up in the scripts window under a node of their own instead of magically appearing in the scripts list as if you'd added them.
  2. Fixed bug in PreferenceStore.Get

    Tolerate failures during script loading a bit better
    SimpleConfigPanel automatically wires up ValuesChanged listeners to compensate for windows forms designer limitations
  3. ErrorDialog is resizable now

    ManagedScript will automatically fall back to the .py files from the source directory if you run shoot blues in the debugger
    Payload suppresses the 'ok' message from ReloadScripts when a failure occurs, so that it doesn't show up in the error dialog
  4. Significant refactorings to script loading behavior in order to fix v…

    …arious race conditions and ordering bugs.
    CallFunction will now throw if you attempt to call a function on a module that is not loaded.
    CallFunction will now throw if you attempt to call a function within a process that is busy loading scripts.
    Preference management is now encapsulated in a helper class.
    The ReloadScripts RPC call now returns a result so you can wait for it to complete.
Commits on Nov 28, 2010
  1. Fixed Program.CallFunction so that it propagates python exceptions co…

    …rrectly to parent tasks (because this was broken, failures in function calls were sometimes ignored)
    When loading managed scripts into a process or unloading them from a process we now perform the operation as a background task so that a failure in one script does not prevent the loading of other scripts
Something went wrong with that request. Please try again.