08.03.2012, 00:13
|
rolfk
LVF-Guru
Beiträge: 2.305
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
RE: Prozess auslesen/Werte ändern
(07.03.2012 17:52 )Tschirno schrieb: Meines Wissens nach geht es nicht mit Labview. Ich hatte es auch mal mit Labview versucht einen Installer automatisiert durchlaufen zu lassen. Ich habe letztendlich dafür AutoIT genommen. Dort kann man Scripten bis der Arzt kommt. Absolut schnell zu erlernen. Es gibt super viele Beispiele. Das kann Bedienelemente auslesen und Tastaturen emulieren. Wunderbar von Labview aus ansteuerbar über Commandline Argumente. Vielleicht ist ja das für dich. Labview kann nunmal nicht alles.
Du kannst mit LabVIEW prinzipiel alles tun was mit anderen Programmiersprachen auch geht, da LabVIEW turingkomplet ist, aber.....
1) Low Level Dinge wie intensive Bitschiebereien wie sie in Kompressions- und Dekompressionsalgorithmen oft verwendet werden sind in C oder Assembler wesentlich effizienter implementierbar. LabVIEW hat zwar alle Tools dazu aber man kann eben nicht so einfach alles optimalisieren wie das in C oder Assembler möglich ist.
2) Systemzugriffe kann LabVIEW nicht alle selber implementieren. Wenn man also etwas benötigt das ausserhalb der Standardfunktionen wie File IO, Netzwerk oder dergleichen liegt, muss man etwas extra Arbeit erledigen. Aber Interfaces wie die Call Library Node oder ActiveX/.Net ermöglichen hier jeglichen gewünschten Zugriffe.
3) Allenfalls ist es sinnvoll für obige Punkte einen Teil in C oder dergleichen als externer Code zu implementieren und dann mittels der Tools in Punkt 2) in LabVIEW einzubinden.
Grundsätzlich wäre es möglich um mittels dieser Tools Funktionen wie sie AutoIt mitbringt direkt in LabVIEW zu integrieren. Aber sinnvoll wäre es eher nicht, da ein Tool wie AutoIt garantiert viele Mannjahre Arbeit gekostet hat um es dahin zu bringen was es heute kann. Aber das Tool macht nichts anderes als durch Aufrufe von Windows APIs die Frontpanels von Standardwindowsapplikationen zu enumerieren und auf dessen Bedienelemente zuzugreifen, da dort jedes Bedienelement wiederum ein eigenes Windows Objekt ist das auf derselben Objektstruktur basiert wie es ein Windows Fenster auch ist. Das schlägt allerdings fatal fehl bei Programmen die mit LabVIEW gemacht wurden, da LabVIEW Kontrols keine Windows Objekte sind sondern eigenständig direkt in LabVIEW implementierte Objekte.
Aber LabVIEW ist da nicht ganz alleinstehend. Dasselbe Problem dürfte beistpielsweise bei vielen Spielen bestehen, die die Bedienelemente auch nicht als Windows Objekte implementieren sondern beispielsweise auf OpenGL oder ähnlichem basierend ihre eigenen Bedienelemente implementieren. Auch Applikationen die mittels Platformabstraktion Toolkits wie wxWidgets oder dergleichen portiert werden dürften solche Einschränkungen kennen.
|
|
|
08.03.2012, 10:31
|
Tschirno
LV Fortgeschrittener
Beiträge: 42
Registriert seit: Apr 2008
7.1/8.x/20xx
2004
EN
46145
Deutschland
|
RE: Prozess auslesen/Werte ändern
"Du kannst mit LabVIEW prinzipiel alles tun was mit anderen Programmiersprachen auch geht..."
ist auch vollkommen korrekt. Darum ging es auch nicht. Es geht sich vielmehr darum, wie kann ich Aktionen effizient in Labview umsetzten. Wenn man keine Api, keine Doku, keine DLL's hat, ist es sehr mühselig dann effizient Ergebnisse zu bringen. In meinem Fall war AutoIT perfekt für das eine Ergebnis.
Und Prozesse / Controls auslesen und manipulieren zu können wäre eine DLL oder Api echt gut. Allerding wenn es so allgemein beschrieben ist, wie in diesem Beitrag, und keine Infos über DLL/Api/Doku etc. hat, lassen sich vielmehr nur Hinweise in die richtige Richtung geben.
|
|
|
08.03.2012, 17:43
|
|
|
08.03.2012, 20:33
|
Pascha
LVF-Grünschnabel
Beiträge: 11
Registriert seit: Mar 2008
11
2008
DE
30179
Deutschland
|
RE: Prozess auslesen/Werte ändern
Also werde ich wohl doch für solche "Hacks" weiterhin VB benutzen müssen.
Was ich genau machen wollte, um die Kritik an mangels Informationen aufzugreifen, ich wollte einige Adressen auslesen und Werte in diesen Adressen Verändern.
|
|
|
08.03.2012, 20:40
|
GerdW
______________
Beiträge: 17.467
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: Prozess auslesen/Werte ändern
Hallo Pascha,
Zitat:ich wollte einige Adressen auslesen und Werte in diesen Adressen Verändern.
Woher kennst du die Adressen anderer Prozesse? Wie willst du darauf zugreifen? Diese laufen in ihrem eigenen virtuellen Speicherbereich - auf den du von außen (von einem anderen Prozess aus) keinen Zugriff hast...
Kannst du uns das VB-Skript hier posten? Ich glaube, daran wären einige interessiert!
|
|
|
11.03.2012, 01:38
|
Pascha
LVF-Grünschnabel
Beiträge: 11
Registriert seit: Mar 2008
11
2008
DE
30179
Deutschland
|
RE: Prozess auslesen/Werte ändern
Ok dann habe ich fälschlicher weise angenommen das es VB ist.
Man kann mit Hilfe eines Programms namens Cheat Engine auf laufende Prozesse zugreifen (zumindestens bei Spielen ist es so, habe es bei anderen noch nicht probiert) und Adressen bzw Pointer auslesen, so kann man die Werte dahinter nach belieben verändern.
Das Programm arbeitet weitesgehend automon bei der erstellung des Skript, man muss nur gewisse Einstellungen vornehmen.
Warum auch immer ich hatte gedacht, dass es das ganze in VB tut.
Sorry für die Verwirrung.
|
|
|
11.03.2012, 11:25
(Dieser Beitrag wurde zuletzt bearbeitet: 11.03.2012 11:28 von rolfk.)
|
rolfk
LVF-Guru
Beiträge: 2.305
Registriert seit: Jun 2007
alle seit 6.0
1992
EN
2901GG
Niederlande
|
RE: Prozess auslesen/Werte ändern
(11.03.2012 01:38 )Pascha schrieb: Ok dann habe ich fälschlicher weise angenommen das es VB ist.
Man kann mit Hilfe eines Programms namens Cheat Engine auf laufende Prozesse zugreifen (zumindestens bei Spielen ist es so, habe es bei anderen noch nicht probiert) und Adressen bzw Pointer auslesen, so kann man die Werte dahinter nach belieben verändern.
Das Programm arbeitet weitesgehend automon bei der erstellung des Skript, man muss nur gewisse Einstellungen vornehmen.
Warum auch immer ich hatte gedacht, dass es das ganze in VB tut.
Sorry für die Verwirrung.
Es gibt natürlich DebugBetriebssytemroutinen um in einen Prozess zu schauen. Sonst könnte ein Debugger ja nicht funktionieren.
Aber: Diese Funktionen können nur in elevated mode ausgeführt werden. Das Program das sie aufruft muss also zwingend mit Administratorrechten gestartet werden.
Zudem ist das alles schön und gut aber damit hast Du noch immer einfach einen linearen Adressbereich von heutzutage schnell mal vielen MB Grösse. Da die richtige Addresse zu finden für die eine spezielle Variable ist ein Unding. Je nach Programmierung kann diese Adresse auch noch varieren zwischen Programmaufrufen. Ein Debugger macht das indem der Compiler für den Debugbuild Unmengen an extra Informationen in das Executable schreibt die dem Debugger die Addresse und den Namen von Variablen mitteilen. Bei Releasesoftware ist diese Informationen beinahe immer entfernt, sowohl wegen der extra Grösse die es verursacht und damit auch langsamerer Lade- und sogar Ausführungszeit, aber natürlich auch weil die wenigsten Programmierer einem Hacker soviel Einblick in die Applikation bieten wollen.
Die von Dir angesprochenen CheatEngine dürfte nur darum funktionieren weil sich da jemand (wahrscheinlich ein paar jemanden) viel Mühe gemacht haben um mit einem Disassembler die Spiele zu untersuchen und die entsprechenden Adresstabellen für bestimmte Spiele zu erstellen. Das wird wahrscheinlich noch wesentlich erleichtert weil viele Spiele die gleichen oder ähnlichen Engines benützen um ein Spiel zu implementieren. Wenn die dann ein Spiel anschauen und feststellen dass es die gleiche Engine verwendet wie Spiel X, das sie schon disassembliert haben, ist es viel einfacher um da auch rein zu schauen.
Ohne spielspezifische Tabellen zu dem Spiel dass Du cheaten willst, funktioniert das aber sicher nicht. Und die Verwendung von einem Disassembler (oder überhaupt jegliche Art von Reverse Engineering) für solche Zwecke ist inzwischen in vielen Ländern ziemlich strafbar. Und in manchen ist auch die Verwendung der so erhaltenen Resultate schon strafbar.
|
|
|
11.03.2012, 14:06
|
Pascha
LVF-Grünschnabel
Beiträge: 11
Registriert seit: Mar 2008
11
2008
DE
30179
Deutschland
|
RE: Prozess auslesen/Werte ändern
Danke erstmal für die Aufklärung.
Aber ich glaube rechtlich nicht, dass man strafrechtlich verfolgt wird wenn man den Geldwert im Spiel von 2 auf 4 setzt.
|
|
|
11.03.2012, 15:44
(Dieser Beitrag wurde zuletzt bearbeitet: 11.03.2012 15:50 von rolfk.)
|
|
|
| |