Ich muss die Bildschirmtastatur von Windows 7 zum Tippen verwenden:
(Falls Sie es noch nicht verwendet haben, können Sie es erhalten über: Alle Programme -> Zubehör -> Einfacher Zugriff -> Bildschirmtastatur
oder einfach nach "osk.exe" suchen)
Es bietet eine Funktion zum "Schweben" über die Tasten. Microsoft beschreibt es wie folgt:
Im Schwebemodus zeigen Sie mit einer Maus oder einem Joystick für einen vordefinierten Zeitraum auf eine Taste, und das ausgewählte Zeichen wird automatisch eingegeben.
Es gibt mein spezifisches Problem. Die vordefinierte Zeitspanne ist zu lang, um für mich nützlich zu sein. Die Mindestzeit beträgt 0,5 Sekunden (max. 3 Sekunden).
Gibt es eine Möglichkeit, diesen Wert auf etwas < 0,5 zu ändern ? Zum Beispiel über die Bearbeitung der Registrierung?
Bearbeiten: Der Eintrag HKEY_CURRENT_USER\Software\Microsoft\Osk\HoverPeriod
kann nicht niedriger als 500 ms eingestellt werden.
Bearbeiten (2): Ich denke, die einzige Möglichkeit, mein Problem zu beheben, besteht darin, die EXE-Datei zu dekompilieren (ich denke, sie ist in C geschrieben oder?) Und die Mindestzeit zu ändern. Dann muss ich es nochmal kompilieren. Ist dieses Verfahren überhaupt praktikabel? Welche Dinge könnten scheitern?
Jeder hilfreiche Tipp wäre toll!
Antworten:
Wo im Code befindet sich unser Schlüssel?
Wenn Sie mit Process Monitor in das für das ETL-Ereignis einlesen, das diesen Wertestapel-Trace ausliest, erhalten Sie:
Wir können sehen, dass
OSKSettingsManager::GetOskSetting
der Wert ausgelesen wird.Wie sieht dieser Teil aus? Können wir es debuggen?
Wenn Sie diese Funktion mit WinDBG untersuchen, greift sie direkt zuvor auf diesen Registrierungsschlüssel zu
000007f7 23560517
.Das Problem hierbei ist, dass ich beim Versuch, an dieser Stelle einen Haltepunkt zu setzen, nichts mehr eingeben kann, da er sich
osk.exe
selbst zu den Eingabetreibern hinzufügt. Dies kann leicht erkannt werden, indem Sie eine Modifizierertaste wie Altauf Ihrer Tastatur gedrückt halten. Dadurch leuchtet sie aufosk.exe
.Wenn ich den Code nach Additionen oder Subtraktionen durchsuche, sehe ich nur, dass etwas mit
40
hexadezimaler64
Dezimalzahl passiert . Das hat also auch nichts mit der Nummer zu tun.Es könnte sich um eine der vier
cmp
(Vergleichs-) Anweisungen handeln, für die jedoch Debugging-Informationen erforderlich wären. Oder es könnte in einer höheren Funktion geschehen, was weitere Untersuchungen erfordern würde. Aber ohne die Fähigkeit, es zu debuggen, ohne die Eingabefähigkeiten zu verlieren, ist dies eine sehr schwierige Sache ...Es scheint, dass für das Finden des richtigen Speicherorts ein Debug-Kabel erforderlich ist, da der Computer, auf dem Sie debuggen, seine Eingabefunktionen verliert oder aufgrund des Overheads beim Debuggen viel zu langsam ist. Da ich derzeit keinen Laptop mit einem Anschluss von 1943 habe, kann ich dieses Debugging nicht selbst durchführen. Es wäre in der Lage, dies zu tun, und ja, es würde Ihr Betriebssystem buchstäblich einfrieren. Das Debuggen eines Betriebssystems anstelle einer Anwendung macht Spaß ... ^^
Warten Sie, wir haben Zugriff auf die Symbole! Können wir den beleidigenden Code finden?
Bei näherer Betrachtung werden Sie die störende Funktion bemerken:
Wenn wir durch diese Funktion gehen, sehen wir zuerst:
Okay, das vergleicht etwas und springt dann zu einem anderen Ort. Was ist dort?
Wenn die Bedingung entscheidet, dass sie springen muss, verlässt sie einfach die Funktion und ändert nichts.
Wie schaffen wir es also, dass die Funktion immer verlassen wird?
Ändern Sie die
jz
Anweisung in einejmp
Anweisung, die immer den Sprung ausführt. Sie finden sie am relativen Versatz41BC10
. Wenn Ihr Programm unterschiedliche Offsets berechnet, müssen Sie wissen, dass es401000
als Grundlage verwendet wird, sodass wir durch Subtrahieren den absoluten Offset erhalten1AC10
.Bitte beachten Sie, dass das Ändern von
74
(JZ
) im Hex-Editor inE9
(JMP
) nicht funktioniert. Sie können dies nicht in einem Hex-Editor tun. Sie benötigen etwas, das den Code zerlegt und wieder zusammensetzt, aber das ist nicht unbedingt leicht zu finden (z. B. IDA Professional, für das die Leute tatsächlich bezahlen, kann keinen richtigen C-Code oder eine ausführbare Datei erstellen. OllyDBG, das häufig in der Patch-Community verwendet wird, kann die ausführbare Datei nicht einmal öffnen.). Und dann könnte Microsoft sogar seine ausführbare Datei vor Manipulationen schützen, da dies gegen die EULA in Betracht gezogen werden könnte. also viel Glück!Meh! Das ist schwer, ich möchte nur schnell mit meiner Maus / Augen / ...
Sie sollten sich unbedingt Dasher ansehen, das viel schneller ist als eine Bildschirmtastatur. Es funktioniert einfach, indem Sie Ihre Maus in Richtung Buchstaben bewegen. Die horizontale Bewegung bestimmt die Geschwindigkeit und die vertikale Bewegung wählt die Buchstaben aus. Mit einem eingebauten Wörterbuch können sogar die wahrscheinlichsten Buchstaben größer werden. Außerdem wird versucht, aus Ihrer Bewegung zu lernen, sodass die Geschwindigkeit und die Buchstaben wirklich an Ihre Verwendung gewöhnt sind.
Ein Bild sagt mehr als tausend Worte ...
Natürlich ist dies eher klein und nicht sehr schnell, da es sich um ein Beispiel handelt, aber Sie können die Größe so ändern, dass es sich auf der rechten Seite Ihres Bildschirms befindet, sodass es Ihren Bildschirm nicht beeinträchtigt. So können Sie so schnell wie möglich tippen ...
Hier ist ein gutes Beispiel dafür, wie Sie mit den Vorhersagen eine Sprache schneller eingeben können:
Beachten Sie auch, dass die Buchstaben rechts in einer bestimmten Reihenfolge sortiert sind, sodass die Hauptrichtung (oben, in der Mitte oder unten) zwischen den verschiedenen Typen (Kleinbuchstaben, Großbuchstaben, Zahlen und Interpunktion) wählt. und dann wählt Ihre Nebenrichtung innerhalb einer solchen Hauptrichtung zwischen AZ, az, 0-9 und so weiter. Ich habe dies in der Vergangenheit verwendet und war tatsächlich erstaunt, wie fließend dies im Vergleich zu anderen Wettbewerbern ist ...
Beachten Sie auch, dass Dasher eine Konfiguration hat, sodass Sie möglicherweise etwas anpassen können, das Ihnen nicht gefällt.
quelle
Using Process Monitor, digging into the for the ETL event reading out that value stack trace gives us:
Sie gewusst, dass ich den Stack-Trace auf das ETL-Ereignis überprüft habe. Ich denke, Sie sprechen hier über Ihre eigenen Antworten? Aufgrund der hohen Antwortmenge fehlt Ihren Antworten ernsthaft die Qualität. Erwägen Sie, Ihre Antworten zu verbessern und / oder zu entfernen, anstatt schnelle und schmutzige Antworten oder dumme Kommentare zu platzieren, die nicht die Absicht haben, die Fragen und Antworten zu verbessern. Sie können sich vorstellen, welcher Ansatz der Community am meisten helfen wird ...The decompilation help. Once located, you should patch the binary code.
nützlich Ihre ist, ich würde lieber eine ultralange Übung zum Mitnehmen als ein Kratzen der Haare bevorzugen ...Ich befürchte, dass die meisten Dekompiler kein ausreichend gutes Ergebnis liefern, das neu kompiliert werden kann.
Die Dekompilierung kann nur dazu beitragen, den verwendeten Bereich genau zu bestimmen
HKEY_CURRENT_USER\Software\Microsoft\Osk\HoverPeriod
, um herauszufinden, wo dieser Wert gelesen wird und wo die 500-ms-Grenze erzwungen wird.Nach dem Auffinden sollten Sie den Binärcode patchen, um den Test zu deaktivieren und zu erzwingen, dass HoverPeriod kleiner wird. Das Patchen der Binärdatei ist viel praktikabler als das Neukompilieren.
Möglicherweise müssen Sie die Bemühungen wiederholen, wenn osk.exe jemals durch Windows Update ersetzt wird (was ich nicht wirklich erwarte).
[BEARBEITEN]
Um Ihnen auf dem Weg mehr zu helfen, finden Sie hier einige Worte zu Dienstprogrammen und deren Verwendung.
Sie können entweder einen C-Dekompiler oder einen Disassembler verwenden. Der spätere Typ kann nützlicher sein, erfordert jedoch einige geringe Kenntnisse des Intel-Befehlssatzes. Sie benötigen außerdem einen guten Hex-Editor, und es gibt einige, die für Disassembler-Funktionen werben (siehe Link unten).
Das Projekt fenris bewirbt sich als "Suite von Tools, die für Code-Analyse, Debugging, Protokollanalyse, Reverse Engineering, Forensik, Diagnose, Sicherheitsüberprüfungen, Schwachstellenforschung und viele andere Zwecke geeignet sind". Klingt gut und wird von vielen empfohlen, aber ich habe keine Erfahrung damit.
REC Studio Decompiler versucht, eine C-ähnliche Darstellung des Codes und der Daten zu erstellen, die zum Erstellen der ausführbaren Datei verwendet werden.
Boomerang ist ein allgemeiner Open-Source-Dekompilierer für Maschinencode-Programme.
Viele weitere solcher Dienstprogramme können durch Googeln oder in:
wikibooks x86 Demontage- /
Analysetools wikibooks x86 Demontage- / Demontage- und Dekompilierer
Open Directory: Disassembler
Ein erster Schritt ist die Demontage von osk. Die resultierende Auflistung ist möglicherweise umfangreich und erfordert einen guten Texteditor (normalerweise reicht Notepad ++ aus).
Suchen Sie nach der Zeichenfolge "HoverPeriod" (Groß- und Kleinschreibung wird nicht berücksichtigt). Wenn Sie Glück haben, hat der Disassembler es als Zeichenfolge identifiziert und Sie können es so finden, wie es ist. Wenn nicht, müssen Sie Byte für Byte danach suchen. Als Unicode-Zeichenfolge sieht es so aus, als ob
H,0,o,0,v,0...
die Buchstaben durch ihre numerischen Codes ersetzt werden sollen.Sobald Sie die Zeichenfolge "HoverPeriod" gefunden haben, sollte der Disassembler irgendwo davor eine Beschriftung platziert haben. Verwenden Sie den Namen dieses generierten Labels, um zu suchen, wo es verwendet wird, um festzustellen, wo es aus der Registrierung abgerufen wird und in welcher globalen Variablen das Ergebnis gespeichert ist.
Wenn Sie die Variable gefunden haben, die die Anzahl enthält, suchen Sie, wo sie verwendet wird. Was Sie tun, hängt vom Format des Codes ab, den Sie finden. Sie können sich dann für den gewünschten Patch entscheiden.
Beispielsweise möchten Sie möglicherweise den Hex-Editor verwenden, um in osk.exe einen Befehl wie den folgenden zu ersetzen:
in
Seien Sie vorsichtig mit unterschiedlichen Befehlslängen. Wenn der neue Befehl kürzer ist, muss er mit Ein-Byte-NOP-Befehlen (keine Operation) auf die Länge des alten Befehls aufgefüllt werden.
Um den Befehl zum Patchen in osk.exe zu finden, muss möglicherweise gesucht werden, ob die vom Disassembler angegebenen Offsets im Code und nicht in der exe-Datei enthalten sind. Wenn der Hex-Editor die Assembler-Suche nicht unterstützt, führen Sie die Disassemblierung durch, während Sie die ursprünglichen Anweisungsbytes auflisten, damit Sie wissen, nach welchen Binärbytes Sie suchen müssen. Vermeiden Sie die Suche nach Anweisungen, die Adressen enthalten, da Adressen möglicherweise in der exe verschoben werden. Suchen Sie daher lieber nach einer Folge von Bytes in der Nähe einer solchen Anweisung.
Sie können die neuen Patch-Bytes entweder direkt im Hex-Editor erstellen, wenn dieser Assembler unterstützt. Wenn dies nicht der Fall ist und Sie sich mit Intel-Maschinencode nicht wohl fühlen, suchen Sie einen Assembler, um Ihren neuen Code zu kompilieren, und verwenden Sie seine Liste, um die kompilierten Bytes zum Patchen zu erhalten.
quelle
Darf ich vorschlagen, AutoIt zu verwenden, um das Klicken zu automatisieren?
Die Idee wäre, den Mausleerlauf zu überwachen, wenn sich der Cursor im Bildschirmfenster befindet (z. B. in einem Regelkreis, in regelmäßigen Abständen prüfen, ob sich die Position des Cursors geändert hat) und nach beispielsweise 100 ms automatisch zu klicken (Funktion SendClick aufrufen) der Inaktivität.
Beats Reverse Engineering einer .exe.
quelle
Vielleicht müssen Sie nicht alles neu kompilieren. In der Spielwelt ist es üblich, Trainer zu verwenden, die einen Wert im Speicher manipulieren, wenn das Programm ausgeführt wird. Wenn Sie den Mindestwert im Speicher (0,5) finden und so etwas wie einen Loader programmieren, um diese Zahl zu verkleinern, könnte dies funktionieren.
quelle
500
stattdessen suchen, da es auf diese Weise geladen wird und nicht als Float.osk.exe
nicht in der Prozessliste enthalten ist. Dies liegt daran, dass es im Kontext gestartet wird,winlogon
sodass es benutzerübergreifend funktioniert. Sie können dies umgehen, indem Sie den Speichereditor auch im Kontext von startenwinlogon
.osk.exe
jedoch nur, wenn Sie einen Launcher erstellen, der sowohl den Speichereditor als auch startet die gesichertosk.exe
. Aber dann müsste man bedenken, dass ein Lader das auch tun müsste. Scheint, dass diese Lösung so schwer wird wie das Zerlegen und Zusammenbauen,osk.exe
ist schwer ... :)