Перейти к содержанию
Авторизация  
BitKit

[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

Поделиться сообщением


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

@Garik66Вот теперь стало яснее что тут происходит, спасибо

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

×

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

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