Gut, jetzt wird es langsam wirklich lächerlich.
Erstmal zu allen anderen : schon teilweise echt sinnvolle vorschläge und herangehensweisen, aber soweit ich TO verstanden habe geht es nicht darum von Java aus Daten in den anderen Prozess reinzudrücken wofür man z.B. AutoIt oder den Event-Bus nutzen könnte, sondern darum Daten aus dem Fremd-Prozess wieder auszulesen. Ich gehe mal von aus dass das mit dem “Text-Feld” von TO nur als vereinfachte analogie genutzt wurde, z.B. für den Log-Output des Schachprogrammes.
Soweit mir bekannt, und da lasse ich mich auch gerne berichtigen, ist es ja bei Interprozess-Kommunikation wichtig das beide Prozesse über eine definierte Schnittstelle arbeiten. Was bringt es mir denn sonst wenn ich einen anderen Prozess mit Daten vollschütte wenn dieser darauf garnicht reagiert ? Das solche Dinge wie AutoIt funktionieren liegt doch nur daran das diese sich direkt in den “normalen” Event-Bus einklinken und so z.B. User-Input zusätzlich “gefaked” erzeugen können. Wie das aber genau funktioniert das AutoIt z.B. einzelne Input-Fields oder Buttons direkt finden kann, würde behaupten hat was mit der Win-API und dem DWM zu tun, aber keine wirkliche Ahnung.
Und wenn man sich nun von einem Programm in ein x-beliebiges anderes einklinken möchte was in dem sinne keine öffentliche Schnittstelle bereitstellt an die man andocken könnte, dann muss man sich eben irgendeinen “gewaltsamen Weg” suchen in einen anderen Prozess “einzudringen” (wie falsch das einfach nur klingt). Aber wie gesagt : ich lass mich gerne eines besseren belehren.
— OFF-TOPIC —
Zum Thema DLL-Injection : ist richtig das hier jede gute Software-Firewall Alarm geben sollte, aber welche macht es denn schon überhaupt noch ?
Konkretes Beispiel : WarCraft 3 und VisualAutoKick
VCA klinkt sich über DLL-Injection in WC3 ein, und gibt dies über einen Hinweis-Text sogar noch genau so bezeichnet an wenn es erfolgreich war. Zumindest mein Kaspersky ist es völlig egal, und Testweise auch Avira (ist eh ziemlicher Schrott mitlerweile). Das einzige System was mir bekannt ist und drauf anspringt wäre Zone, aber auch nur rein informativ das es passiert ist. Ob es jetzt bei mir an gewissen Einstellungen liegt oder es viele der bekannten “Großen” schlicht nicht interessiert bzw. diese keine Möglichkeit haben es zu verhindern kann ich jetzt nicht beantworten. Ich kann es lediglich nur als mir bekanntes Beispiel geben.
Und wenn ich mir so die Einstellungsmöglichkeiten von Kaspersky ansehe kann ich auch sagen warum kein Muks kommt : sämtliche Einstellungen bezüglich des Punktes “Zugriff auf andere Prozesse” wurden über das KSN (irgend so n Community-Krams) automatisch auf “erlauben” festgelegt. Scheint also das wenn man wollte man den Zugriff blockieren könnte, aber es kommt auch leider beim Erst-Start eines solchen Programmes keine Abfrage. Kann ja bloß ne Einstellungssache bei mir sein.
Ein anderes Beispiel wäre Cheat-Engine. Die Idee dahinter ist ebenso simpel wie auch mächtig : kompletter Zugriff auf den Speicher anderer Prozesse. Sollte ja eigentlich mit Speicherschutz und der gleichen nicht möglich sein, wie wir an Cheat-Engine sehen über Prozess-Injection geht sowas durchaus. Und ob man sowas jetzt nutzt um in irgendeinem Spiel irgendwelche Werte zu verändern oder es mal sinnvoll nutzt und nur ne Log-Ausgabe mit abgreift, jedem das seine.
— OFF-TOPIC —
@TO
Das mit dem Screen-Capture könnte man vielleicht noch anwenden wenn nur eine Instanz deines Schach-Programmes gleichzeitig läuft bzw du nur eine Instanz überwachst wenn du sowas lokal zu testen laufen lässt. Wobei in diesem speziellen Fall wäre ein Blick unter die Haube interessant um rauszubekommen wie diese beiden Instanzen mit einander kommunizieren. Wenn es eine Netzwerk-Verbindung ist kannst du dich entweder direkt dazwischen hängen, Man-in-the-Middle-mäßig, oder zumindest mit einem Paket-Filter wie libpcap und nem passenden Java-Binding (Jpcap) die Daten mitlesen. Wäre jetzt aber nur für diesen speziellen Fall eine “etwas elegantere” Lösung.
Zu dem was du eingangs erwähnt hast bezüglich z.B. Flash oder ähnlichem wirst du damit wohl keine Chance haben, und ohne passende Schnittstelle wirst du um DLL-Injection nicht rumkommen da du letzten Endes irgendwie an die Daten des Prozesses rankommen musst.
Bezüglich des Aim-Bots : ich würde dir von dieser Idee aus einem (eigentlich zwei) recht einfachen Grund abraten : dir fehlt es an Wissen und Erfahrung dafür (und wie gesagt : mit Java schon mal garnicht).
Wenn du also sowas wirklich umsetzen willst geh lieber in Richtung C und dessen Ableger, mit Java wirst du nicht weit kommen da auch hier an irgendeinem Punkt eine Native-Lib nötig wird, die dann selbst auch wieder in C geschrieben sein muss. Und Java so als Drum-Rum für ne Native-Lib zu nutzen ist auch nicht im Sinne des Erfinders.
Kurz und Knapp : nicht ganz so tolle Idee in definitiv falschem Forum gestellt.