Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

interact with external application in c#

Tags:

c#

I was playing around with Microsoft Spy++ and noticed that not only does it find the open processes, but can find the individual components running in each process. For example there is this application that allows you to open a window in which there is a textbox for an IP address and textbox for a port. Spy++ can detect these components. Knowing that Spy++ can detect them, is there anyway possible to find them in a separate c# application and go on to MODIFY their contents and otherwise interact with the program? (such as firing a click event on a button)

like image 416
LordZardeck Avatar asked Aug 07 '26 01:08

LordZardeck


2 Answers

This is feasible. Try use PInvoke (InterOp) or AutomationElement, or AutomationPeer (for WPF applications) to automate all you wish to do.

Also you might wish to try Inspect and UISpy application as well.

enter image description here

enter image description here

like image 60
David Avatar answered Aug 09 '26 16:08

David


Automation elements/peer is a non-intrusive mechanism to control UI using accessibility framework. One of the weaknesses in windows is its lack of defence against code injection. Put simply:

As a privileged user, - You can Open and Modify a running Process image - Make it load your OWN DLL
- Make it run your OWN thread (that potentially listens to commands from your process) and - allows you to read any bits of memory you want.

Look at detours (http://research.microsoft.com/en-us/projects/detours/) for how to do it with Managed Processes.. Unfortunately, Microsoft removed the inject at runtime features.

Also look at http://msdn.microsoft.com/en-us/magazine/cc163617.aspx for doing things in the managed world (Apps like Snoop utilise that)

like image 30
Mo the Conqueror Avatar answered Aug 09 '26 14:08

Mo the Conqueror



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!