|
|
|
IridiumX Assist
Generation One
IridiumX Assist, Generation One, represents a range of powerful
"instrumentation assist" technologies specifically designed for
Delphi developers
to assist broker binary execution. In my time as a developer there have been
countless times where I have needed to modify existing code, generally where
that same code has had known problems and there were no
readily available workarounds.
From a corporate point of view,
IridiumX Assist compliments innovative systems research and development
techniques through its instrumentation assist technologies, enabling you to
"instrument and extend" existing application
functionality. In a commercial world dictating binary-only application
releases, the lack of access to the relevant source code is often a
critical limitation for delivering application extensions. IridiumX Assist
helps you to overcome these limitations by brokering code execution on
behalf of the you, the developer.
So, what does Generation One of IridiumX Assist offer you as a developer?
Currently there are 3 core technological components of IridiumX Assist:
|
|
ComBroker |
|
ComBroker implements direct interface brokering for application
developers, empowering the developer with the core mechanics required to
transform the ultimate behaviour of any COM interface.
ComBroker is excellent for behavioural modification of third party COM
interfaces, enabling you, the developer, to control existing interface
implementations. Because the negotiation mechanics utilized by ComBroker
bind directly to the source interface, the physical characteristics of that
interface are transferred to you in whole, whether called from your code or
existing third party code.
So, How Simple Is ComBroker?
ComBroker works via interface "handlers"
- you register an existing interface and an associated "handler" for
that interface, and your handler automatically receives all calls
destined for the existing interface.
For example, lets say you wanted to
"take control" of the way an existing IOleClientSite interface operated.
From within the Delphi IDE you would
create an object that supports both
IInterfaceHandler and IOleClientSite and register your handler and
the existing IOleClientSite interface with ComBroker. As soon as your
handler's registered and activated, your handler will start receiving
calls originally destined for the existing IOleClientSite interface.
It's true, it is that simple!
Cross Process Brokering with
ComBroker
For ComBroker to access an interface,
it must be loaded into the same process space as the interface you need
to broker. If cross process brokering is what you're after, you'll need
Injector to help you cross those boundaries.
|
|
Injector |
|
Injector delivers an incredibly easy to use cross-process
injection engine, enabling you to run your code from within
another application.
What is Library Injection?
Library Injection essentially refers to the mechanics of forcing another
running process to load a library (or DLL "payload") that ordinarily it wouldn't. When
loaded, this library is started up in the address space of the target
process - this can be incredibly handy for serious cross-process development
or API hooking, particularly when the target process is not your own.
IridiumX Assist Injector Technologies are
compatible across the Microsoft's Windows '95, '98, Me, NT 4, 2000 and XP
environments!
|
|
Library Broker |
|
Library Broker delivers another easy
to use technology that enables you to redirect DLL method calls to
your implementation of that same code.
Brokering library methods
presents one of the most powerful tools for researching and extending
the inner structure of existing applications, providing almost limitless
possibilities and promoting innovative application development. Take the
following for example:
- By registering a proxy for DllGetClassObject against a library you
effectively gain control over the implementation of that object, i.e.,
if you want to prevent that object from being created you can fail the
call, likewise if you need to implement your own object instead of the
original then you have the opportunity to do so.
- By registering proxies against the methods of WSock32, UrlMon or
ShDocVw you can develop an incredible learning tool for determining
how particular applications converse with the world around them,
including communication techniques and socket data analysis.
- Hooking API calls. This has the inherent advantage of enabling you
to trace API calls issues by an application and where required,
extending the way a particular call operates.
All of these ideas have the potential to completely reshape the way
an application works, from fixing that which is broken to the
introduction of new functionality. More importantly however, all of
these ideas are incredibly simple to introduce to your application - by
reproducing a particular function, Library Broker will divert execution
from the original function direct to your code in one simple call.
It is important to note that Library Broker works by updating a
library's import "table of contents". This means that calls originating
from within the library itself will not be brokered to your application,
however calls originating from another library will be brokered through
your code.
Cross Process Brokering
For Library Broker to proxy a method for you it must be loaded into the same process
space as the interface you need
to broker. If cross process brokering is what you're after, you'll need
Injector to help you cross those boundaries. |
|
Requirements
IridiumX Assist requires Delphi 6, minimum.
Important -
BEFORE Using IridiumX Assist!
Please note that THIRD PARTY COPYRIGHT AND LICENSING AGREEMENTS
MAY BE APPLICABLE - always check the licensing information of the
application you're about to invade for any and all licensing restrictions that may
apply!
|