Home of Gamehacking - Archiv
Platzhalter - Druckversion

+- Home of Gamehacking - Archiv (http://archiv-homeofgamehacking.de)
+-- Forum: Coding (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=15)
+--- Forum: Visual Basic 6, VB.NET (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=19)
+--- Thema: Platzhalter (/showthread.php?tid=835)



Platzhalter - chesar - 03.01.2012

Moin Leute Folgendes,
Ich möchte paar Objekte freischalten, jedes Byte steht für ein Objekt.
0 = Aus / 7 = Ein

Wenn ich jetzt Objekt 2 Freigeschaltet habe wir Objekt 1 wieder auf 0 gesetzt.
Gibt es da eine Möglichkeit das er Objekt 1 z.b. Überspringt? also nichts schreibt so das es bleibt wie es ist.
Kein Nop....

Zitat:{&H0, &H7, &H0, &H0, &H0, &H0, &H0}

Hoffe das war einigermaßen verständlich :s

Mfg




RE: Platzhalter - Bluespide - 07.01.2012

Ich verstehe nicht so ganz dein Problem. Du kannst doch einzelne Bytes schreiben.


RE: Platzhalter - chesar - 07.01.2012

(07.01.2012, 09:14)Bluespide schrieb: Ich verstehe nicht so ganz dein Problem. Du kannst doch einzelne Bytes schreiben.

Aber wenn ich doch einzelne Bytes schreibe an der Adresse, dann ändert sich doch immer nur das erste Objekt oder ihre ich mich da?



RE: Platzhalter - iNvIcTUs oRCuS - 07.01.2012

Seit wann denn das? Eine Adresse ist immer absolut... Kommt nur drauf an in welcher Größe draufzugegriffen wird. Also Byte, 2 Byte (Word), 4 Byte (DWord) oder 8 Byte (QWord)...


RE: Platzhalter - chesar - 07.01.2012

(07.01.2012, 18:13)sILeNt heLLsCrEAm schrieb: Seit wann denn das? Eine Adresse ist immer absolut... Kommt nur drauf an in welcher Größe draufzugegriffen wird. Also Byte, 2 Byte (Word), 4 Byte (DWord) oder 8 Byte (QWord)...

Also ich habe nur eine Adresse und viele Bytes für jedes Byte steht ein Objekt.


Code:
<DllImport("kernel32.dll")> _
   Public Shared Function WriteProcessMemory(ByVal hProcess As IntPtr, ByVal lpBaseAddress As IntPtr, ByVal lpBuffer As Byte(), ByVal nSize As System.UInt32, <Out()> ByRef lpNumberOfBytesWritten As IntPtr) As Boolean
    End Function
Dim ob As Byte() = {&H0, &H0, &H0, &H0, &H0, &H0}
WriteProcessMemory(p(0).Handle, &H1CD016E, ob, ob.Length, 0)



Wenn ich jetzt das erste OB (Objekt) Freischalte schreibe ich es so:

Code:
  Dim ob As Byte() = {&H7, &H0, &H0, &H0, &H0, &H0}
WriteProcessMemory(p(0).Handle, &H1CD016E, ob, ob.Length, 0)


Das Zweite dann so:

Code:
  Dim ob As Byte() = {&H0, &H7, &H0, &H0, &H0, &H0}
WriteProcessMemory(p(0).Handle, &H1CD016E, ob, ob.Length, 0)


Aber er setzt OB 1 wieder auf Null da: &H0 ist.
Es soll aber auch freigeschaltet bleiben, ich möchte jedes OB einzeln auswählen können.





RE: Platzhalter - iNvIcTUs oRCuS - 07.01.2012

Jedes einzelne Byte steht für eine einzelne Adresse im Speicher. Du musst also Byteweise schreiben und nicht immer 6 Bytes auf einmal. Das kann so nicht funktionieren.
Nachteil... Ich bin da der falsche dafür... Soll heißen, das ich nicht weiß wie das in VB geschrieben wird.
Aber soviel dazu... Das erste Byte hat Adresse 0x1CD016Eh, das zweite Byte hat Adresse 0x1CD016Fh ... und das letzte Byte, also das sechste, hat Adresse 0x1CD0173h.


RE: Platzhalter - chesar - 07.01.2012

EDIT/ so wie es aussieht, habe ich es mit einer Code Injection hin bekommen.

So weit habe ich es verstanden,
das Problem ist ändere ich von OB1 das Value und dann von OB2 wird automatisch das Value von OB4 geändert.

Sprich ich kann nicht jedes OB einzeln Ein bzw. Aus schalten.


RE: Platzhalter - iNvIcTUs oRCuS - 07.01.2012

Und wie sieht Deine Codeinjection aus?