Frage zum Auslesen von Bildschirminhalten
-
/rant/ schrieb:
no_code schrieb:
no_code schrieb:
für windows schau dir doch mal das masm packet durch da ist ein programm dabei das den bildschirm "dreht" das sollte alles können was du brauchst.
btw doping bringt fei beim programmieren nix :p
wtf?`es ist noch früh am morgen, aber du zitierst hier dich selbst, nicht?
ja klar, soll ich das nochmal abschreiben? steht doch alles drin was er wissen muß
btw. wenn er zu lazy ist um sich die masm beispiele durchzuschauen ist er im assembler forum eh falsch...
-
nee sry no_code.
als ich meinen 2ten Post gemacht hab konnte ich deinen irg wie noch gar nicht sehen. .... ^^ hab wohl so lange mit dem schreiben gebraucht. Ich geh jetzt erst mal essen und dann schau ich mich mal bei dem MASMPacket um.
Auch für die anderen Antworten vielen dank.
Ich meld mich wieder wenn ich weitere hilfe brauch.
MFG euer absolut Dopingfreier JanUlrich xD
EDIT: hier mein bisheriger Code:(ist mit dem Compiler WinAsm gemacht, hoffe ihr kommt damit zurecht)
.386 .model flat, stdcall option casemap:none include windows.inc include kernel32.inc include user32.inc includelib kernel32.lib includelib user32.lib include gdi32.inc includelib gdi32.lib .data WindowClassName db 0 WindowName db 0 MsgBoxCaption db "Pixel an Stelle 300,300",0 MsgBoxText db 0 MsgBoxTextAddr dd MsgBoxText .code start: invoke FindWindow,addr WindowClassName,addr WindowName invoke GetDC,eax invoke GetPixel, eax,300d,300d mov dword ptr [MsgBoxText],eax ;es wird einfach der komplette eax Wert in den String kopiert. invoke MessageBox, NULL, addr MsgBoxText, addr MsgBoxCaption, MB_OK invoke ExitProcess,0 end start
Dazu hab ich noch eine weitere Frage. Wie macht ihr es denn wenn ihr einen Integer wert als Dezimalzahl in einer MsgBox ausgeben wollt.
Also wenn ich in einer Variable den Wert A03h gespeicher habe will ich ne Funktion schreiben die dann eine MSGBox Mit dem inhalt : "2563" erstellt. Ein kleiner Tip für so etwas wäre nett.MFG JanUlrich
-
JanUlrich:
Hattest du einen konkreten Grund, deine Frage im Assembler-Forum zu stellen? So weit sehe ich keinen Zusammenhang mit Assembler, ausser vielleicht dem weit verbreiteten Irrglauben auch nur leicht speziellere Hardware-I/O-Operationen seien nur via Assembler moeglich.Falls das oder Aehnliches zutrifft, ist dein Thema im Spiele-/Grafikprogrammierung-Forum sicher besser aufgehoben.
-
Nein ich wollte eigentlich nur ASM lernen (zwecks reversing ; was, wie ich gehört habe nur mit ASM kentnissen funktionieren soll) und das geht am besten mit praktischer Anwendung. Deshalb dachte ich, wenn ich schon etwas in ASM proggen will dann auch etwas das bei mir Verwendung findet und deswegen wollte ich eine abgewandelte Version der ImageSearch.dll machen (was in C genauso gehen würde ich aber Assembler lernen will). xD
-
vorsicht masm ist ein makro assembler, daher wäre es fürs reversen fast günstiger sich danach noch decompilierten c code anzuschauen
-
Naja, es wird reichen, wenn du ein Gefuehl fuer Assembler hast und die Grundlagen kennst. Dann waere es sicher hilfreich, wenn du viel mit Debuggern arbeitest. Z.B. an von dir erstellten Asm-Programmen, aber auch an anderen Programmen.
MASM mag zur produktiven Arbeit vielleicht nett sein, da MASM-Code aber auch gern mal wie Hochsprachencode aussieht, ist dieser Assembler zum Einstieg vielleicht tendenziell weniger geeignet.
-
Jo ich schau mir ja auch oft den Code mit OllyDbg an oder löse CrackMe s.
Trotzdem will ich etwas mit MASM programmieren.
-
JanUlrich schrieb:
Ein kleiner Tip für so etwas wäre nett.
http://www.asmcommunity.net/board/index.php?topic=28368.msg200778#msg200778
-
JanUlrich schrieb:
Dazu hab ich noch eine weitere Frage. Wie macht ihr es denn wenn ihr einen Integer wert als Dezimalzahl in einer MsgBox ausgeben wollt.
Also wenn ich in einer Variable den Wert A03h gespeicher habe will ich ne Funktion schreiben die dann eine MSGBox Mit dem inhalt : "2563" erstellt. Ein kleiner Tip für so etwas wäre nett.MFG JanUlrich
Aber auch nur ein kleiner Tip :
wenn man den Hexwert in AX mit dem Befehl Div durch eine Zahl dividiert, dann landet der Rest in Dx.
Aber: DX muss vor jeder Division initialisiert werden (=0).
-
Nobuo T schrieb:
MASM mag zur produktiven Arbeit vielleicht nett sein, da MASM-Code aber auch gern mal wie Hochsprachencode aussieht, ist dieser Assembler zum Einstieg vielleicht tendenziell weniger geeignet.
man muss es einfach lieben
include masm32rt.inc .data? sz db 256 dup (?) .code start: fn MessageBox,0,cat$(ADDR sz,"RGB: 0x",hex$(rv(GetPixel,rv(GetDC,0),300,300))),"Titel", MB_OK invoke ExitProcess,0 end start
-
Ich schmeiss mich weg! Das nenne ich ein gelungenes Beispiel! Damit haette sich das Thema ja dann wohl erledigt.
-
wieso heißt es hier "fn" und nicht "invoke"
-
no_code schrieb:
wieso heißt es hier "fn" und nicht "invoke"
fn ist ein macro, genau wie rv,cat$ und hex$.