CoD-BlackOps - OneHitKill - Druckversion +- Home of Gamehacking - Archiv (http://archiv-homeofgamehacking.de) +-- Forum: Gamehacking (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=3) +--- Forum: Gamehacking (http://archiv-homeofgamehacking.de/forumdisplay.php?fid=6) +--- Thema: CoD-BlackOps - OneHitKill (/showthread.php?tid=1289) |
|||||
RE: CoD-BlackOps - OneHitKill - iNvIcTUs oRCuS - 21.12.2012 Ja okay vielleicht hab ich das nicht weiter ausführlich erläutert... Wenn ich z.B. einen One Hit Kill versuche zu realisieren dann folgendermaßen... 1. Suche ich die Adresse des Spielers 2. Suche ich die Befehle raus die auf diese Adresse zugreifen - das geschieht per Rechtsklick auf die Adresse und "Find out what accesses..." 3. Dann lasse ich mir anzeigen welche Adressen alle durch einen Befehl laufen. - Das geschieht im Memory Fenster mit einem Rechtsklick auf den jeweiligen Befehl und "Find out what addresses this instruction accesses" 4. Dabei taucht dann meistens auch eine gegnerische Adresse auf. 5. Mit dieser Adresse verfahre ich ebenfalls nach den obigen Punkt 2 Das einfachste ist dann natürlich wenn jetzt Befehle auftauchen die nur für gegnerische Adresse gelten. Wenn nicht dann muss die Speicher Struktur analysiert werden. Das hört sich zwar erstmal schwierig an isses aber eigentlich nicht, weil Cheat Engine ja auch schon Möglichkeiten mitbringt die einem wahnsinnig weiterhelfen und eben den Vorteil gegenüber eines reinen Debuggers ausspielen. Mal sehen, vielleicht mach ich auch noch ein Tutorial eines One Hit Kills wo ich das anhand meiner Erläuterung zeige... RE: CoD-BlackOps - OneHitKill - Struppi - 21.12.2012 In CheatEngine sieht das bei mir nun so aus... [code=ASM] [ENABLE] alloc(newmem,12288) label(originalcode) label(returnhere) label(exit) newmem: cmp eax,01AFFFD4 mov dword ptr[eax+0x184],0x0 originalcode: sub [eax+0x184],ebx mov eax,[esp+24] movzx ecx,word ptr[esp+28] exit: jmp returnhere "BlackOps.exe"+3CE3E1: jmp newmem nop returnhere: [DISABLE] dealloc(newmem) "BlackOps.exe"+3CE3E1: sub [eax+0x184],ebx [/code] Klappt alles wunderbar, aber CodeCave für VB funktioniert irgendwie nicht. Also da stürzt das Spiel ab und über CheatEngine nicht. RE: CoD-BlackOps - OneHitKill - iNvIcTUs oRCuS - 21.12.2012 Ich gehe mal davon aus das deine Codecave in VB genauso aussieht?! Müsste man nur noch wissen wo Deine Codecave geschrieben wird. Es könnte durchaus sein das Du bzw. Dein Trainer keine Schreibrechte auf diesen Speicherbereich hat. Oder Du hast noch nen Fehler mit den Sprüngen drin... RE: CoD-BlackOps - OneHitKill - DNA - 21.12.2012 Geht übrigens auch anders: [code=ASM] [ENABLE] //code from here to '[DISABLE]' will be used to enable the cheat alloc(newmem,2048) //2kb should be enough label(returnhere) label(originalcode) label(exit) newmem: mov ebx,(int)999999 originalcode: sub [eax+00000184],ebx exit: jmp returnhere "BlackOps.exe"+3CE3E1: jmp newmem nop returnhere: [DISABLE] //code from here till the end of the code will be used to disable the cheat dealloc(newmem) "BlackOps.exe"+3CE3E1: sub [eax+00000184],ebx //Alt: db 29 98 84 01 00 00[/code] Was genau funktioniert denn bei VB nicht? RE: CoD-BlackOps - OneHitKill - Struppi - 21.12.2012 Also für VB sieht das so aus... Code:
RE: CoD-BlackOps - OneHitKill - Acubra - 21.12.2012 Hey, bist du sicher das der "Compare-Befehl" wirklich von Nöten ist? Anscheinend laufen durch diesen Opcode doch nur die Adressen der Gegner, also musst du gar nicht entscheiden ob Gegner oder Spieler von diesem Befehl betroffen ist. Auch führst du keinen Conditional Jump nach dem Compare aus, also du vergleichst zwar zwei Sachen, fängst aber mit der Information nichts weiter an. Du veränderst somit auch unnötigerweise das z-Flag. Außerdem setzt du die Gegner Hp auf 0, bevor ebx davon abgezogen wird. Dies könnte bei manchen Spielen zu Problemen führen, die nicht "wissen" wie man mit negativen Werten umgeht. Zu deinem Crashproblem kann ich dir nicht helfen. RE: CoD-BlackOps - OneHitKill - iNvIcTUs oRCuS - 21.12.2012 Und der Sprung vom Originalcode führt auch wirklich zur Codecave? Was ich aber eher glaube ist das der Jump aus der Codecave zurück zum Originalcode falsch ist. RE: CoD-BlackOps - OneHitKill - DNA - 22.12.2012 Ich lege dir die Ratschläge von Acubra und silent ans Herz ... Nimm das von mir gepostete Script, da in deinem Script viel unnötiges ist, was das Spiel leicht zum crashen bringen kann, wie Acubra bereits schrieb. Wenn das Spiel mit deinem VB Code abstürzt, dann scheint irgendwas mit der Codecave nicht zu stimmen, da du den Originalcode nicht durch einen JMP überschreibst ... du überschreibst den Originalcode durch den Originalcode Code:
Code:
RE: CoD-BlackOps - OneHitKill - Struppi - 22.12.2012 Also TMKtoVB 2.0 benutze ich und da ist folgende auswertung: [code=VB] Dim caveaddr = &H00400348 Dim origaddr = &H007CE3E1 RemoveProtection (ProcName, caveaddr, 32) Dim cavebytes() As Byte = {&H3D, &HD4, &HFF, &HAF, &H01, &HC7, &H80, &H84, &H01, &H00, &H00, &H01, &H00, &H00, &H00, &H29, &H98, &H84, &H01, &H00, &H00, &HE9, &H85, &HE0, &H3C, &H00, &HE9, &H62, &H1F, &HC3, &HFF, &H90} Dim origbytes() As Byte = {&H29, &H98, &H84, &H01, &H00, &H00} autopatcher (caveaddr,cavebytes) autopatcher (origaddr,origbytes) [/code] In VB sieht es so aus: [code=VB] #Region "OneHitKill" Private Sub Timer6_Tick(sender As System.Object, e As System.EventArgs) Handles Timer6.Tick 'OneHitKill. If GetAsyncKeyState(VK_NUMPAD3) Then GetProcessId(ProcName) If OneHitKill = 0 Then Dim caveaddr = &H400348 RemoveProtection(ProcName, caveaddr, 32) Dim cavebytes() As Byte = {&H3D, &HD4, &HFF, &HAF, &H1, &HC7, &H80, &H84, &H1, &H0, &H0, &H1, &H0, &H0, &H0, &H29, &H98, &H84, &H1, &H0, &H0, &HE9, &H85, &HE0, &H3C, &H0, &HE9, &H62, &H1F, &HC3, &HFF, &H90} autopatcher(caveaddr, cavebytes) OneHitKill = 1 ElseIf OneHitKill = 1 Then Dim origaddr = &H7CE3E1 Dim origbytes() As Byte = {&H29, &H98, &H84, &H1, &H0, &H0} autopatcher(origaddr, origbytes) OneHitKill = 0 End If End If End Sub #End Region [/code] Poke: Code:
RE: CoD-BlackOps - OneHitKill - DNA - 23.12.2012 Das ist klar, da du mit VB auch nur die Codecave schreibst, aber nicht den Sprung vom Originalcode dorthin Versuch das mal: [code=VB]Private Sub Timer6_Tick(sender As System.Object, e As System.EventArgs) Handles Timer6.Tick 'OneHitKill. If GetAsyncKeyState(VK_NUMPAD3) Then GetProcessId(ProcName) If OneHitKill = 0 Then Dim caveaddr = &H400348 Dim origaddr = &H7CE3E1 RemoveProtection(ProcName, caveaddr, 32) Dim cavebytes() As Byte = {&H3D, &HD4, &HFF, &HAF, &H1, &HC7, &H80, &H84, &H1, &H0, &H0, &H1, &H0, &H0, &H0, &H29, &H98, &H84, &H1, &H0, &H0, &HE9, &H85, &HE0, &H3C, &H0, &HE9, &H62, &H1F, &HC3, &HFF, &H90} Dim origbytes() As Byte = {&HE9, &H61, &H1F, &HC3, &HFF, &H90} autopatcher(caveaddr, cavebytes) autopatcher(origaddr, origbytes) OneHitKill = 1 ElseIf OneHitKill = 1 Then Dim origaddr = &H7CE3E1 Dim origbytes() As Byte = {&H29, &H98, &H84, &H1, &H0, &H0} autopatcher(origaddr, origbytes) OneHitKill = 0 End If End If End Sub[/code] Noch eine kurze Frage ... nimmst du für jeden Hotkey einen extra Timer? |