Перейти к содержанию

[Inquisitor Martyr] быстрое убийство


Рекомендуемые сообщения

Спойлер

 


// Player Hero at Mission (all the time)
_MonPlayerHero:
 mov [pHero],r14

_ExitMPH:
 lea rcx,[r14+00000688]            // Original code
 jmp _BackMPH                      // Back to main code

//========================================= 200b #
// During Mission (Health points)
_GodMode:
 mov [pLast],rcx
 movss [fLast],xmm1

 cmp rcx,[pHero]
 je _GodMD00

 mov rax,[rcx+00000658]
 test rax,rax
 jz _ExitGMD

 cmp byte ptr [rax+00000174],00
 jne _GodMD01

 cmp dword ptr [iEnableGMO],0
 je _ExitGMD                       // Jump if feature is disabled

_GodMD00:
 cmp dword ptr [iEnableGMD],0
 je _ExitGMD                       // Jump if feature is disabled

 maxss xmm1,[fSmallval]
 jmp _ExitGMD
//--
_GodMD01:
 cmp dword ptr [iEnableMQK],0
 je _ExitGMD                       // Jump if feature is disabled

 minss xmm1,[fBigVal]

_ExitGMD:
 mov rsi,r9                        // Original code
 mov r13,r8                        // Original code
 jmp _BackGMD                      // Back to main code
//---------------
fSmallval:
 dd (float)0.0001
fBigVal:
 dd (float)-16800.0

 

 

 

Скрипт взят с fearlessrevolution.com

 

С первоначальным автором скрипта (для версий до 2.0.0b) связаться не удалось, поэтому пытаюсь сам понять ход его действий, выходит так себе.

 

К сути. Есть участок кода, отвечающий за бессмертие и быстрое убийство.Чтобы не подыхать на старте задания от действия скрипта происходит проверка "на миссии ли игрок", далее каким то образом происходит проверка "свой чужой". При просмотре адресов и структур, с которыми взаимодействуют приведенные строки кода вменяемая картина тоже не вырисовывается. Значения адресов, с которыми происходит взаимодействие, с каждым шагом приобретают рандомные значения и понять к чему они относятся не удается.

 

Попытка поиска функций чтения-записи здоровья по поиску экранных значений так же ни к чему не привели - поиск находит 0 адресов по поиску по значению, а тот float, который изменяется от 0 до 1, не помог как точка отсчета.

 

Итого:

1. Непонятно к чему именно создатель чита привязался для проверки "игрок на миссии".

2. Как он вышел на приведенную функцию и почему использует метод "наибольшее" для бессмертия и "наименьшее" для быстрого убийства.

Ссылка на комментарий
Поделиться на другие сайты

 

Полный листинг:

Спойлер

<?xml version="1.0" encoding="utf-8"?>
<CheatTable CheatEngineTableVersion="28">
  <CheatEntries>
    <CheatEntry>
      <ID>0</ID>
      <Description>"CompactMode"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
LuaCall(function cycleFullCompact(sender,force) local state = not(compactmenuitem.Caption == 'Compact View Mode'); if force~=nil then state = not force end; compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'; getMainForm().Splitter1.Visible = state; getMainForm().Panel4.Visible    = state; getMainForm().Panel5.Visible    = state; end; function addCompactMenu() if compactmenualreadyexists then return end; local parent = getMainForm().Menu.Items; compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem); compactmenuitem.Caption = 'Compact View Mode'; compactmenuitem.OnClick = cycleFullCompact; compactmenualreadyexists = 'yes'; end; addCompactMenu(); cycleFullCompact(nil,true))

[DISABLE]
LuaCall(cycleFullCompact(nil,false))
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>141</ID>
      <Description>"[X] &lt;== Warhammer Inquisitor - Martyr v2.1.0b Steam"</Description>
      <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
      <LastState Activated="1"/>
      <Color>FF0000</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{
===========================================
 Game Title    : Warhammer 40K Inquisitor Martyr
 Game Version  : 2.1.0b
 Game Sponsor  : Myself (with Patreon funds)
 Process Name  : Warhammer.exe
 Relevant Info : 64bits/RPG
 Authors       : Recifense / Zanzer / Gigex
 Features:
 - God Mode
 - Include companions (s1.1)
 - Adrenaline
 - Suppression Resistense
 - Unlimited Ammo
 - No Weapon Heat (new)(s2.0)
 - Quick Kill (new)(s3.0)
 - Quick Warp Heat recover (s4.5)
 - Movement Speed
 - Unlimited Zoom
 - No Cooldown

===========================================
}

[ENABLE]

AOBScanModule(MOPH,Warhammer.exe,49 8d 8e 88 06 00 00 e8 ?? ?? ?? ?? 44 0f 28 c0 49 8b 06 49 8b)
AOBScanModule(GDMD,Warhammer.exe,49 8b f1 4d 8b e8 0f 28 f9 48 8b f9 48 8b 01 ff 90 68 01 00 00)
AOBScanModule(MOHA,Warhammer.exe,45 8B F8 44 0F 28 C1 48 8B F9 4C 8D B1 30 0B 00 00 49 8B C6 B9)
AOBScanModule(MOHS,Warhammer.exe,48 8b 9b b0 0a 00 00 48 85 db ?? ?? 48 8d 4b 08 e8 ?? ?? ?? ?? f3)
AOBScanModule(MOPA,Warhammer.exe,48 8b f1 8b ea 48 83 c1 40 e8 ?? ?? ?? ?? 48 8b ce 8b d8 e8 ??)
AOBScanModule(MOWH,Warhammer.exe,48 89 5c 24 08 57 48 83 ec 40 48 8b d9 0f 29 74 24 30 0f 29 7c)
//=========================================
alloc(MyCode,4096,$process)
//=========================================

// Declaration section
label(_MonPlayerHero)
label(_BackMPH)
label(_GodMode)
label(_BackGMD)
label(_MonHeroAdrenaline)
label(_BackMHA)
label(_MonHeroSupression)
label(_BackMHS)
label(_MonPlayerAmmo)
label(_BackMPA)
label(_MonWeaponHeat)
label(_BackMWH)

label(iEnableGMD)
label(iEnableGMO)
label(iEnableMHA)
label(iEnableMHS)
label(iEnableMPA)
label(iEnableMWH)
label(iEnableMQK)
label(iEnableMHW)

label(pHero)
label(pCredits)
label(pHeroB)
label(pLast)
label(fLast)
label(fBigVal)
label(fSmallval)
label(fressourceinc)
label(fressourcedec)

//=========================================
// Registering Symbols
registersymbol(MyCode)
registersymbol(iEnableGMD)
registersymbol(iEnableGMO)
registersymbol(iEnableMHA)
registersymbol(iEnableMHS)
registersymbol(iEnableMPA)
registersymbol(iEnableMWH)
registersymbol(iEnableMQK)
registersymbol(iEnableMHW)
registersymbol(pHero)
registersymbol(pCredits)
registersymbol(pHeroB)
registersymbol(pLast)
registersymbol(fLast)
registersymbol(fBigVal)
registersymbol(fSmallval)

registersymbol(MOPH)
registersymbol(GDMD)
registersymbol(MOHA)
registersymbol(MOHS)
registersymbol(MOPA)
registersymbol(MOWH)

//=========================================
MyCode:
//========================================= 200b *
// Player Hero at Mission (all the time)
_MonPlayerHero:
 mov [pHero],r14

_ExitMPH:
 lea rcx,[r14+00000688]            // Original code
 jmp _BackMPH                      // Back to main code

//========================================= 200b #
// During Mission (Health points)
_GodMode:
 mov [pLast],rcx
 movss [fLast],xmm1

 cmp rcx,[pHero]
 je _GodMD00

 mov rax,[rcx+00000658]
 test rax,rax
 jz _ExitGMD

 cmp byte ptr [rax+00000174],00
 jne _GodMD01

 cmp dword ptr [iEnableGMO],0
 je _ExitGMD                       // Jump if feature is disabled

_GodMD00:
 cmp dword ptr [iEnableGMD],0
 je _ExitGMD                       // Jump if feature is disabled

 maxss xmm1,[fSmallval]
 jmp _ExitGMD
//--
_GodMD01:
 cmp dword ptr [iEnableMQK],0
 je _ExitGMD                       // Jump if feature is disabled

 minss xmm1,[fBigVal]

_ExitGMD:
 mov rsi,r9                        // Original code
 mov r13,r8                        // Original code
 jmp _BackGMD                      // Back to main code
//---------------
fSmallval:
 dd (float)0.0001
fBigVal:
 dd (float)-16800.0

//========================================= 200b * (s4.5)
// During Mission (Adrenaline) and (Warp Heat s4.5)
_MonHeroAdrenaline:
 cmp rcx,[pHero]
 jne _ExitMHA

 cmp dword ptr [iEnableMHA],0
 je _MonHA00                       // Jump if feature is disabled

 maxss xmm1,[fressourceinc]
 jmp _ExitMHA
//--
_MonHA00:
 cmp dword ptr [iEnableMHW],0
 je _ExitMHA                       // Jump if feature is disabled

 minss xmm1,[fressourcedec]

_ExitMHA:
 mov r15d,r8d                      // Original code
 movaps xmm8,xmm1                  // Original code
 jmp _BackMHA                      // Back to main code

 fressourceinc:
 dd (float)0.0001
fressourcedec:
 dd (float)-100.0

//========================================= 200b * (s2.1)(s4.1 fix)
// During Mission (Supression Resistense)
_MonHeroSupression:
 cmp dword ptr [iEnableMHS],0
 je _ExitMHS                       // Jump if feature is disabled

 cmp rbx,[pHero]
 jne _ExitMHS

 minss xmm6,[fMedVal]

_ExitMHS:
 mov rbx,[rbx+00000AB0]            // Original code
 jmp _BackMHS                      // Back to main code

fMedVal:
 dd (float)-1.00

//========================================= 104 X
// When updating Ammo
_MonPlayerAmmo:
 cmp dword ptr [iEnableMPA],0
 je _ExitMPA                       // Jump if feature is disabled

 cmp rsi,[pHero]
 jne _ExitMPA

 test edx,edx
 jns _ExitMPA

 xor edx,edx

_ExitMPA:
 mov rsi,rcx                       // Original code
 mov ebp,edx                       // Original code
 add rcx,40                        // Original code
 jmp _BackMPA                      // Back to main code

//========================================= new S2.0 104 X
// When updating weapon heat
_MonWeaponHeat:
 cmp dword ptr [iEnableMWH],0
 je _ExitMWH                       // Jump if feature is disabled

 ret
//--
_ExitMWH:
 mov [rsp+08],rbx                  // Original code
 jmp _BackMWH                      // Back to main code

//=========================================
align 10,'='
//=========================================
 db '===============================&gt;'
 db 'CE6.7 Script by Recifense 190621'
//=========================================
// Variables
iEnableGMD:
 dd 0
iEnableGMO:
 dd 0
iEnableMHA:
 dd 0
iEnableMHS:
 dd 0
iEnableMPA:
 dd 0
iEnableMWH:
 dd 0
iEnableMQK:
 dd 0
iEnableMHW:
 dd 0
pHero:
 dq 0
pCredits:
 dq 0
pVal:
 dq 0
pHeroB:
 dq 0
pRAX:
 dq 0
pLast:
 dq 0
fLast:
 dd 0

//=========================================
// Hacking Points
MOPH:
 jmp _MonPlayerHero
 nop
 nop
_BackMPH:

GDMD:
 jmp _GodMode
 nop
_BackGMD:

MOHA:
 jmp _MonHeroAdrenaline
 nop
 nop
_BackMHA:

MOHS:
 jmp _MonHeroSupression
 nop
 nop
_BackMHS:

MOPA:
 jmp _MonPlayerAmmo
 nop
 nop
 nop
 nop
_BackMPA:

MOWH:
 jmp _MonWeaponHeat
_BackMWH:

//=========================================
// Script for Restoring Original Codes
[DISABLE]
MOPH:
// 49 8D 8E 88060000     - lea rcx,[r14+00000688]
 db 49 8d 8e 88 06 00 00

GDMD:
// 49 8B F1              - mov rsi,r9
// 4D 8B E8              - mov r13,r8
 db 49 8b f1 4d 8b e8

MOHA:
// 45 8B F8              - mov r15d,r8d
// 44 0F28 C1            - movaps xmm8,xmm1

 db 45 8B F8 44 0F 28 C1

MOHS:
// 48 8B 9B B00A0000     - mov rbx,[rbx+00000AB0]
 db 48 8b 9b b0 0a 00 00

MOPA:
// 48 8B F1              - mov rsi,rcx
// 8B EA                 - mov ebp,edx
// 48 83 C1 40           - add rcx,40 { 64 }

 db 48 8b f1 8b ea 48 83 c1 40

MOWH:
// 48 89 5C 24 08        - mov [rsp+08],rbx
 db 48 89 5c 24 08

//=========================================
// Unregistering Symbols
unregistersymbol(MyCode)
unregistersymbol(iEnableGMD)
unregistersymbol(iEnableGMO)
unregistersymbol(iEnableMHA)
unregistersymbol(iEnableMHS)
unregistersymbol(iEnableMPA)
unregistersymbol(iEnableMWH)
unregistersymbol(iEnableMQK)
unregistersymbol(iEnableMHW)
unregistersymbol(pHero)
unregistersymbol(pCredits)
unregistersymbol(pHeroB)
unregistersymbol(fLast)
unregistersymbol(pLast)
unregistersymbol(fBigVal)
unregistersymbol(fSmallval)

unregistersymbol(MOPH)
unregistersymbol(GDMD)
unregistersymbol(MOHA)
unregistersymbol(MOHS)
unregistersymbol(MOPA)
unregistersymbol(MOWH)

//=========================================
dealloc(MyCode)
//============= Scripts End ===============

// ****************************************
// NOTES
// ****************************************
{
}

</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>242</ID>
          <Description>"pPlayer"</Description>
          <ShowAsHex>1</ShowAsHex>
          <VariableType>4 Bytes</VariableType>
          <Address>pHero</Address>
          <Offsets>
            <Offset>0</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>96</ID>
          <Description>"[X] &lt;== God Mode"</Description>
          <Options moHideChildren="1" moDeactivateChildrenAsWell="1"/>
          <LastState/>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[enable]
{$LUA}
writeInteger("iEnableGMD",1)
memrec.Color=0x0004000
{$ASM}

[disable]
{$LUA}
writeInteger("iEnableGMD",0)
memrec.Color=0x0c08000
{$ASM}

</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>248</ID>
              <Description>"Monster Damage (Positive value heals)"</Description>
              <LastState Value="0.00009999999747" RealAddress="7FF63D5100AE"/>
              <VariableType>Float</VariableType>
              <Address>fSmallval</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>142</ID>
          <Description>"[X] &lt;== Include Companions"</Description>
          <LastState/>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[enable]
{$LUA}
writeInteger("iEnableGMO",1)
memrec.Color=0x0004000
{$ASM}

[disable]
{$LUA}
writeInteger("iEnableGMO",0)
memrec.Color=0x0c08000
{$ASM}

</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>144</ID>
          <Description>"[X] &lt;== Unlimited Suppression Resistense"</Description>
          <LastState/>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[enable]
{$LUA}
writeInteger("iEnableMHS",1)
memrec.Color=0x0004000
{$ASM}

[disable]
{$LUA}
writeInteger("iEnableMHS",0)
memrec.Color=0x0c08000
{$ASM}

</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>145</ID>
          <Description>"[X] &lt;== Unlimited Ammo (no releoad needed)"</Description>
          <LastState/>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[enable]
{$LUA}
writeInteger("iEnableMPA",1)
memrec.Color=0x0004000
{$ASM}

[disable]
{$LUA}
writeInteger("iEnableMPA",0)
memrec.Color=0x0c08000
{$ASM}

</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>229</ID>
          <Description>"[X] &lt;== No Weapon Heat"</Description>
          <LastState/>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[enable]
{$LUA}
writeInteger("iEnableMWH",1)
memrec.Color=0x0004000
{$ASM}

[disable]
{$LUA}
writeInteger("iEnableMWH",0)
memrec.Color=0x0c08000
{$ASM}

</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>239</ID>
          <Description>"[X] &lt;== Quick Kill"</Description>
          <Options moHideChildren="1"/>
          <LastState/>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[enable]
{$LUA}
writeInteger("iEnableMQK",1)
memrec.Color=0x0004000
{$ASM}

[disable]
{$LUA}
writeInteger("iEnableMQK",0)
memrec.Color=0x0c08000
{$ASM}

</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>247</ID>
              <Description>"Player Damage"</Description>
              <LastState Value="-16800" RealAddress="7FF63D5100B2"/>
              <VariableType>Float</VariableType>
              <Address>fBigVal</Address>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
        <CheatEntry>
          <ID>143</ID>
          <Description>"[X] &lt;== Full Adrenaline/Focus/Data-flux (No Warp Heat should be OFF)"</Description>
          <LastState/>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[enable]
{$LUA}
writeInteger("iEnableMHA",1)
memrec.Color=0x0004000
{$ASM}

[disable]
{$LUA}
writeInteger("iEnableMHA",0)
memrec.Color=0x0c08000
{$ASM}

</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>241</ID>
          <Description>"[X] &lt;== No Warp Heat (Full Adrenaline should be OFF)"</Description>
          <LastState/>
          <Color>C08000</Color>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[enable]
{$LUA}
writeInteger("iEnableMHW",1)
memrec.Color=0x0004000
{$ASM}

[disable]
{$LUA}
writeInteger("iEnableMHW",0)
memrec.Color=0x0c08000
{$ASM}

</AssemblerScript>
        </CheatEntry>
        <CheatEntry>
          <ID>86</ID>
          <Description>"[X] &lt;== Set Movement Speed"</Description>
          <Options moHideChildren="1"/>
          <LastState/>
          <VariableType>Auto Assembler Script</VariableType>
          <AssemblerScript>[ENABLE]
aobscanmodule(movement,Warhammer.exe,F3 0F 11 B3 C0 05 00 00)
alloc(newmem,$1000,movement)

//label(code)
label(return)
label(movement_speed)

newmem:
  cmp rbx,[pHero]
  jne code
  push rax
  mov rax,movement_speed
  movss xmm6,[rax]
  pop rax
code:
  movss [rbx+000005C0],xmm6
  jmp return

movement_speed:
  dd (float)200

movement:
  jmp newmem
  nop
  nop
  nop



return:

registersymbol(movement)
registersymbol(movement_speed)

[DISABLE]
movement:
  db F3 0F 11 B3 C0 05 00 00
unregistersymbol(movement)
unregistersymbol(movement_speed)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Warhammer_x64_11.exe"+32A9B0

"Warhammer_x64_11.exe"+32A989: F3 0F 59 F1              -  mulss xmm6,xmm1
"Warhammer_x64_11.exe"+32A98D: 48 8B 03                 -  mov rax,[rbx]
"Warhammer_x64_11.exe"+32A990: BA 3C 00 00 00           -  mov edx,0000003C
"Warhammer_x64_11.exe"+32A995: 48 8B CB                 -  mov rcx,rbx
"Warhammer_x64_11.exe"+32A998: FF 90 C8 00 00 00        -  call qword ptr [rax+000000C8]
"Warhammer_x64_11.exe"+32A99E: 84 C0                    -  test al,al
"Warhammer_x64_11.exe"+32A9A0: 74 0E                    -  je Warhammer_x64_11.exe+32A9B0
"Warhammer_x64_11.exe"+32A9A2: B9 2B 0C 00 00           -  mov ecx,00000C2B
"Warhammer_x64_11.exe"+32A9A7: E8 34 FE 67 00           -  call Warhammer_x64_11.exe+9AA7E0
"Warhammer_x64_11.exe"+32A9AC: F3 0F 59 F0              -  mulss xmm6,xmm0
// ---------- INJECTING HERE ----------
"Warhammer_x64_11.exe"+32A9B0: F3 0F 11 B3 78 05 00 00  -  movss [rbx+00000578],xmm6
// ---------- DONE INJECTING  ----------
"Warhammer_x64_11.exe"+32A9B8: C6 83 80 05 00 00 00     -  mov byte ptr [rbx+00000580],00
"Warhammer_x64_11.exe"+32A9BF: F3 0F 10 83 78 05 00 00  -  movss xmm0,[rbx+00000578]
"Warhammer_x64_11.exe"+32A9C7: 0F 28 74 24 40           -  movaps xmm6,[rsp+40]
"Warhammer_x64_11.exe"+32A9CC: 0F 28 7C 24 30           -  movaps xmm7,[rsp+30]
"Warhammer_x64_11.exe"+32A9D1: 48 83 C4 50              -  add rsp,50
"Warhammer_x64_11.exe"+32A9D5: 5B                       -  pop rbx
"Warhammer_x64_11.exe"+32A9D6: C3                       -  ret 
"Warhammer_x64_11.exe"+32A9D7: CC                       -  int 3 
"Warhammer_x64_11.exe"+32A9D8: CC                       -  int 3 
"Warhammer_x64_11.exe"+32A9D9: CC                       -  int 3 
}
</AssemblerScript>
          <CheatEntries>
            <CheatEntry>
              <ID>84</ID>
              <Description>"Movement Speed (Set)"</Description>
              <VariableType>Float</VariableType>
              <Address>movement_speed</Address>
            </CheatEntry>
            <CheatEntry>
              <ID>267</ID>
              <Description>"Movement Speed"</Description>
              <VariableType>Float</VariableType>
              <Address>pHero</Address>
              <Offsets>
                <Offset>5C0</Offset>
              </Offsets>
            </CheatEntry>
          </CheatEntries>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
    <CheatEntry>
      <ID>250</ID>
      <Description>"Unlimited Zoom"</Description>
      <Options moHideChildren="1"/>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
aobscanmodule(zoom,Warhammer.exe,C7 83 30 04 00 00 00 00 80 3F)

zoom:
  //db C7 83 28 04 00 00 00 00 40 40
  db 90 90 90 90 90 90 90 90 90 90

registersymbol(zoom)

[DISABLE]
zoom:
  db C7 83 30 04 00 00 00 00 80 3F
unregistersymbol(zoom)
unregistersymbol(zoom_speed)

{
ORIGINAL CODE - INJECTION POINT: "Warhammer_x64_11.exe"+2E6617

"Warhammer.exe"+2E65FA - 73 0A                 - jae Warhammer.exe+2E6606
"Warhammer.exe+2E65FC - C7 83 30040000 00000000 - mov [rbx+00000430],00000000
"Warhammer.exe"+2E6606 - F3 0F10 05 F2005D01   - movss xmm0,[Warhammer.exe+18B6700]
"Warhammer.exe"+2E660E - 0F2F 83 30040000      - comiss xmm0,[rbx+00000430]
"Warhammer.exe"+2E6615 - 73 0A                 - jae Warhammer.exe+2E6621
"Warhammer.exe"+2E6617 - C7 83 30040000 0000803F - mov [rbx+00000430],3F800000
"Warhammer.exe"+2E6621 - 48 8B 5C 24 40        - mov rbx,[rsp+40]
"Warhammer.exe"+2E6626 - 48 83 C4 30           - add rsp,30
"Warhammer.exe"+2E662A - 5F                    - pop rdi

}
</AssemblerScript>
    </CheatEntry>
    <CheatEntry>
      <ID>261</ID>
      <Description>"No Cooldown"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
aobscanmodule(cooldown,Warhammer.exe,F3 0F 10 87 BC 01 00 00 F3 0F 5C)
cooldown:
  db 0F 57 C0 90 90 90 90 90
registersymbol(cooldown)

[DISABLE]
cooldown:
  db F3 0F 10 87 BC 01 00 00
unregistersymbol(cooldown)

{
// ORIGINAL CODE - INJECTION POINT: "Warhammer_x64_11.exe"+66EE67

Warhammer_x64_11.exe+A196D1 - 76 13                 - jna Warhammer_x64_11.exe+A196E6
Warhammer_x64_11.exe+A196D3 - 44 0F2F 87 B8010000   - comiss xmm8,[rdi+000001B8]
Warhammer_x64_11.exe+A196DB - 76 09                 - jna Warhammer_x64_11.exe+A196E6
Warhammer_x64_11.exe+A196DD - F3 0F11 BC 24 D8000000  - movss [rsp+000000D8],xmm7
Warhammer_x64_11.exe+A196E6 - 0F28 BC 24 90000000   - movaps xmm7,[rsp+00000090]
Warhammer_x64_11.exe+A196EE - F3 0F58 B4 24 D8000000  - addss xmm6,dword ptr [rsp+000000D8]
// ---------- INJECTING HERE ----------
Warhammer_x64_11.exe+A196F7 - F3 0F10 87 BC010000   - movss xmm0,[rdi+000001BC]
// ---------- DONE INJECTING  ----------
Warhammer_x64_11.exe+A196FF - F3 0F5C C6            - subss xmm0,xmm6
Warhammer_x64_11.exe+A19703 - F3 0F11 87 BC010000   - movss [rdi+000001BC],xmm0
Warhammer_x64_11.exe+A1970B - 44 0F2F 8F BC010000   - comiss xmm9,[rdi+000001BC]
Warhammer_x64_11.exe+A19713 - 72 07                 - jb Warhammer_x64_11.exe+A1971C
Warhammer_x64_11.exe+A19715 - 48 89 AF B8010000     - mov [rdi+000001B8],rbp
Warhammer_x64_11.exe+A1971C - 48 8B 87 00020000     - mov rax,[rdi+00000200]
Warhammer_x64_11.exe+A19723 - 8B F5                 - mov esi,ebp

}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols>
    <SymbolEntry>
      <Name>player_ptr</Name>
      <Address>20901240000</Address>
    </SymbolEntry>
    <SymbolEntry>
      <Name>Recifense</Name>
      <Address>20190621</Address>
    </SymbolEntry>
  </UserdefinedSymbols>
</CheatTable>

 

 

Ссылка на комментарий
Поделиться на другие сайты

Весь листинг не смотрел, но судя по первому скрипту, автор нашел инструкцию, которая работает только с героем, и с нее записывает указатель на героя. А в остальных местах уже работает именно с этим указателем.

Ссылка на комментарий
Поделиться на другие сайты

В 06.08.2019 в 09:47, BitKit сказал:

Итого:

1. Непонятно к чему именно создатель чита привязался для проверки "игрок на миссии".

2. Как он вышел на приведенную функцию и почему использует метод "наибольшее" для бессмертия и "наименьшее" для быстрого убийства.

1. Инструкция, как и написал @Xipho работает в миссии по-видимому и по вот этой проверке: 

 mov rax,[rcx+00000658]            // защита от нулевого значения
 test rax,rax                      // Т.е. сработала инструкция или нет
 jz _ExitGMD                       // И появился ли адрес в [rcx+00000658]  

 но это указатель на структуры всех НПС скорее всего, потому-что фильтр свой/чужой это:

В 06.08.2019 в 10:57, BitKit сказал:

cmp byte ptr [rax+00000174],00       // при 0 - это НАШ
jne _GodMD01

 

  2. Автор скрипта юзает не здоровье, а УРОН судя по записям: 

maxss xmm1,[fSmallval]
///////////////////////
minss xmm1,[fBigVal]
///////////////////////
fSmallval:
 dd (float)0.0001
fBigVal:
 dd (float)-16800.0

Ну а так информации в выложенном коде предостаточно, чтобы восстановить работу скрипта, если поменялась версия игры. 

ЗЫ: 

Только что, Garik66 сказал:

Как он вышел

Конечно от здоровья - реверс кода скорее всего.

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.