Nun, ich habe IDA und Cheat Engine. Ich versuche die Auflösung der Anwendung zu ändern, eigentlich nur die Breite und Höhe des Fensters. Ich weiß, dass das Ändern der Breite und Höhe die Anwendung nicht richtig funktionieren lässt, aber es ist mein erster Schritt, um Disassembler zu verstehen. Nach nicht langer Suche habe ich die Funktion CreateWindowEx gefunden. Nun, sieht aus wie ich gefunden, wenn die Anwendung erstellen Fenster,Ändern der Fensterbreite und -höhe durch Disassembler
push 1E0h
push 280h
…. ;some code
mov esi, ds:GetSystemMetrics
push 0 ;nIndex
call esi ;GetSystemMetric
push 1 ;nIndex
move edi,eax
call esi ;GetSystemMetrics
... ;somecode
call ds:CreateWindowExA
gut push 1E0h
= 480 und push 280h
= 640. Hm, sehe aus wie ich Breite und Höhe gefunden habe, also habe ich Adressen von Konstanten bekommen, lass sie versuchen sie zu ändern. (Eigentlich finde ich bei der Suche zwei weitere Orte mit dieser Konstante. Aber alle werden nicht zum Erstellen von Fenstern verwendet, und da ich nur versuche, Fensterhöhe und -breite zu ändern, arbeite ich mit diesen). Anwendung ausführen und Engine betrügen.
Hex-Wert: 280 (1E0) Scan-Typ: Genauer Wert Typ: 4bytes
Erster Scan: gefunden 33
Blick auf der Liste der Adresse nicht von ihnen auch nur annähernd an die Adresse, die wir hatte in IDA. Und wenn ich es richtig verstehe, weil die Cheat-Engine Adressen aus dem Speicher holt, die zum Ausführen der Anwendung verwendet werden, während IDA den Code analysiert und Adressen darin findet. Ich weiß nicht, ob ich es richtig oder falsch gesagt habe, jede Erklärung von deiner Seite wird gut sein. Aber das Problem ist nicht dabei.
Nun lassen Sie Adresse manuell hinzufügen. Ok wir haben es, und der Wert auf dieser Adresse ist 163944. Was? Schauen wir uns hexadezimal an: 00028068. Hm, ich sehe die 280 drauf, aber woher kommt die 68? Schauen wir uns die Höhe an: 122984-> 0001E068.
So jetzt habe ich eine Frage, warum es so ist? Woher kam diese 68 am Ende? 1E0 ist nicht gleich 1E068. Liege ich falsch? Irgendwelche Vorschläge was ich vermisst habe.
Ok, lass weitergehen, lass es versuchen, es zu ändern. Nun, ich habe zwei Varianten in Hexadezimal: 50068 und 3C068 gebunden. Und ohne 68, wie soll es eigentlich sein (meiner Meinung nach :)). Keiner von ihnen funktioniert nicht, gut, ich denke, es ist wahrscheinlich, weil die Anwendung später durch Zeiger konstant verwendet wird (ich denke, aber wahrscheinlich bin ich falsch). Also muss ich auch die Zeiger ändern. Lassen Sie finden, was auf diese Adressen zugreift. Nun, jetzt habe ich ein Problem, in einfacher Variante, um herauszufinden, was auf diese Adressen zugreifen Sie müssen nur ändern Bedingung in Ihrer Anwendung sagen wir Wert = 5, klicken Sie auf den Button Wert ändern Wert = 3 und cheat Engine finden, was haben Zugang zu dieser Adresse. In meinem Fall wurde das Fenster jedoch bereits erstellt und ich weiß nicht, wie ich diese Liste bekommen soll. Jetzt bin ich irgendwie in diesem Punkt steckengeblieben. Vielleicht habe ich etwas verpasst. Aber jeder Vorschlag, in welche Richtung ich mich bewege oder was ich falsch mache, wird helfen.