Page 51 of 51

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Fri Feb 23, 2024 2:22 pm
by sanitka
Toga wrote:
Fri Feb 23, 2024 12:03 pm
^ best to find the address of Player Actor
then in the structure you'll have everything you need.

look at Messy's post: viewtopic.php?p=242977#p242977
and his post above that one

gl
Get Player Actor Pointer (copy & paste to your table):

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>547</ID>
      <Description>"Get Actor"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Last Epoch.exe
  Version: 
  Date   : 2024-02-24
  Author : SanitKa

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(INJGETACTOR,GameAssembly.dll,48 8B 80 B8 00 00 00 48 8B 40 38 48 83 C4 20 5B C3 E8) // should be unique
alloc(newmem,$1000,INJGETACTOR)

label(code)
label(return)
label(actorPtr)

newmem:

code:
  mov rax,[rax+000000B8]       // long version; any offset
  mov rax,[rax+38]             // short version; 7F max offset
  mov [actorPtr],rax

  jmp return

actorPtr:
  dq 0

INJGETACTOR:
  jmp newmem
  nop 6                        // nop both mov rax ...

return:
registersymbol(INJGETACTOR)
registersymbol(actorPtr)

[DISABLE]

INJGETACTOR:
  db 48 8B 80 B8 00 00 00 48 8B 40 38

unregistersymbol(*)
dealloc(newmem)

{
PlayerFinder.getPlayerActor
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+12DB116

GameAssembly.dll+12DB0E6: 48 89 01              - mov [rcx],rax
GameAssembly.dll+12DB0E9: E8 42 66 DF FE        - call GameAssembly.dll+D1730
GameAssembly.dll+12DB0EE: 48 8B 05 43 D7 8E 04  - mov rax,[GameAssembly.dll+5BC8838]
GameAssembly.dll+12DB0F5: F6 80 2F 01 00 00 02  - test byte ptr [rax+0000012F],02
GameAssembly.dll+12DB0FC: 74 18                 - je GameAssembly.dll+12DB116
GameAssembly.dll+12DB0FE: 83 B8 E0 00 00 00 00  - cmp dword ptr [rax+000000E0],00
GameAssembly.dll+12DB105: 75 0F                 - jne GameAssembly.dll+12DB116
GameAssembly.dll+12DB107: 48 8B C8              - mov rcx,rax
GameAssembly.dll+12DB10A: E8 21 C5 D7 FE        - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+12DB10F: 48 8B 05 22 D7 8E 04  - mov rax,[GameAssembly.dll+5BC8838]
GameAssembly.dll+12DB116: 48 8B 80 B8 00 00 00  - mov rax,[rax+000000B8]
// ---------- INJECTING HERE ----------
GameAssembly.dll+12DB11D: 48 8B 40 38           - mov rax,[rax+38]
GameAssembly.dll+12DB121: 48 83 C4 20           - add rsp,20
// ---------- DONE INJECTING  ----------
GameAssembly.dll+12DB125: 5B                    - pop rbx
GameAssembly.dll+12DB126: C3                    - ret 
GameAssembly.dll+12DB127: E8 34 6A DF FE        - call GameAssembly.dll+D1B60
GameAssembly.dll+12DB12C: CC                    - int 3 
GameAssembly.dll+12DB12D: CC                    - int 3 
GameAssembly.dll+12DB12E: CC                    - int 3 
GameAssembly.dll+12DB12F: CC                    - int 3 
PlayerFinder.getPlayerDataTracker: 40 53                 - push rbx
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>5</ID>
          <Description>"Actor Ptr"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>8 Bytes</VariableType>
          <Address>actorPtr</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Actor Structure (save to disk and import in Structure Disect):

Code: Select all

<Structures>
  <Structure Name="Actor" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
    <Elements>
      <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="m_CachedPtr" DisplayMethod="unsigned integer"/>
      <Element Offset="24" Vartype="Pointer" Bytesize="8" OffsetHex="00000018" ChildStruct="ActorData" Description="data" DisplayMethod="unsigned integer"/>
      <Element Offset="32" Vartype="Pointer" Bytesize="8" OffsetHex="00000020" Description="actorSync" DisplayMethod="unsigned integer"/>
      <Element Offset="40" Vartype="Byte" Bytesize="1" OffsetHex="00000028" Description="foundActorSync" DisplayMethod="unsigned integer"/>
      <Element Offset="48" Vartype="Pointer" Bytesize="8" OffsetHex="00000030" Description="health" DisplayMethod="unsigned integer">
        <Structure Name="UnitHealth" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
          <Elements>
            <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="m_CachedPtr" DisplayMethod="unsigned integer"/>
            <Element Offset="24" Vartype="Byte" Bytesize="1" OffsetHex="00000018" Description="_hasFirstTicked" DisplayMethod="unsigned integer"/>
            <Element Offset="32" Vartype="Pointer" Bytesize="8" OffsetHex="00000020" Description="actor" DisplayMethod="unsigned integer"/>
            <Element Offset="40" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000028" Description="maxHealth" DisplayMethod="unsigned integer"/>
            <Element Offset="44" Vartype="Float" Bytesize="4" OffsetHex="0000002C" Description="currentHealth" DisplayMethod="unsigned integer"/>
            <Element Offset="48" Vartype="Byte" Bytesize="1" OffsetHex="00000030" Description="damageable" DisplayMethod="unsigned integer"/>
            <Element Offset="49" Vartype="Byte" Bytesize="1" OffsetHex="00000031" Description="canDie" DisplayMethod="unsigned integer"/>
            <Element Offset="50" Vartype="Byte" Bytesize="1" OffsetHex="00000032" Description="healable" DisplayMethod="unsigned integer"/>
            <Element Offset="52" Vartype="Float" Bytesize="4" OffsetHex="00000034" Description="baseHealthRegenPerSecond" DisplayMethod="unsigned integer"/>
            <Element Offset="56" Vartype="Float" Bytesize="4" OffsetHex="00000038" Description="addedHealthRegenPerSecond" DisplayMethod="unsigned integer"/>
            <Element Offset="64" Vartype="Pointer" Bytesize="8" OffsetHex="00000040" Description="damageTakenEvent" DisplayMethod="unsigned integer"/>
            <Element Offset="72" Vartype="Pointer" Bytesize="8" OffsetHex="00000048" Description="lethalDamageTakenEvent" DisplayMethod="unsigned integer"/>
            <Element Offset="80" Vartype="Pointer" Bytesize="8" OffsetHex="00000050" Description="healthChangeEvent" DisplayMethod="unsigned integer"/>
            <Element Offset="88" Vartype="Pointer" Bytesize="8" OffsetHex="00000058" Description="unimportanceModifier" DisplayMethod="unsigned integer"/>
            <Element Offset="96" Vartype="Pointer" Bytesize="8" OffsetHex="00000060" Description="unimportanceCoroutine" DisplayMethod="unsigned integer"/>
            <Element Offset="104" Vartype="Float" Bytesize="4" OffsetHex="00000068" Description="origonalUnimportance" DisplayMethod="unsigned integer"/>
            <Element Offset="108" Vartype="4 Bytes" Bytesize="4" OffsetHex="0000006C" Description="additionalSourcesOfCannotDie" DisplayMethod="unsigned integer"/>
            <Element Offset="112" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000070" Description="oldHealthRatio" DisplayMethod="unsigned integer"/>
            <Element Offset="116" Vartype="Byte" Bytesize="1" OffsetHex="00000074" Description="healthRatio" DisplayMethod="unsigned integer"/>
            <Element Offset="117" Vartype="Byte" Bytesize="1" OffsetHex="00000075" Description="useHealthCap" DisplayMethod="unsigned integer"/>
            <Element Offset="120" Vartype="Float" Bytesize="4" OffsetHex="00000078" Description="healthCap" DisplayMethod="unsigned integer"/>
            <Element Offset="128" Vartype="Pointer" Bytesize="8" OffsetHex="00000080" Description="activeHealthCaps" DisplayMethod="unsigned integer"/>
            <Element Offset="136" Vartype="Pointer" Bytesize="8" OffsetHex="00000088" Description="tForm" DisplayMethod="unsigned integer"/>
            <Element Offset="144" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000090" Description="healthSerialisation" DisplayMethod="unsigned integer"/>
            <Element Offset="148" Vartype="Float" Bytesize="4" OffsetHex="00000094" Description="effectiveHealthModifier" DisplayMethod="unsigned integer"/>
            <Element Offset="152" Vartype="Float" Bytesize="4" OffsetHex="00000098" Description="startingHealthPercentage" DisplayMethod="unsigned integer"/>
            <Element Offset="160" Vartype="Pointer" Bytesize="8" OffsetHex="000000A0" Description="protectionDamageTypes" DisplayMethod="unsigned integer"/>
            <Element Offset="168" Vartype="Pointer" Bytesize="8" OffsetHex="000000A8" Description="relativeProtectionValues" DisplayMethod="unsigned integer"/>
          </Elements>
        </Structure>
      </Element>
      <Element Offset="56" Vartype="Pointer" Bytesize="8" OffsetHex="00000038" Description="alignmentManager" DisplayMethod="unsigned integer"/>
      <Element Offset="64" Vartype="Pointer" Bytesize="8" OffsetHex="00000040" Description="protection" DisplayMethod="unsigned integer"/>
      <Element Offset="72" Vartype="Pointer" Bytesize="8" OffsetHex="00000048" Description="stats" DisplayMethod="unsigned integer"/>
      <Element Offset="80" Vartype="Pointer" Bytesize="8" OffsetHex="00000050" Description="dying" DisplayMethod="unsigned integer"/>
      <Element Offset="88" Vartype="Pointer" Bytesize="8" OffsetHex="00000058" Description="stateController" DisplayMethod="unsigned integer"/>
      <Element Offset="96" Vartype="Pointer" Bytesize="8" OffsetHex="00000060" Description="summoned" DisplayMethod="unsigned integer"/>
      <Element Offset="104" Vartype="Pointer" Bytesize="8" OffsetHex="00000068" Description="mana" DisplayMethod="unsigned integer"/>
      <Element Offset="112" Vartype="Pointer" Bytesize="8" OffsetHex="00000070" Description="chargeManager" DisplayMethod="unsigned integer"/>
      <Element Offset="120" Vartype="Pointer" Bytesize="8" OffsetHex="00000078" Description="leechTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="128" Vartype="Pointer" Bytesize="8" OffsetHex="00000080" Description="statBuffs" DisplayMethod="unsigned integer"/>
      <Element Offset="136" Vartype="Pointer" Bytesize="8" OffsetHex="00000088" Description="abilityObjectConstructor" DisplayMethod="unsigned integer"/>
      <Element Offset="144" Vartype="Pointer" Bytesize="8" OffsetHex="00000090" Description="tForm" DisplayMethod="unsigned integer"/>
      <Element Offset="152" Vartype="Pointer" Bytesize="8" OffsetHex="00000098" Description="sizeManager" DisplayMethod="unsigned integer"/>
      <Element Offset="160" Vartype="Pointer" Bytesize="8" OffsetHex="000000A0" Description="navMeshAgent" DisplayMethod="unsigned integer"/>
      <Element Offset="168" Vartype="Pointer" Bytesize="8" OffsetHex="000000A8" Description="ailmentReceiver" DisplayMethod="unsigned integer"/>
      <Element Offset="176" Vartype="Pointer" Bytesize="8" OffsetHex="000000B0" Description="accuracyManager" DisplayMethod="unsigned integer"/>
      <Element Offset="184" Vartype="Pointer" Bytesize="8" OffsetHex="000000B8" Description="animationManager" DisplayMethod="unsigned integer"/>
      <Element Offset="192" Vartype="Pointer" Bytesize="8" OffsetHex="000000C0" Description="targetFinder" DisplayMethod="unsigned integer"/>
      <Element Offset="200" Vartype="Pointer" Bytesize="8" OffsetHex="000000C8" Description="waiting" DisplayMethod="unsigned integer"/>
      <Element Offset="208" Vartype="Pointer" Bytesize="8" OffsetHex="000000D0" Description="movingToTarget" DisplayMethod="unsigned integer"/>
      <Element Offset="216" Vartype="Pointer" Bytesize="8" OffsetHex="000000D8" Description="stunned" DisplayMethod="unsigned integer"/>
      <Element Offset="224" Vartype="Pointer" Bytesize="8" OffsetHex="000000E0" Description="relayDamageEvents" DisplayMethod="unsigned integer"/>
      <Element Offset="232" Vartype="Pointer" Bytesize="8" OffsetHex="000000E8" Description="stateSoundManager" DisplayMethod="unsigned integer"/>
      <Element Offset="240" Vartype="Pointer" Bytesize="8" OffsetHex="000000F0" Description="deathItemDrop" DisplayMethod="unsigned integer"/>
      <Element Offset="248" Vartype="Pointer" Bytesize="8" OffsetHex="000000F8" Description="itemContainersManager" DisplayMethod="unsigned integer">
        <Structure Name="ItemContainersManager" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
          <Elements>
            <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="m_CachedPtr" DisplayMethod="unsigned integer"/>
            <Element Offset="24" Vartype="Byte" Bytesize="1" OffsetHex="00000018" Description="_hasFirstTicked" DisplayMethod="unsigned integer"/>
            <Element Offset="32" Vartype="Pointer" Bytesize="8" OffsetHex="00000020" Description="inventory" DisplayMethod="unsigned integer"/>
            <Element Offset="40" Vartype="Pointer" Bytesize="8" OffsetHex="00000028" Description="equipment" DisplayMethod="unsigned integer"/>
            <Element Offset="48" Vartype="Pointer" Bytesize="8" OffsetHex="00000030" Description="materials" DisplayMethod="unsigned integer"/>
            <Element Offset="56" Vartype="Pointer" Bytesize="8" OffsetHex="00000038" Description="cursor" DisplayMethod="unsigned integer"/>
            <Element Offset="64" Vartype="Pointer" Bytesize="8" OffsetHex="00000040" Description="swapBuffer" DisplayMethod="unsigned integer"/>
            <Element Offset="72" Vartype="Pointer" Bytesize="8" OffsetHex="00000048" Description="stash" DisplayMethod="unsigned integer"/>
            <Element Offset="80" Vartype="Pointer" Bytesize="8" OffsetHex="00000050" Description="shop" DisplayMethod="unsigned integer"/>
            <Element Offset="88" Vartype="Pointer" Bytesize="8" OffsetHex="00000058" Description="buyback" DisplayMethod="unsigned integer"/>
            <Element Offset="96" Vartype="Pointer" Bytesize="8" OffsetHex="00000060" Description="crafting" DisplayMethod="unsigned integer"/>
            <Element Offset="104" Vartype="Pointer" Bytesize="8" OffsetHex="00000068" Description="eternityCache" DisplayMethod="unsigned integer"/>
            <Element Offset="112" Vartype="Pointer" Bytesize="8" OffsetHex="00000070" Description="gambling" DisplayMethod="unsigned integer"/>
            <Element Offset="120" Vartype="Pointer" Bytesize="8" OffsetHex="00000078" Description="soulGambling" DisplayMethod="unsigned integer"/>
            <Element Offset="128" Vartype="Pointer" Bytesize="8" OffsetHex="00000080" Description="factionGamblingCoF" DisplayMethod="unsigned integer"/>
            <Element Offset="136" Vartype="Pointer" Bytesize="8" OffsetHex="00000088" Description="factionGamblingMG" DisplayMethod="unsigned integer"/>
            <Element Offset="144" Vartype="Pointer" Bytesize="8" OffsetHex="00000090" Description="arenaKey" DisplayMethod="unsigned integer"/>
            <Element Offset="152" Vartype="Pointer" Bytesize="8" OffsetHex="00000098" Description="dun1Key" DisplayMethod="unsigned integer"/>
            <Element Offset="160" Vartype="Pointer" Bytesize="8" OffsetHex="000000A0" Description="lightlessArborDungeonKey" DisplayMethod="unsigned integer"/>
            <Element Offset="168" Vartype="Pointer" Bytesize="8" OffsetHex="000000A8" Description="soulfireBastionDungeonKey" DisplayMethod="unsigned integer"/>
            <Element Offset="176" Vartype="Pointer" Bytesize="8" OffsetHex="000000B0" Description="idols" DisplayMethod="unsigned integer"/>
            <Element Offset="184" Vartype="Pointer" Bytesize="8" OffsetHex="000000B8" Description="blessings" DisplayMethod="unsigned integer"/>
            <Element Offset="192" Vartype="Pointer" Bytesize="8" OffsetHex="000000C0" Description="lenses" DisplayMethod="unsigned integer"/>
            <Element Offset="200" Vartype="Pointer" Bytesize="8" OffsetHex="000000C8" Description="giftedItems" DisplayMethod="unsigned integer"/>
            <Element Offset="208" Vartype="Pointer" Bytesize="8" OffsetHex="000000D0" Description="itemToGift" DisplayMethod="unsigned integer"/>
            <Element Offset="216" Vartype="Pointer" Bytesize="8" OffsetHex="000000D8" Description="itemToTrade" DisplayMethod="unsigned integer"/>
            <Element Offset="224" Vartype="Pointer" Bytesize="8" OffsetHex="000000E0" Description="itemToTradePreview" DisplayMethod="unsigned integer"/>
            <Element Offset="232" Vartype="Pointer" Bytesize="8" OffsetHex="000000E8" Description="itemToList" DisplayMethod="unsigned integer"/>
            <Element Offset="240" Vartype="Pointer" Bytesize="8" OffsetHex="000000F0" Description="craftingManager" DisplayMethod="unsigned integer"/>
            <Element Offset="248" Vartype="4 Bytes" Bytesize="4" OffsetHex="000000F8" Description="CursorPickedFromPos" DisplayMethod="unsigned integer"/>
            <Element Offset="256" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000100" Description="CursorPickedFromContainer" DisplayMethod="unsigned integer"/>
            <Element Offset="264" Vartype="Pointer" Bytesize="8" OffsetHex="00000108" Description="treeData" DisplayMethod="unsigned integer"/>
            <Element Offset="272" Vartype="Pointer" Bytesize="8" OffsetHex="00000110" Description="characterMutator" DisplayMethod="unsigned integer"/>
            <Element Offset="280" Vartype="Pointer" Bytesize="8" OffsetHex="00000118" Description="tracker" DisplayMethod="unsigned integer"/>
            <Element Offset="288" Vartype="Pointer" Bytesize="8" OffsetHex="00000120" Description="globalDataTracker" DisplayMethod="unsigned integer"/>
            <Element Offset="296" Vartype="Pointer" Bytesize="8" OffsetHex="00000128" Description="shardStorage" DisplayMethod="unsigned integer"/>
            <Element Offset="304" Vartype="Pointer" Bytesize="8" OffsetHex="00000130" Description="resonanceStorage" DisplayMethod="unsigned integer"/>
            <Element Offset="312" Vartype="Pointer" Bytesize="8" OffsetHex="00000138" Description="movingPlayer" DisplayMethod="unsigned integer"/>
            <Element Offset="320" Vartype="Pointer" Bytesize="8" OffsetHex="00000140" Description="actor" DisplayMethod="unsigned integer"/>
            <Element Offset="328" Vartype="Pointer" Bytesize="8" OffsetHex="00000148" Description="itemEquipManager" DisplayMethod="unsigned integer"/>
            <Element Offset="336" Vartype="Byte" Bytesize="1" OffsetHex="00000150" Description="fullyInitialisedAndLoaded" DisplayMethod="unsigned integer"/>
            <Element Offset="337" Vartype="Byte" Bytesize="1" OffsetHex="00000151" Description="saveStashFlag" DisplayMethod="unsigned integer"/>
            <Element Offset="338" Vartype="Byte" Bytesize="1" OffsetHex="00000152" Description="saveCharContainerFlag" DisplayMethod="unsigned integer"/>
            <Element Offset="339" Vartype="Byte" Bytesize="1" OffsetHex="00000153" Description="saveStashLayoutFlag" DisplayMethod="unsigned integer"/>
            <Element Offset="340" Vartype="Byte" Bytesize="1" OffsetHex="00000154" Description="syncBuybackFlag" DisplayMethod="unsigned integer"/>
            <Element Offset="341" Vartype="Byte" Bytesize="1" OffsetHex="00000155" Description="cursorLocked" DisplayMethod="unsigned integer"/>
            <Element Offset="342" Vartype="2 Bytes" Bytesize="2" OffsetHex="00000156" Description="soulGamblingSeed" DisplayMethod="unsigned integer"/>
            <Element Offset="344" Vartype="2 Bytes" Bytesize="2" OffsetHex="00000158" Description="itemsPurchasedFromSoulGamblerSincePopulated" DisplayMethod="unsigned integer"/>
            <Element Offset="352" Vartype="Pointer" Bytesize="8" OffsetHex="00000160" Description="OnCursorLockStatusChange" DisplayMethod="unsigned integer"/>
            <Element Offset="360" Vartype="Pointer" Bytesize="8" OffsetHex="00000168" Description="blessingsDiscovered" DisplayMethod="unsigned integer"/>
            <Element Offset="368" Vartype="Pointer" Bytesize="8" OffsetHex="00000170" Description="unequippableDropPairs" DisplayMethod="unsigned integer"/>
            <Element Offset="376" Vartype="Pointer" Bytesize="8" OffsetHex="00000178" Description="clientAdditionalOffhandBaseTypeProvider" DisplayMethod="unsigned integer"/>
            <Element Offset="384" Vartype="Pointer" Bytesize="8" OffsetHex="00000180" Description="tempCharacterInfoProvider" DisplayMethod="unsigned integer"/>
          </Elements>
        </Structure>
      </Element>
      <Element Offset="256" Vartype="Pointer" Bytesize="8" OffsetHex="00000100" Description="characterMutator" DisplayMethod="unsigned integer"/>
      <Element Offset="264" Vartype="Pointer" Bytesize="8" OffsetHex="00000108" Description="playerQuestListHolder" DisplayMethod="unsigned integer"/>
      <Element Offset="272" Vartype="Pointer" Bytesize="8" OffsetHex="00000110" Description="playerMonolithQuestListHolder" DisplayMethod="unsigned integer"/>
      <Element Offset="280" Vartype="Pointer" Bytesize="8" OffsetHex="00000118" Description="monolithRunsManager" DisplayMethod="unsigned integer"/>
      <Element Offset="288" Vartype="Pointer" Bytesize="8" OffsetHex="00000120" Description="goldTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="296" Vartype="Pointer" Bytesize="8" OffsetHex="00000128" Description="factionInfo" DisplayMethod="unsigned integer"/>
      <Element Offset="304" Vartype="Pointer" Bytesize="8" OffsetHex="00000130" Description="resonancesTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="312" Vartype="Pointer" Bytesize="8" OffsetHex="00000138" Description="experienceTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="320" Vartype="Pointer" Bytesize="8" OffsetHex="00000140" Description="itemDropBonuses" DisplayMethod="unsigned integer"/>
      <Element Offset="328" Vartype="Pointer" Bytesize="8" OffsetHex="00000148" Description="generateItems" DisplayMethod="unsigned integer"/>
      <Element Offset="336" Vartype="Pointer" Bytesize="8" OffsetHex="00000150" Description="localTreeData" DisplayMethod="unsigned integer"/>
      <Element Offset="344" Vartype="Pointer" Bytesize="8" OffsetHex="00000158" Description="globalDataTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="352" Vartype="Pointer" Bytesize="8" OffsetHex="00000160" Description="voteManager" DisplayMethod="unsigned integer"/>
      <Element Offset="360" Vartype="Pointer" Bytesize="8" OffsetHex="00000168" Description="dungeonRunManager" DisplayMethod="unsigned integer"/>
      <Element Offset="368" Vartype="Pointer" Bytesize="8" OffsetHex="00000170" Description="arenaRunManager" DisplayMethod="unsigned integer"/>
      <Element Offset="376" Vartype="Pointer" Bytesize="8" OffsetHex="00000178" Description="weaponInfoHolder" DisplayMethod="unsigned integer"/>
      <Element Offset="384" Vartype="Pointer" Bytesize="8" OffsetHex="00000180" Description="falconIdleState" DisplayMethod="unsigned integer"/>
      <Element Offset="392" Vartype="Pointer" Bytesize="8" OffsetHex="00000188" Description="actorPointerEventListener" DisplayMethod="unsigned integer"/>
      <Element Offset="400" Vartype="Pointer" Bytesize="8" OffsetHex="00000190" Description="colliders" DisplayMethod="unsigned integer"/>
      <Element Offset="408" Vartype="Float" Bytesize="4" OffsetHex="00000198" Description="unscaledRadius" DisplayMethod="unsigned integer"/>
      <Element Offset="412" Vartype="Byte" Bytesize="1" OffsetHex="0000019C" Description="cannotBePushed" DisplayMethod="unsigned integer"/>
      <Element Offset="413" Vartype="Byte" Bytesize="1" OffsetHex="0000019D" Description="isPlayerActor" DisplayMethod="unsigned integer"/>
      <Element Offset="416" Vartype="Float" Bytesize="4" OffsetHex="000001A0" Description="increasedPotionDroprate" DisplayMethod="unsigned integer"/>
      <Element Offset="420" Vartype="Byte" Bytesize="1" OffsetHex="000001A4" Description="cannotTargetWithMovementAbilities" DisplayMethod="unsigned integer"/>
      <Element Offset="424" Vartype="Float" Bytesize="4" OffsetHex="000001A8" Description="distanceFromCentreForAttackersToMoveTowards" DisplayMethod="unsigned integer"/>
      <Element Offset="428" Vartype="Byte" Bytesize="1" OffsetHex="000001AC" Description="neverValidTarget" DisplayMethod="unsigned integer"/>
      <Element Offset="429" Vartype="Byte" Bytesize="1" OffsetHex="000001AD" Description="cannotBeAffectedByDarkness" DisplayMethod="unsigned integer"/>
      <Element Offset="432" Vartype="4 Bytes" Bytesize="4" OffsetHex="000001B0" Description="totalSourcesOfTargetInvalidity" DisplayMethod="unsigned integer"/>
      <Element Offset="440" Vartype="Pointer" Bytesize="8" OffsetHex="000001B8" Description="abilityEventListener" DisplayMethod="unsigned integer"/>
      <Element Offset="448" Vartype="Pointer" Bytesize="8" OffsetHex="000001C0" Description="creationReferences" DisplayMethod="unsigned integer"/>
      <Element Offset="456" Vartype="Pointer" Bytesize="8" OffsetHex="000001C8" Description="summonTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="464" Vartype="Pointer" Bytesize="8" OffsetHex="000001D0" Description="mutatorManager" DisplayMethod="unsigned integer"/>
      <Element Offset="472" Vartype="Byte" Bytesize="1" OffsetHex="000001D8" Description="hasMutatorManager" DisplayMethod="unsigned integer"/>
      <Element Offset="480" Vartype="Pointer" Bytesize="8" OffsetHex="000001E0" Description="hitSoundReceiver" DisplayMethod="unsigned integer"/>
      <Element Offset="488" Vartype="Byte" Bytesize="1" OffsetHex="000001E8" Description="checkedForHitSoundReceiver" DisplayMethod="unsigned integer"/>
      <Element Offset="489" Vartype="Byte" Bytesize="1" OffsetHex="000001E9" Description="hasHitSoundReceiver" DisplayMethod="unsigned integer"/>
      <Element Offset="496" Vartype="Pointer" Bytesize="8" OffsetHex="000001F0" Description="movingPlayerServer" DisplayMethod="unsigned integer"/>
      <Element Offset="504" Vartype="Pointer" Bytesize="8" OffsetHex="000001F8" Description="abilityList" DisplayMethod="unsigned integer"/>
      <Element Offset="512" Vartype="Pointer" Bytesize="8" OffsetHex="00000200" Description="characterDataTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="520" Vartype="Pointer" Bytesize="8" OffsetHex="00000208" Description="healthPotion" DisplayMethod="unsigned integer"/>
      <Element Offset="528" Vartype="Pointer" Bytesize="8" OffsetHex="00000210" Description="minionStanceData" DisplayMethod="unsigned integer"/>
      <Element Offset="536" Vartype="Pointer" Bytesize="8" OffsetHex="00000218" Description="tooltipDPSManager" DisplayMethod="unsigned integer"/>
      <Element Offset="544" Vartype="Pointer" Bytesize="8" OffsetHex="00000220" Description="appliedModKeys" DisplayMethod="unsigned integer"/>
      <Element Offset="552" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000228" Description="rarity" DisplayMethod="unsigned integer"/>
      <Element Offset="553" Vartype="Byte" Bytesize="1" OffsetHex="00000229" Description="isMinion" DisplayMethod="unsigned integer"/>
      <Element Offset="554" Vartype="Byte" Bytesize="1" OffsetHex="0000022A" Description="isSummonedTotem" DisplayMethod="unsigned integer"/>
      <Element Offset="555" Vartype="Byte" Bytesize="1" OffsetHex="0000022B" Description="&lt;UsingAbilityHasActivated&gt;k__BackingField" DisplayMethod="unsigned integer"/>
      <Element Offset="556" Vartype="4 Bytes" Bytesize="4" OffsetHex="0000022C" Description="referenceVersion" DisplayMethod="unsigned integer"/>
      <Element Offset="560" Vartype="Pointer" Bytesize="8" OffsetHex="00000230" Description="usingAbilityActivatedEvent" DisplayMethod="unsigned integer"/>
      <Element Offset="568" Vartype="Pointer" Bytesize="8" OffsetHex="00000238" Description="reachedMovementAbilityDestinationEvent" DisplayMethod="unsigned integer"/>
      <Element Offset="576" Vartype="Pointer" Bytesize="8" OffsetHex="00000240" Description="movedToPlayerSpawnEvent" DisplayMethod="unsigned integer"/>
      <Element Offset="584" Vartype="Float" Bytesize="4" OffsetHex="00000248" Description="initialRadius" DisplayMethod="unsigned integer"/>
      <Element Offset="588" Vartype="Byte" Bytesize="1" OffsetHex="0000024C" Description="hasBeenDisabled" DisplayMethod="unsigned integer"/>
      <Element Offset="589" Vartype="Byte" Bytesize="1" OffsetHex="0000024D" Description="initialised" DisplayMethod="unsigned integer"/>
      <Element Offset="592" Vartype="Float" Bytesize="4" OffsetHex="00000250" Description="timeLastPulled" DisplayMethod="unsigned integer"/>
      <Element Offset="600" Vartype="Pointer" Bytesize="8" OffsetHex="00000258" Description="objectLastPulledBy" DisplayMethod="unsigned integer"/>
    </Elements>
  </Structure>
</Structures>

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Fri Feb 23, 2024 3:01 pm
by Impala
Added Max Unique, Sets and Implicit Rolls
Added Vacuum crafting mats range (Will Suck the entire map. Had some long freezes in campaign, game comes back no crash)

viewtopic.php?p=336654#p336654

I'm not updating the whole table, only functions I want to use, so don't ask

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Fri Feb 23, 2024 3:43 pm
by muliari14
Impala wrote:
Wed Feb 21, 2024 10:51 pm
Quick Infinite Potions Script (copy and paste into CE)

Waiting for someone better than me to make a table

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>535</ID>
      <Description>"Infinite Potions"</Description>
      <LastState Activated="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
//GameAssembly.dll+16C6937 - 2B 43 60              - sub eax,[rbx+60]
aobscanmodule(infpotions,GameAssembly.dll,2B 43 60 89 43 24 40 84 F6 74 4A 48 8B 43 38) // should be unique
alloc(newmem,$1000)

label(code)
label(return)

newmem:

code:
  //sub eax,[rbx+60]
  mov [rbx+24],eax
  test sil,sil
  je GameAssembly.dll+16C698C
  mov rax,[rbx+38]
  jmp return

infpotions:
  jmp far newmem
  nop
return:
registersymbol(infpotions)

[DISABLE]

infpotions:
  db 2B 43 60 89 43 24 40 84 F6 74 4A 48 8B 43 38

unregistersymbol(infpotions)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+16C6937

GameAssembly.dll+16C690D: E8 7E 20 13 00        - call BaseHealth.restoreHealth
GameAssembly.dll+16C6912: F3 0F 10 4B 6C        - movss xmm1,[rbx+6C]
GameAssembly.dll+16C6917: 0F 2F CE              - comiss xmm1,xmm6
GameAssembly.dll+16C691A: 76 18                 - jna GameAssembly.dll+16C6934
GameAssembly.dll+16C691C: 48 8B 8B 88 00 00 00  - mov rcx,[rbx+00000088]
GameAssembly.dll+16C6923: 48 85 C9              - test rcx,rcx
GameAssembly.dll+16C6926: 0F 84 A3 02 00 00     - je GameAssembly.dll+16C6BCF
GameAssembly.dll+16C692C: 45 33 C0              - xor r8d,r8d
GameAssembly.dll+16C692F: E8 7C 1A 48 00        - call ProtectionClass.GainWard
GameAssembly.dll+16C6934: 8B 43 24              - mov eax,[rbx+24]
// ---------- INJECTING HERE ----------
GameAssembly.dll+16C6937: 2B 43 60              - sub eax,[rbx+60]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+16C693A: 89 43 24              - mov [rbx+24],eax
GameAssembly.dll+16C693D: 40 84 F6              - test sil,sil
GameAssembly.dll+16C6940: 74 4A                 - je GameAssembly.dll+16C698C
GameAssembly.dll+16C6942: 48 8B 43 38           - mov rax,[rbx+38]
GameAssembly.dll+16C6946: 33 FF                 - xor edi,edi
GameAssembly.dll+16C6948: 48 85 C0              - test rax,rax
GameAssembly.dll+16C694B: 74 07                 - je GameAssembly.dll+16C6954
GameAssembly.dll+16C694D: 39 78 18              - cmp [rax+18],edi
GameAssembly.dll+16C6950: 40 0F 9F C7           - setg dil
GameAssembly.dll+16C6954: 48 8B 8B A8 00 00 00  - mov rcx,[rbx+000000A8]
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Infinite Runes (Open Inventory to set to 999)
-Note: It won't show until you craft with one or pick one up
--Works on glyphs too
--If you want it to update immediately, just go to a forge and switch runes and glyphs (You don't have to craft, just switch them in and out)

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>536</ID>
      <Description>"Infinite Runes (Open Inventory)"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
//GameAssembly.dll+E2C827 - 8B 40 28              - mov eax,[rax+28]
aobscanmodule(infrunes,GameAssembly.dll,8B 40 28 48 83 C4 20 5B C3 E8 1B) // should be unique
alloc(newmem,$1000,infrunes)

label(code)
label(return)

newmem:

code:
  mov [rax+28],#999
  mov eax,[rax+28]
  add rsp,20
  jmp return

infrunes:
  jmp newmem
  nop 2
return:
registersymbol(infrunes)

[DISABLE]

infrunes:
  db 8B 40 28 48 83 C4 20

unregistersymbol(infrunes)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+E2C827

GameAssembly.dll+E2C804: 48 8D 4C 24 30  - lea rcx,[rsp+30]
GameAssembly.dll+E2C809: 48 8B 50 20     - mov rdx,[rax+20]
GameAssembly.dll+E2C80D: 48 89 54 24 30  - mov [rsp+30],rdx
GameAssembly.dll+E2C812: E8 09 54 6D FF  - call GameAssembly.dll+501C20
GameAssembly.dll+E2C817: 48 8B 44 24 30  - mov rax,[rsp+30]
GameAssembly.dll+E2C81C: 48 85 C0        - test rax,rax
GameAssembly.dll+E2C81F: 75 06           - jne GameAssembly.dll+E2C827
GameAssembly.dll+E2C821: 48 83 C4 20     - add rsp,20
GameAssembly.dll+E2C825: 5B              - pop rbx
GameAssembly.dll+E2C826: C3              - ret 
// ---------- INJECTING HERE ----------
GameAssembly.dll+E2C827: 8B 40 28        - mov eax,[rax+28]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+E2C82A: 48 83 C4 20     - add rsp,20
GameAssembly.dll+E2C82E: 5B              - pop rbx
GameAssembly.dll+E2C82F: C3              - ret 
GameAssembly.dll+E2C830: E8 1B 58 6D FF  - call GameAssembly.dll+502050
GameAssembly.dll+E2C835: CC              - int 3 
GameAssembly.dll+E2C836: CC              - int 3 
GameAssembly.dll+E2C837: CC              - int 3 
GameAssembly.dll+E2C838: CC              - int 3 
GameAssembly.dll+E2C839: CC              - int 3 
GameAssembly.dll+E2C83A: CC              - int 3 
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

Infinite Shards
-Works like infinite runes
-Use shatter runes at forge to get new shards

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>537</ID>
      <Description>"Infinite Shards (Open Inventory)"</Description>
      <LastState Activated="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
//GameAssembly.dll+F1548D - 03 58 14              - add ebx,[rax+14]
aobscanmodule(infshards,GameAssembly.dll,03 58 14 89 5D 50) // should be unique
alloc(newmem,$1000,infshards)

label(code)
label(return)

newmem:

code:
  mov [rax+14],#999
  add ebx,[rax+14]
  mov [rbp+50],ebx
  jmp return

infshards:
  jmp newmem
  nop
return:
registersymbol(infshards)

[DISABLE]

infshards:
  db 03 58 14 89 5D 50

unregistersymbol(infshards)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+F1548D

GameAssembly.dll+F15463: 0F 1F 40 00                 - nop dword ptr [rax+00]
GameAssembly.dll+F15467: 66 0F 1F 84 00 00 00 00 00  - nop word ptr [rax+rax+00000000]
GameAssembly.dll+F15470: 48 8B 15 09 E9 F6 04        - mov rdx,[GameAssembly.dll+5E83D80]
GameAssembly.dll+F15477: 48 8D 4D 08                 - lea rcx,[rbp+08]
GameAssembly.dll+F1547B: E8 60 56 95 00              - call GameAssembly.dll+186AAE0
GameAssembly.dll+F15480: 84 C0                       - test al,al
GameAssembly.dll+F15482: 74 11                       - je GameAssembly.dll+F15495
GameAssembly.dll+F15484: 48 8B 45 18                 - mov rax,[rbp+18]
GameAssembly.dll+F15488: 48 85 C0                    - test rax,rax
GameAssembly.dll+F1548B: 74 5C                       - je GameAssembly.dll+F154E9
// ---------- INJECTING HERE ----------
GameAssembly.dll+F1548D: 03 58 14                    - add ebx,[rax+14]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+F15490: 89 5D 50                    - mov [rbp+50],ebx
GameAssembly.dll+F15493: EB DB                       - jmp GameAssembly.dll+F15470
GameAssembly.dll+F15495: C7 07 49 00 00 00           - mov [rdi],00000049
GameAssembly.dll+F1549B: 48 8B 15 06 7A EF 04        - mov rdx,[GameAssembly.dll+5E0CEA8]
GameAssembly.dll+F154A2: 48 8D 4D 08                 - lea rcx,[rbp+08]
GameAssembly.dll+F154A6: E8 05 E4 74 FF              - call &lt;changeWaveY&gt;d__17.System.IDisposable.Dispose
GameAssembly.dll+F154AB: EB 1C                       - jmp GameAssembly.dll+F154C9
GameAssembly.dll+F154AD: 48 8B 15 F4 79 EF 04        - mov rdx,[GameAssembly.dll+5E0CEA8]
GameAssembly.dll+F154B4: 48 8D 4D 08                 - lea rcx,[rbp+08]
GameAssembly.dll+F154B8: E8 F3 E3 74 FF              - call &lt;changeWaveY&gt;d__17.System.IDisposable.Dispose
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

Max Unique, Sets and Implicit Rolls

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>544</ID>
      <Description>"Max Unique, Sets and Implicit Rolls"</Description>
      <LastState Activated="1"/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
//GameAssembly.dll+23C695B - 88 44 39 20           - mov [rcx+rdi+20],al
aobscanmodule(maxuniques,GameAssembly.dll,FE 48 85 FF 74 2E 3B 5F 18 73 2F 48 63 CB FF C3 8B D3 88 44 39 20 48 8B 46 30) // should be unique
alloc(newmem,$1000,maxuniques)

label(code)
label(return)

newmem:

code:
  mov al, #255
  mov [rcx+rdi+20],al
  mov rax,[rsi+30]
  jmp return

maxuniques+12:
  jmp newmem
  nop 3
return:
registersymbol(maxuniques)

[DISABLE]

maxuniques+12:
  db 88 44 39 20 48 8B 46 30

unregistersymbol(maxuniques)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+23C695B

GameAssembly.dll+23C693E: E8 1D 12 0C FE  - call GameAssembly.il2cpp_runtime_class_init
GameAssembly.dll+23C6943: 33 C9           - xor ecx,ecx
GameAssembly.dll+23C6945: E8 46 0E 67 FE  - call Fun.randomByte
GameAssembly.dll+23C694A: 48 85 FF        - test rdi,rdi
GameAssembly.dll+23C694D: 74 2E           - je GameAssembly.dll+23C697D
GameAssembly.dll+23C694F: 3B 5F 18        - cmp ebx,[rdi+18]
GameAssembly.dll+23C6952: 73 2F           - jae GameAssembly.dll+23C6983
GameAssembly.dll+23C6954: 48 63 CB        - movsxd  rcx,ebx
GameAssembly.dll+23C6957: FF C3           - inc ebx
GameAssembly.dll+23C6959: 8B D3           - mov edx,ebx
// ---------- INJECTING HERE ----------
GameAssembly.dll+23C695B: 88 44 39 20     - mov [rcx+rdi+20],al
// ---------- DONE INJECTING  ----------
GameAssembly.dll+23C695F: 48 8B 46 30     - mov rax,[rsi+30]
GameAssembly.dll+23C6963: 48 8B F8        - mov rdi,rax
GameAssembly.dll+23C6966: 48 85 C0        - test rax,rax
GameAssembly.dll+23C6969: 74 12           - je GameAssembly.dll+23C697D
GameAssembly.dll+23C696B: EB B3           - jmp GameAssembly.dll+23C6920
GameAssembly.dll+23C696D: 48 8B 7C 24 30  - mov rdi,[rsp+30]
GameAssembly.dll+23C6972: 48 8B 5C 24 38  - mov rbx,[rsp+38]
GameAssembly.dll+23C6977: 48 83 C4 20     - add rsp,20
GameAssembly.dll+23C697B: 5E              - pop rsi
GameAssembly.dll+23C697C: C3              - ret 
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

Vacuum crafting mats range (Will Suck the entire map. Had some long freezes in campaign, game comes back no crash)

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>545</ID>
      <Description>"Vacuum crafting mats range (Will Suck the entire map. Had some long freezes in campaign, game comes back no crash)"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
//GameAssembly.dll+7AFF49 - 74 69                 - je GameAssembly.dll+7AFFB4
aobscanmodule(vaccuum,GameAssembly.dll,84 C0 74 69 48 85 ED 0F 84 AA) // should be unique
vaccuum+2:
  db 90 90
registersymbol(vaccuum)

[DISABLE]

vaccuum+2:
  db 74 69

unregistersymbol(vaccuum)
{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+7AFF47

GameAssembly.dll+7AFF19: 48 8D 54 24 20        - lea rdx,[rsp+20]
GameAssembly.dll+7AFF1E: 41 8B 45 08           - mov eax,[r13+08]
GameAssembly.dll+7AFF22: 48 8D 4C 24 30        - lea rcx,[rsp+30]
GameAssembly.dll+7AFF27: 45 33 C9              - xor r9d,r9d
GameAssembly.dll+7AFF2A: F2 0F 11 44 24 30     - movsd [rsp+30],xmm0
GameAssembly.dll+7AFF30: 0F 28 D7              - movaps xmm2,xmm7
GameAssembly.dll+7AFF33: F2 0F 11 74 24 20     - movsd [rsp+20],xmm6
GameAssembly.dll+7AFF39: 44 89 74 24 28        - mov [rsp+28],r14d
GameAssembly.dll+7AFF3E: 89 44 24 38           - mov [rsp+38],eax
GameAssembly.dll+7AFF42: E8 89 15 3C 00        - call Maths.distanceLessThan
// ---------- INJECTING HERE ----------
GameAssembly.dll+7AFF47: 84 C0                 - test al,al
// ---------- DONE INJECTING  ----------
GameAssembly.dll+7AFF49: 74 69                 - je GameAssembly.dll+7AFFB4
GameAssembly.dll+7AFF4B: 48 85 ED              - test rbp,rbp
GameAssembly.dll+7AFF4E: 0F 84 AA 00 00 00     - je GameAssembly.dll+7AFFFE
GameAssembly.dll+7AFF54: 48 8B 8D F8 00 00 00  - mov rcx,[rbp+000000F8]
GameAssembly.dll+7AFF5B: 48 85 C9              - test rcx,rcx
GameAssembly.dll+7AFF5E: 0F 84 9A 00 00 00     - je GameAssembly.dll+7AFFFE
GameAssembly.dll+7AFF64: F2 0F 10 43 18        - movsd xmm0,[rbx+18]
GameAssembly.dll+7AFF69: 4C 8D 44 24 40        - lea r8,[rsp+40]
GameAssembly.dll+7AFF6E: 8B 43 20              - mov eax,[rbx+20]
GameAssembly.dll+7AFF71: 45 33 C9              - xor r9d,r9d
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Rune Script Can Not Toggle

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Fri Feb 23, 2024 3:47 pm
by Impala
muliari14 wrote:
Fri Feb 23, 2024 3:43 pm
Rune Script Can Not Toggle
It toggles for me, are you using a non steam version?


Try this

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>546</ID>
      <Description>"Infinite Runes (Open Inventory)"</Description>
      <LastState/>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
aobscanmodule(infrunes,GameAssembly.dll,8B 40 28 48 83 C4 20 5B C3 E8 1B) // should be unique
alloc(newmem,$1000,infrunes)

label(code)
label(return)

newmem:

code:
  mov [rax+28],#999
  mov eax,[rax+28]
  add rsp,20
  jmp return

infrunes:
  jmp newmem
  nop 2
return:
registersymbol(infrunes)

[DISABLE]

infrunes:
  db 8B 40 28 48 83 C4 20

unregistersymbol(infrunes)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+E2C827

GameAssembly.dll+E2C804: 48 8D 4C 24 30  - lea rcx,[rsp+30]
GameAssembly.dll+E2C809: 48 8B 50 20     - mov rdx,[rax+20]
GameAssembly.dll+E2C80D: 48 89 54 24 30  - mov [rsp+30],rdx
GameAssembly.dll+E2C812: E8 09 54 6D FF  - call GameAssembly.dll+501C20
GameAssembly.dll+E2C817: 48 8B 44 24 30  - mov rax,[rsp+30]
GameAssembly.dll+E2C81C: 48 85 C0        - test rax,rax
GameAssembly.dll+E2C81F: 75 06           - jne GameAssembly.dll+E2C827
GameAssembly.dll+E2C821: 48 83 C4 20     - add rsp,20
GameAssembly.dll+E2C825: 5B              - pop rbx
GameAssembly.dll+E2C826: C3              - ret 
// ---------- INJECTING HERE ----------
GameAssembly.dll+E2C827: 8B 40 28        - mov eax,[rax+28]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+E2C82A: 48 83 C4 20     - add rsp,20
GameAssembly.dll+E2C82E: 5B              - pop rbx
GameAssembly.dll+E2C82F: C3              - ret 
GameAssembly.dll+E2C830: E8 1B 58 6D FF  - call GameAssembly.dll+502050
GameAssembly.dll+E2C835: CC              - int 3 
GameAssembly.dll+E2C836: CC              - int 3 
GameAssembly.dll+E2C837: CC              - int 3 
GameAssembly.dll+E2C838: CC              - int 3 
GameAssembly.dll+E2C839: CC              - int 3 
GameAssembly.dll+E2C83A: CC              - int 3 
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Fri Feb 23, 2024 4:40 pm
by Impala
I created a table for Last Epoch

viewtopic.php?f=4&t=27897

These are just options I wanted, I am not taking requests, this thread a bit too cluttered

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Fri Feb 23, 2024 6:41 pm
by Impala
Tales wrote:
Wed Feb 21, 2024 11:18 pm
Can you make one for Passive points? ex: add 30 Passive Points
viewtopic.php?f=4&t=27897

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Fri Feb 23, 2024 6:55 pm
by garfield028
sanitka wrote:
Fri Feb 23, 2024 2:22 pm
Toga wrote:
Fri Feb 23, 2024 12:03 pm
^ best to find the address of Player Actor
then in the structure you'll have everything you need.

look at Messy's post: viewtopic.php?p=242977#p242977
and his post above that one

gl
Get Player Actor Pointer (copy & paste to your table):

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>4</ID>
      <Description>"Get Actor"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Last Epoch.exe
  Version: 
  Date   : 2024-02-22
  Author : SanitKa

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(INJPLAYERDMG,GameAssembly.dll,F6 FF 84 C0 75 0D B0 01 48 8B 5C 24 30) // should be unique
alloc(newmem,$1000,INJPLAYERDMG)

label(code)
label(return)
label(actorPtr)

newmem:

code:
  mov rdi,[rbx+18]                             // ActorData
  cmp dword ptr[rdi+54],0                      // enemy
  je @f

  cmp dword ptr[rdi+54],2                      // boss ?
  je @f

  mov [actorPtr],rbx

@@:
  mov al,01                                    // damageable
  mov rbx,[rsp+30]
  jmp return

actorPtr:
  dq 0

INJPLAYERDMG+06:
  jmp newmem
  nop 2
return:
registersymbol(INJPLAYERDMG)
registersymbol(actorPtr)

[DISABLE]

INJPLAYERDMG+06:
  db B0 01 48 8B 5C 24 30

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+149081F

GameAssembly.dll+1490804: 84 C0           - test al,al
GameAssembly.dll+1490806: 74 17           - je GameAssembly.dll+149081F
GameAssembly.dll+1490808: 48 8B 4B 50     - mov rcx,[rbx+50]
GameAssembly.dll+149080C: 48 85 C9        - test rcx,rcx
GameAssembly.dll+149080F: 74 28           - je GameAssembly.dll+1490839
GameAssembly.dll+1490811: 45 33 C0        - xor r8d,r8d
GameAssembly.dll+1490814: B2 01           - mov dl,01
GameAssembly.dll+1490816: E8 95 A8 F6 FF  - call Dying.isDying
GameAssembly.dll+149081B: 84 C0           - test al,al
GameAssembly.dll+149081D: 75 0D           - jne GameAssembly.dll+149082C
// ---------- INJECTING HERE ----------
GameAssembly.dll+149081F: B0 01           - mov al,01
// ---------- DONE INJECTING  ----------
GameAssembly.dll+1490821: 48 8B 5C 24 30  - mov rbx,[rsp+30]
GameAssembly.dll+1490826: 48 83 C4 20     - add rsp,20
GameAssembly.dll+149082A: 5F              - pop rdi
GameAssembly.dll+149082B: C3              - ret 
GameAssembly.dll+149082C: 48 8B 5C 24 30  - mov rbx,[rsp+30]
GameAssembly.dll+1490831: 32 C0           - xor al,al
GameAssembly.dll+1490833: 48 83 C4 20     - add rsp,20
GameAssembly.dll+1490837: 5F              - pop rdi
GameAssembly.dll+1490838: C3              - ret 
GameAssembly.dll+1490839: E8 22 13 C4 FE  - call GameAssembly.dll+D1B60
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>5</ID>
          <Description>"Actor Ptr"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>8 Bytes</VariableType>
          <Address>actorPtr</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Actor Structure (save to disk and import in Structure Disect):

Code: Select all

<Structures>
  <Structure Name="Actor" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
    <Elements>
      <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="m_CachedPtr" DisplayMethod="unsigned integer"/>
      <Element Offset="24" Vartype="Pointer" Bytesize="8" OffsetHex="00000018" ChildStruct="ActorData" Description="data" DisplayMethod="unsigned integer"/>
      <Element Offset="32" Vartype="Pointer" Bytesize="8" OffsetHex="00000020" Description="actorSync" DisplayMethod="unsigned integer"/>
      <Element Offset="40" Vartype="Byte" Bytesize="1" OffsetHex="00000028" Description="foundActorSync" DisplayMethod="unsigned integer"/>
      <Element Offset="48" Vartype="Pointer" Bytesize="8" OffsetHex="00000030" Description="health" DisplayMethod="unsigned integer">
        <Structure Name="UnitHealth" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
          <Elements>
            <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="m_CachedPtr" DisplayMethod="unsigned integer"/>
            <Element Offset="24" Vartype="Byte" Bytesize="1" OffsetHex="00000018" Description="_hasFirstTicked" DisplayMethod="unsigned integer"/>
            <Element Offset="32" Vartype="Pointer" Bytesize="8" OffsetHex="00000020" Description="actor" DisplayMethod="unsigned integer"/>
            <Element Offset="40" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000028" Description="maxHealth" DisplayMethod="unsigned integer"/>
            <Element Offset="44" Vartype="Float" Bytesize="4" OffsetHex="0000002C" Description="currentHealth" DisplayMethod="unsigned integer"/>
            <Element Offset="48" Vartype="Byte" Bytesize="1" OffsetHex="00000030" Description="damageable" DisplayMethod="unsigned integer"/>
            <Element Offset="49" Vartype="Byte" Bytesize="1" OffsetHex="00000031" Description="canDie" DisplayMethod="unsigned integer"/>
            <Element Offset="50" Vartype="Byte" Bytesize="1" OffsetHex="00000032" Description="healable" DisplayMethod="unsigned integer"/>
            <Element Offset="52" Vartype="Float" Bytesize="4" OffsetHex="00000034" Description="baseHealthRegenPerSecond" DisplayMethod="unsigned integer"/>
            <Element Offset="56" Vartype="Float" Bytesize="4" OffsetHex="00000038" Description="addedHealthRegenPerSecond" DisplayMethod="unsigned integer"/>
            <Element Offset="64" Vartype="Pointer" Bytesize="8" OffsetHex="00000040" Description="damageTakenEvent" DisplayMethod="unsigned integer"/>
            <Element Offset="72" Vartype="Pointer" Bytesize="8" OffsetHex="00000048" Description="lethalDamageTakenEvent" DisplayMethod="unsigned integer"/>
            <Element Offset="80" Vartype="Pointer" Bytesize="8" OffsetHex="00000050" Description="healthChangeEvent" DisplayMethod="unsigned integer"/>
            <Element Offset="88" Vartype="Pointer" Bytesize="8" OffsetHex="00000058" Description="unimportanceModifier" DisplayMethod="unsigned integer"/>
            <Element Offset="96" Vartype="Pointer" Bytesize="8" OffsetHex="00000060" Description="unimportanceCoroutine" DisplayMethod="unsigned integer"/>
            <Element Offset="104" Vartype="Float" Bytesize="4" OffsetHex="00000068" Description="origonalUnimportance" DisplayMethod="unsigned integer"/>
            <Element Offset="108" Vartype="4 Bytes" Bytesize="4" OffsetHex="0000006C" Description="additionalSourcesOfCannotDie" DisplayMethod="unsigned integer"/>
            <Element Offset="112" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000070" Description="oldHealthRatio" DisplayMethod="unsigned integer"/>
            <Element Offset="116" Vartype="Byte" Bytesize="1" OffsetHex="00000074" Description="healthRatio" DisplayMethod="unsigned integer"/>
            <Element Offset="117" Vartype="Byte" Bytesize="1" OffsetHex="00000075" Description="useHealthCap" DisplayMethod="unsigned integer"/>
            <Element Offset="120" Vartype="Float" Bytesize="4" OffsetHex="00000078" Description="healthCap" DisplayMethod="unsigned integer"/>
            <Element Offset="128" Vartype="Pointer" Bytesize="8" OffsetHex="00000080" Description="activeHealthCaps" DisplayMethod="unsigned integer"/>
            <Element Offset="136" Vartype="Pointer" Bytesize="8" OffsetHex="00000088" Description="tForm" DisplayMethod="unsigned integer"/>
            <Element Offset="144" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000090" Description="healthSerialisation" DisplayMethod="unsigned integer"/>
            <Element Offset="148" Vartype="Float" Bytesize="4" OffsetHex="00000094" Description="effectiveHealthModifier" DisplayMethod="unsigned integer"/>
            <Element Offset="152" Vartype="Float" Bytesize="4" OffsetHex="00000098" Description="startingHealthPercentage" DisplayMethod="unsigned integer"/>
            <Element Offset="160" Vartype="Pointer" Bytesize="8" OffsetHex="000000A0" Description="protectionDamageTypes" DisplayMethod="unsigned integer"/>
            <Element Offset="168" Vartype="Pointer" Bytesize="8" OffsetHex="000000A8" Description="relativeProtectionValues" DisplayMethod="unsigned integer"/>
          </Elements>
        </Structure>
      </Element>
      <Element Offset="56" Vartype="Pointer" Bytesize="8" OffsetHex="00000038" Description="alignmentManager" DisplayMethod="unsigned integer"/>
      <Element Offset="64" Vartype="Pointer" Bytesize="8" OffsetHex="00000040" Description="protection" DisplayMethod="unsigned integer"/>
      <Element Offset="72" Vartype="Pointer" Bytesize="8" OffsetHex="00000048" Description="stats" DisplayMethod="unsigned integer"/>
      <Element Offset="80" Vartype="Pointer" Bytesize="8" OffsetHex="00000050" Description="dying" DisplayMethod="unsigned integer"/>
      <Element Offset="88" Vartype="Pointer" Bytesize="8" OffsetHex="00000058" Description="stateController" DisplayMethod="unsigned integer"/>
      <Element Offset="96" Vartype="Pointer" Bytesize="8" OffsetHex="00000060" Description="summoned" DisplayMethod="unsigned integer"/>
      <Element Offset="104" Vartype="Pointer" Bytesize="8" OffsetHex="00000068" Description="mana" DisplayMethod="unsigned integer"/>
      <Element Offset="112" Vartype="Pointer" Bytesize="8" OffsetHex="00000070" Description="chargeManager" DisplayMethod="unsigned integer"/>
      <Element Offset="120" Vartype="Pointer" Bytesize="8" OffsetHex="00000078" Description="leechTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="128" Vartype="Pointer" Bytesize="8" OffsetHex="00000080" Description="statBuffs" DisplayMethod="unsigned integer"/>
      <Element Offset="136" Vartype="Pointer" Bytesize="8" OffsetHex="00000088" Description="abilityObjectConstructor" DisplayMethod="unsigned integer"/>
      <Element Offset="144" Vartype="Pointer" Bytesize="8" OffsetHex="00000090" Description="tForm" DisplayMethod="unsigned integer"/>
      <Element Offset="152" Vartype="Pointer" Bytesize="8" OffsetHex="00000098" Description="sizeManager" DisplayMethod="unsigned integer"/>
      <Element Offset="160" Vartype="Pointer" Bytesize="8" OffsetHex="000000A0" Description="navMeshAgent" DisplayMethod="unsigned integer"/>
      <Element Offset="168" Vartype="Pointer" Bytesize="8" OffsetHex="000000A8" Description="ailmentReceiver" DisplayMethod="unsigned integer"/>
      <Element Offset="176" Vartype="Pointer" Bytesize="8" OffsetHex="000000B0" Description="accuracyManager" DisplayMethod="unsigned integer"/>
      <Element Offset="184" Vartype="Pointer" Bytesize="8" OffsetHex="000000B8" Description="animationManager" DisplayMethod="unsigned integer"/>
      <Element Offset="192" Vartype="Pointer" Bytesize="8" OffsetHex="000000C0" Description="targetFinder" DisplayMethod="unsigned integer"/>
      <Element Offset="200" Vartype="Pointer" Bytesize="8" OffsetHex="000000C8" Description="waiting" DisplayMethod="unsigned integer"/>
      <Element Offset="208" Vartype="Pointer" Bytesize="8" OffsetHex="000000D0" Description="movingToTarget" DisplayMethod="unsigned integer"/>
      <Element Offset="216" Vartype="Pointer" Bytesize="8" OffsetHex="000000D8" Description="stunned" DisplayMethod="unsigned integer"/>
      <Element Offset="224" Vartype="Pointer" Bytesize="8" OffsetHex="000000E0" Description="relayDamageEvents" DisplayMethod="unsigned integer"/>
      <Element Offset="232" Vartype="Pointer" Bytesize="8" OffsetHex="000000E8" Description="stateSoundManager" DisplayMethod="unsigned integer"/>
      <Element Offset="240" Vartype="Pointer" Bytesize="8" OffsetHex="000000F0" Description="deathItemDrop" DisplayMethod="unsigned integer"/>
      <Element Offset="248" Vartype="Pointer" Bytesize="8" OffsetHex="000000F8" Description="itemContainersManager" DisplayMethod="unsigned integer">
        <Structure Name="ItemContainersManager" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
          <Elements>
            <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="m_CachedPtr" DisplayMethod="unsigned integer"/>
            <Element Offset="24" Vartype="Byte" Bytesize="1" OffsetHex="00000018" Description="_hasFirstTicked" DisplayMethod="unsigned integer"/>
            <Element Offset="32" Vartype="Pointer" Bytesize="8" OffsetHex="00000020" Description="inventory" DisplayMethod="unsigned integer"/>
            <Element Offset="40" Vartype="Pointer" Bytesize="8" OffsetHex="00000028" Description="equipment" DisplayMethod="unsigned integer"/>
            <Element Offset="48" Vartype="Pointer" Bytesize="8" OffsetHex="00000030" Description="materials" DisplayMethod="unsigned integer"/>
            <Element Offset="56" Vartype="Pointer" Bytesize="8" OffsetHex="00000038" Description="cursor" DisplayMethod="unsigned integer"/>
            <Element Offset="64" Vartype="Pointer" Bytesize="8" OffsetHex="00000040" Description="swapBuffer" DisplayMethod="unsigned integer"/>
            <Element Offset="72" Vartype="Pointer" Bytesize="8" OffsetHex="00000048" Description="stash" DisplayMethod="unsigned integer"/>
            <Element Offset="80" Vartype="Pointer" Bytesize="8" OffsetHex="00000050" Description="shop" DisplayMethod="unsigned integer"/>
            <Element Offset="88" Vartype="Pointer" Bytesize="8" OffsetHex="00000058" Description="buyback" DisplayMethod="unsigned integer"/>
            <Element Offset="96" Vartype="Pointer" Bytesize="8" OffsetHex="00000060" Description="crafting" DisplayMethod="unsigned integer"/>
            <Element Offset="104" Vartype="Pointer" Bytesize="8" OffsetHex="00000068" Description="eternityCache" DisplayMethod="unsigned integer"/>
            <Element Offset="112" Vartype="Pointer" Bytesize="8" OffsetHex="00000070" Description="gambling" DisplayMethod="unsigned integer"/>
            <Element Offset="120" Vartype="Pointer" Bytesize="8" OffsetHex="00000078" Description="soulGambling" DisplayMethod="unsigned integer"/>
            <Element Offset="128" Vartype="Pointer" Bytesize="8" OffsetHex="00000080" Description="factionGamblingCoF" DisplayMethod="unsigned integer"/>
            <Element Offset="136" Vartype="Pointer" Bytesize="8" OffsetHex="00000088" Description="factionGamblingMG" DisplayMethod="unsigned integer"/>
            <Element Offset="144" Vartype="Pointer" Bytesize="8" OffsetHex="00000090" Description="arenaKey" DisplayMethod="unsigned integer"/>
            <Element Offset="152" Vartype="Pointer" Bytesize="8" OffsetHex="00000098" Description="dun1Key" DisplayMethod="unsigned integer"/>
            <Element Offset="160" Vartype="Pointer" Bytesize="8" OffsetHex="000000A0" Description="lightlessArborDungeonKey" DisplayMethod="unsigned integer"/>
            <Element Offset="168" Vartype="Pointer" Bytesize="8" OffsetHex="000000A8" Description="soulfireBastionDungeonKey" DisplayMethod="unsigned integer"/>
            <Element Offset="176" Vartype="Pointer" Bytesize="8" OffsetHex="000000B0" Description="idols" DisplayMethod="unsigned integer"/>
            <Element Offset="184" Vartype="Pointer" Bytesize="8" OffsetHex="000000B8" Description="blessings" DisplayMethod="unsigned integer"/>
            <Element Offset="192" Vartype="Pointer" Bytesize="8" OffsetHex="000000C0" Description="lenses" DisplayMethod="unsigned integer"/>
            <Element Offset="200" Vartype="Pointer" Bytesize="8" OffsetHex="000000C8" Description="giftedItems" DisplayMethod="unsigned integer"/>
            <Element Offset="208" Vartype="Pointer" Bytesize="8" OffsetHex="000000D0" Description="itemToGift" DisplayMethod="unsigned integer"/>
            <Element Offset="216" Vartype="Pointer" Bytesize="8" OffsetHex="000000D8" Description="itemToTrade" DisplayMethod="unsigned integer"/>
            <Element Offset="224" Vartype="Pointer" Bytesize="8" OffsetHex="000000E0" Description="itemToTradePreview" DisplayMethod="unsigned integer"/>
            <Element Offset="232" Vartype="Pointer" Bytesize="8" OffsetHex="000000E8" Description="itemToList" DisplayMethod="unsigned integer"/>
            <Element Offset="240" Vartype="Pointer" Bytesize="8" OffsetHex="000000F0" Description="craftingManager" DisplayMethod="unsigned integer"/>
            <Element Offset="248" Vartype="4 Bytes" Bytesize="4" OffsetHex="000000F8" Description="CursorPickedFromPos" DisplayMethod="unsigned integer"/>
            <Element Offset="256" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000100" Description="CursorPickedFromContainer" DisplayMethod="unsigned integer"/>
            <Element Offset="264" Vartype="Pointer" Bytesize="8" OffsetHex="00000108" Description="treeData" DisplayMethod="unsigned integer"/>
            <Element Offset="272" Vartype="Pointer" Bytesize="8" OffsetHex="00000110" Description="characterMutator" DisplayMethod="unsigned integer"/>
            <Element Offset="280" Vartype="Pointer" Bytesize="8" OffsetHex="00000118" Description="tracker" DisplayMethod="unsigned integer"/>
            <Element Offset="288" Vartype="Pointer" Bytesize="8" OffsetHex="00000120" Description="globalDataTracker" DisplayMethod="unsigned integer"/>
            <Element Offset="296" Vartype="Pointer" Bytesize="8" OffsetHex="00000128" Description="shardStorage" DisplayMethod="unsigned integer"/>
            <Element Offset="304" Vartype="Pointer" Bytesize="8" OffsetHex="00000130" Description="resonanceStorage" DisplayMethod="unsigned integer"/>
            <Element Offset="312" Vartype="Pointer" Bytesize="8" OffsetHex="00000138" Description="movingPlayer" DisplayMethod="unsigned integer"/>
            <Element Offset="320" Vartype="Pointer" Bytesize="8" OffsetHex="00000140" Description="actor" DisplayMethod="unsigned integer"/>
            <Element Offset="328" Vartype="Pointer" Bytesize="8" OffsetHex="00000148" Description="itemEquipManager" DisplayMethod="unsigned integer"/>
            <Element Offset="336" Vartype="Byte" Bytesize="1" OffsetHex="00000150" Description="fullyInitialisedAndLoaded" DisplayMethod="unsigned integer"/>
            <Element Offset="337" Vartype="Byte" Bytesize="1" OffsetHex="00000151" Description="saveStashFlag" DisplayMethod="unsigned integer"/>
            <Element Offset="338" Vartype="Byte" Bytesize="1" OffsetHex="00000152" Description="saveCharContainerFlag" DisplayMethod="unsigned integer"/>
            <Element Offset="339" Vartype="Byte" Bytesize="1" OffsetHex="00000153" Description="saveStashLayoutFlag" DisplayMethod="unsigned integer"/>
            <Element Offset="340" Vartype="Byte" Bytesize="1" OffsetHex="00000154" Description="syncBuybackFlag" DisplayMethod="unsigned integer"/>
            <Element Offset="341" Vartype="Byte" Bytesize="1" OffsetHex="00000155" Description="cursorLocked" DisplayMethod="unsigned integer"/>
            <Element Offset="342" Vartype="2 Bytes" Bytesize="2" OffsetHex="00000156" Description="soulGamblingSeed" DisplayMethod="unsigned integer"/>
            <Element Offset="344" Vartype="2 Bytes" Bytesize="2" OffsetHex="00000158" Description="itemsPurchasedFromSoulGamblerSincePopulated" DisplayMethod="unsigned integer"/>
            <Element Offset="352" Vartype="Pointer" Bytesize="8" OffsetHex="00000160" Description="OnCursorLockStatusChange" DisplayMethod="unsigned integer"/>
            <Element Offset="360" Vartype="Pointer" Bytesize="8" OffsetHex="00000168" Description="blessingsDiscovered" DisplayMethod="unsigned integer"/>
            <Element Offset="368" Vartype="Pointer" Bytesize="8" OffsetHex="00000170" Description="unequippableDropPairs" DisplayMethod="unsigned integer"/>
            <Element Offset="376" Vartype="Pointer" Bytesize="8" OffsetHex="00000178" Description="clientAdditionalOffhandBaseTypeProvider" DisplayMethod="unsigned integer"/>
            <Element Offset="384" Vartype="Pointer" Bytesize="8" OffsetHex="00000180" Description="tempCharacterInfoProvider" DisplayMethod="unsigned integer"/>
          </Elements>
        </Structure>
      </Element>
      <Element Offset="256" Vartype="Pointer" Bytesize="8" OffsetHex="00000100" Description="characterMutator" DisplayMethod="unsigned integer"/>
      <Element Offset="264" Vartype="Pointer" Bytesize="8" OffsetHex="00000108" Description="playerQuestListHolder" DisplayMethod="unsigned integer"/>
      <Element Offset="272" Vartype="Pointer" Bytesize="8" OffsetHex="00000110" Description="playerMonolithQuestListHolder" DisplayMethod="unsigned integer"/>
      <Element Offset="280" Vartype="Pointer" Bytesize="8" OffsetHex="00000118" Description="monolithRunsManager" DisplayMethod="unsigned integer"/>
      <Element Offset="288" Vartype="Pointer" Bytesize="8" OffsetHex="00000120" Description="goldTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="296" Vartype="Pointer" Bytesize="8" OffsetHex="00000128" Description="factionInfo" DisplayMethod="unsigned integer"/>
      <Element Offset="304" Vartype="Pointer" Bytesize="8" OffsetHex="00000130" Description="resonancesTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="312" Vartype="Pointer" Bytesize="8" OffsetHex="00000138" Description="experienceTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="320" Vartype="Pointer" Bytesize="8" OffsetHex="00000140" Description="itemDropBonuses" DisplayMethod="unsigned integer"/>
      <Element Offset="328" Vartype="Pointer" Bytesize="8" OffsetHex="00000148" Description="generateItems" DisplayMethod="unsigned integer"/>
      <Element Offset="336" Vartype="Pointer" Bytesize="8" OffsetHex="00000150" Description="localTreeData" DisplayMethod="unsigned integer"/>
      <Element Offset="344" Vartype="Pointer" Bytesize="8" OffsetHex="00000158" Description="globalDataTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="352" Vartype="Pointer" Bytesize="8" OffsetHex="00000160" Description="voteManager" DisplayMethod="unsigned integer"/>
      <Element Offset="360" Vartype="Pointer" Bytesize="8" OffsetHex="00000168" Description="dungeonRunManager" DisplayMethod="unsigned integer"/>
      <Element Offset="368" Vartype="Pointer" Bytesize="8" OffsetHex="00000170" Description="arenaRunManager" DisplayMethod="unsigned integer"/>
      <Element Offset="376" Vartype="Pointer" Bytesize="8" OffsetHex="00000178" Description="weaponInfoHolder" DisplayMethod="unsigned integer"/>
      <Element Offset="384" Vartype="Pointer" Bytesize="8" OffsetHex="00000180" Description="falconIdleState" DisplayMethod="unsigned integer"/>
      <Element Offset="392" Vartype="Pointer" Bytesize="8" OffsetHex="00000188" Description="actorPointerEventListener" DisplayMethod="unsigned integer"/>
      <Element Offset="400" Vartype="Pointer" Bytesize="8" OffsetHex="00000190" Description="colliders" DisplayMethod="unsigned integer"/>
      <Element Offset="408" Vartype="Float" Bytesize="4" OffsetHex="00000198" Description="unscaledRadius" DisplayMethod="unsigned integer"/>
      <Element Offset="412" Vartype="Byte" Bytesize="1" OffsetHex="0000019C" Description="cannotBePushed" DisplayMethod="unsigned integer"/>
      <Element Offset="413" Vartype="Byte" Bytesize="1" OffsetHex="0000019D" Description="isPlayerActor" DisplayMethod="unsigned integer"/>
      <Element Offset="416" Vartype="Float" Bytesize="4" OffsetHex="000001A0" Description="increasedPotionDroprate" DisplayMethod="unsigned integer"/>
      <Element Offset="420" Vartype="Byte" Bytesize="1" OffsetHex="000001A4" Description="cannotTargetWithMovementAbilities" DisplayMethod="unsigned integer"/>
      <Element Offset="424" Vartype="Float" Bytesize="4" OffsetHex="000001A8" Description="distanceFromCentreForAttackersToMoveTowards" DisplayMethod="unsigned integer"/>
      <Element Offset="428" Vartype="Byte" Bytesize="1" OffsetHex="000001AC" Description="neverValidTarget" DisplayMethod="unsigned integer"/>
      <Element Offset="429" Vartype="Byte" Bytesize="1" OffsetHex="000001AD" Description="cannotBeAffectedByDarkness" DisplayMethod="unsigned integer"/>
      <Element Offset="432" Vartype="4 Bytes" Bytesize="4" OffsetHex="000001B0" Description="totalSourcesOfTargetInvalidity" DisplayMethod="unsigned integer"/>
      <Element Offset="440" Vartype="Pointer" Bytesize="8" OffsetHex="000001B8" Description="abilityEventListener" DisplayMethod="unsigned integer"/>
      <Element Offset="448" Vartype="Pointer" Bytesize="8" OffsetHex="000001C0" Description="creationReferences" DisplayMethod="unsigned integer"/>
      <Element Offset="456" Vartype="Pointer" Bytesize="8" OffsetHex="000001C8" Description="summonTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="464" Vartype="Pointer" Bytesize="8" OffsetHex="000001D0" Description="mutatorManager" DisplayMethod="unsigned integer"/>
      <Element Offset="472" Vartype="Byte" Bytesize="1" OffsetHex="000001D8" Description="hasMutatorManager" DisplayMethod="unsigned integer"/>
      <Element Offset="480" Vartype="Pointer" Bytesize="8" OffsetHex="000001E0" Description="hitSoundReceiver" DisplayMethod="unsigned integer"/>
      <Element Offset="488" Vartype="Byte" Bytesize="1" OffsetHex="000001E8" Description="checkedForHitSoundReceiver" DisplayMethod="unsigned integer"/>
      <Element Offset="489" Vartype="Byte" Bytesize="1" OffsetHex="000001E9" Description="hasHitSoundReceiver" DisplayMethod="unsigned integer"/>
      <Element Offset="496" Vartype="Pointer" Bytesize="8" OffsetHex="000001F0" Description="movingPlayerServer" DisplayMethod="unsigned integer"/>
      <Element Offset="504" Vartype="Pointer" Bytesize="8" OffsetHex="000001F8" Description="abilityList" DisplayMethod="unsigned integer"/>
      <Element Offset="512" Vartype="Pointer" Bytesize="8" OffsetHex="00000200" Description="characterDataTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="520" Vartype="Pointer" Bytesize="8" OffsetHex="00000208" Description="healthPotion" DisplayMethod="unsigned integer"/>
      <Element Offset="528" Vartype="Pointer" Bytesize="8" OffsetHex="00000210" Description="minionStanceData" DisplayMethod="unsigned integer"/>
      <Element Offset="536" Vartype="Pointer" Bytesize="8" OffsetHex="00000218" Description="tooltipDPSManager" DisplayMethod="unsigned integer"/>
      <Element Offset="544" Vartype="Pointer" Bytesize="8" OffsetHex="00000220" Description="appliedModKeys" DisplayMethod="unsigned integer"/>
      <Element Offset="552" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000228" Description="rarity" DisplayMethod="unsigned integer"/>
      <Element Offset="553" Vartype="Byte" Bytesize="1" OffsetHex="00000229" Description="isMinion" DisplayMethod="unsigned integer"/>
      <Element Offset="554" Vartype="Byte" Bytesize="1" OffsetHex="0000022A" Description="isSummonedTotem" DisplayMethod="unsigned integer"/>
      <Element Offset="555" Vartype="Byte" Bytesize="1" OffsetHex="0000022B" Description="&lt;UsingAbilityHasActivated&gt;k__BackingField" DisplayMethod="unsigned integer"/>
      <Element Offset="556" Vartype="4 Bytes" Bytesize="4" OffsetHex="0000022C" Description="referenceVersion" DisplayMethod="unsigned integer"/>
      <Element Offset="560" Vartype="Pointer" Bytesize="8" OffsetHex="00000230" Description="usingAbilityActivatedEvent" DisplayMethod="unsigned integer"/>
      <Element Offset="568" Vartype="Pointer" Bytesize="8" OffsetHex="00000238" Description="reachedMovementAbilityDestinationEvent" DisplayMethod="unsigned integer"/>
      <Element Offset="576" Vartype="Pointer" Bytesize="8" OffsetHex="00000240" Description="movedToPlayerSpawnEvent" DisplayMethod="unsigned integer"/>
      <Element Offset="584" Vartype="Float" Bytesize="4" OffsetHex="00000248" Description="initialRadius" DisplayMethod="unsigned integer"/>
      <Element Offset="588" Vartype="Byte" Bytesize="1" OffsetHex="0000024C" Description="hasBeenDisabled" DisplayMethod="unsigned integer"/>
      <Element Offset="589" Vartype="Byte" Bytesize="1" OffsetHex="0000024D" Description="initialised" DisplayMethod="unsigned integer"/>
      <Element Offset="592" Vartype="Float" Bytesize="4" OffsetHex="00000250" Description="timeLastPulled" DisplayMethod="unsigned integer"/>
      <Element Offset="600" Vartype="Pointer" Bytesize="8" OffsetHex="00000258" Description="objectLastPulledBy" DisplayMethod="unsigned integer"/>
    </Elements>
  </Structure>
</Structures>

using the tabale code , the actor Point its NULL!

i checked the patch code and that's not runned when i using F5 set break point ..

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Fri Feb 23, 2024 7:56 pm
by dziobus
Question, what exactly does the "Max Unique, Sets and Implicit Rolls" do / what does it work with cause I dont understand.

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Fri Feb 23, 2024 7:59 pm
by ZKK
garfield028 wrote:
Fri Feb 23, 2024 6:55 pm
sanitka wrote:
Fri Feb 23, 2024 2:22 pm
Toga wrote:
Fri Feb 23, 2024 12:03 pm
^ best to find the address of Player Actor
then in the structure you'll have everything you need.

look at Messy's post: viewtopic.php?p=242977#p242977
and his post above that one

gl
Get Player Actor Pointer (copy & paste to your table):

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>4</ID>
      <Description>"Get Actor"</Description>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Last Epoch.exe
  Version: 
  Date   : 2024-02-22
  Author : SanitKa

  This script does blah blah blah
}

[ENABLE]

aobscanmodule(INJPLAYERDMG,GameAssembly.dll,F6 FF 84 C0 75 0D B0 01 48 8B 5C 24 30) // should be unique
alloc(newmem,$1000,INJPLAYERDMG)

label(code)
label(return)
label(actorPtr)

newmem:

code:
  mov rdi,[rbx+18]                             // ActorData
  cmp dword ptr[rdi+54],0                      // enemy
  je @f

  cmp dword ptr[rdi+54],2                      // boss ?
  je @f

  mov [actorPtr],rbx

@@:
  mov al,01                                    // damageable
  mov rbx,[rsp+30]
  jmp return

actorPtr:
  dq 0

INJPLAYERDMG+06:
  jmp newmem
  nop 2
return:
registersymbol(INJPLAYERDMG)
registersymbol(actorPtr)

[DISABLE]

INJPLAYERDMG+06:
  db B0 01 48 8B 5C 24 30

unregistersymbol(*)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+149081F

GameAssembly.dll+1490804: 84 C0           - test al,al
GameAssembly.dll+1490806: 74 17           - je GameAssembly.dll+149081F
GameAssembly.dll+1490808: 48 8B 4B 50     - mov rcx,[rbx+50]
GameAssembly.dll+149080C: 48 85 C9        - test rcx,rcx
GameAssembly.dll+149080F: 74 28           - je GameAssembly.dll+1490839
GameAssembly.dll+1490811: 45 33 C0        - xor r8d,r8d
GameAssembly.dll+1490814: B2 01           - mov dl,01
GameAssembly.dll+1490816: E8 95 A8 F6 FF  - call Dying.isDying
GameAssembly.dll+149081B: 84 C0           - test al,al
GameAssembly.dll+149081D: 75 0D           - jne GameAssembly.dll+149082C
// ---------- INJECTING HERE ----------
GameAssembly.dll+149081F: B0 01           - mov al,01
// ---------- DONE INJECTING  ----------
GameAssembly.dll+1490821: 48 8B 5C 24 30  - mov rbx,[rsp+30]
GameAssembly.dll+1490826: 48 83 C4 20     - add rsp,20
GameAssembly.dll+149082A: 5F              - pop rdi
GameAssembly.dll+149082B: C3              - ret 
GameAssembly.dll+149082C: 48 8B 5C 24 30  - mov rbx,[rsp+30]
GameAssembly.dll+1490831: 32 C0           - xor al,al
GameAssembly.dll+1490833: 48 83 C4 20     - add rsp,20
GameAssembly.dll+1490837: 5F              - pop rdi
GameAssembly.dll+1490838: C3              - ret 
GameAssembly.dll+1490839: E8 22 13 C4 FE  - call GameAssembly.dll+D1B60
}
</AssemblerScript>
      <CheatEntries>
        <CheatEntry>
          <ID>5</ID>
          <Description>"Actor Ptr"</Description>
          <ShowAsHex>1</ShowAsHex>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>8 Bytes</VariableType>
          <Address>actorPtr</Address>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
</CheatTable>
Actor Structure (save to disk and import in Structure Disect):

Code: Select all

<Structures>
  <Structure Name="Actor" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
    <Elements>
      <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="m_CachedPtr" DisplayMethod="unsigned integer"/>
      <Element Offset="24" Vartype="Pointer" Bytesize="8" OffsetHex="00000018" ChildStruct="ActorData" Description="data" DisplayMethod="unsigned integer"/>
      <Element Offset="32" Vartype="Pointer" Bytesize="8" OffsetHex="00000020" Description="actorSync" DisplayMethod="unsigned integer"/>
      <Element Offset="40" Vartype="Byte" Bytesize="1" OffsetHex="00000028" Description="foundActorSync" DisplayMethod="unsigned integer"/>
      <Element Offset="48" Vartype="Pointer" Bytesize="8" OffsetHex="00000030" Description="health" DisplayMethod="unsigned integer">
        <Structure Name="UnitHealth" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
          <Elements>
            <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="m_CachedPtr" DisplayMethod="unsigned integer"/>
            <Element Offset="24" Vartype="Byte" Bytesize="1" OffsetHex="00000018" Description="_hasFirstTicked" DisplayMethod="unsigned integer"/>
            <Element Offset="32" Vartype="Pointer" Bytesize="8" OffsetHex="00000020" Description="actor" DisplayMethod="unsigned integer"/>
            <Element Offset="40" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000028" Description="maxHealth" DisplayMethod="unsigned integer"/>
            <Element Offset="44" Vartype="Float" Bytesize="4" OffsetHex="0000002C" Description="currentHealth" DisplayMethod="unsigned integer"/>
            <Element Offset="48" Vartype="Byte" Bytesize="1" OffsetHex="00000030" Description="damageable" DisplayMethod="unsigned integer"/>
            <Element Offset="49" Vartype="Byte" Bytesize="1" OffsetHex="00000031" Description="canDie" DisplayMethod="unsigned integer"/>
            <Element Offset="50" Vartype="Byte" Bytesize="1" OffsetHex="00000032" Description="healable" DisplayMethod="unsigned integer"/>
            <Element Offset="52" Vartype="Float" Bytesize="4" OffsetHex="00000034" Description="baseHealthRegenPerSecond" DisplayMethod="unsigned integer"/>
            <Element Offset="56" Vartype="Float" Bytesize="4" OffsetHex="00000038" Description="addedHealthRegenPerSecond" DisplayMethod="unsigned integer"/>
            <Element Offset="64" Vartype="Pointer" Bytesize="8" OffsetHex="00000040" Description="damageTakenEvent" DisplayMethod="unsigned integer"/>
            <Element Offset="72" Vartype="Pointer" Bytesize="8" OffsetHex="00000048" Description="lethalDamageTakenEvent" DisplayMethod="unsigned integer"/>
            <Element Offset="80" Vartype="Pointer" Bytesize="8" OffsetHex="00000050" Description="healthChangeEvent" DisplayMethod="unsigned integer"/>
            <Element Offset="88" Vartype="Pointer" Bytesize="8" OffsetHex="00000058" Description="unimportanceModifier" DisplayMethod="unsigned integer"/>
            <Element Offset="96" Vartype="Pointer" Bytesize="8" OffsetHex="00000060" Description="unimportanceCoroutine" DisplayMethod="unsigned integer"/>
            <Element Offset="104" Vartype="Float" Bytesize="4" OffsetHex="00000068" Description="origonalUnimportance" DisplayMethod="unsigned integer"/>
            <Element Offset="108" Vartype="4 Bytes" Bytesize="4" OffsetHex="0000006C" Description="additionalSourcesOfCannotDie" DisplayMethod="unsigned integer"/>
            <Element Offset="112" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000070" Description="oldHealthRatio" DisplayMethod="unsigned integer"/>
            <Element Offset="116" Vartype="Byte" Bytesize="1" OffsetHex="00000074" Description="healthRatio" DisplayMethod="unsigned integer"/>
            <Element Offset="117" Vartype="Byte" Bytesize="1" OffsetHex="00000075" Description="useHealthCap" DisplayMethod="unsigned integer"/>
            <Element Offset="120" Vartype="Float" Bytesize="4" OffsetHex="00000078" Description="healthCap" DisplayMethod="unsigned integer"/>
            <Element Offset="128" Vartype="Pointer" Bytesize="8" OffsetHex="00000080" Description="activeHealthCaps" DisplayMethod="unsigned integer"/>
            <Element Offset="136" Vartype="Pointer" Bytesize="8" OffsetHex="00000088" Description="tForm" DisplayMethod="unsigned integer"/>
            <Element Offset="144" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000090" Description="healthSerialisation" DisplayMethod="unsigned integer"/>
            <Element Offset="148" Vartype="Float" Bytesize="4" OffsetHex="00000094" Description="effectiveHealthModifier" DisplayMethod="unsigned integer"/>
            <Element Offset="152" Vartype="Float" Bytesize="4" OffsetHex="00000098" Description="startingHealthPercentage" DisplayMethod="unsigned integer"/>
            <Element Offset="160" Vartype="Pointer" Bytesize="8" OffsetHex="000000A0" Description="protectionDamageTypes" DisplayMethod="unsigned integer"/>
            <Element Offset="168" Vartype="Pointer" Bytesize="8" OffsetHex="000000A8" Description="relativeProtectionValues" DisplayMethod="unsigned integer"/>
          </Elements>
        </Structure>
      </Element>
      <Element Offset="56" Vartype="Pointer" Bytesize="8" OffsetHex="00000038" Description="alignmentManager" DisplayMethod="unsigned integer"/>
      <Element Offset="64" Vartype="Pointer" Bytesize="8" OffsetHex="00000040" Description="protection" DisplayMethod="unsigned integer"/>
      <Element Offset="72" Vartype="Pointer" Bytesize="8" OffsetHex="00000048" Description="stats" DisplayMethod="unsigned integer"/>
      <Element Offset="80" Vartype="Pointer" Bytesize="8" OffsetHex="00000050" Description="dying" DisplayMethod="unsigned integer"/>
      <Element Offset="88" Vartype="Pointer" Bytesize="8" OffsetHex="00000058" Description="stateController" DisplayMethod="unsigned integer"/>
      <Element Offset="96" Vartype="Pointer" Bytesize="8" OffsetHex="00000060" Description="summoned" DisplayMethod="unsigned integer"/>
      <Element Offset="104" Vartype="Pointer" Bytesize="8" OffsetHex="00000068" Description="mana" DisplayMethod="unsigned integer"/>
      <Element Offset="112" Vartype="Pointer" Bytesize="8" OffsetHex="00000070" Description="chargeManager" DisplayMethod="unsigned integer"/>
      <Element Offset="120" Vartype="Pointer" Bytesize="8" OffsetHex="00000078" Description="leechTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="128" Vartype="Pointer" Bytesize="8" OffsetHex="00000080" Description="statBuffs" DisplayMethod="unsigned integer"/>
      <Element Offset="136" Vartype="Pointer" Bytesize="8" OffsetHex="00000088" Description="abilityObjectConstructor" DisplayMethod="unsigned integer"/>
      <Element Offset="144" Vartype="Pointer" Bytesize="8" OffsetHex="00000090" Description="tForm" DisplayMethod="unsigned integer"/>
      <Element Offset="152" Vartype="Pointer" Bytesize="8" OffsetHex="00000098" Description="sizeManager" DisplayMethod="unsigned integer"/>
      <Element Offset="160" Vartype="Pointer" Bytesize="8" OffsetHex="000000A0" Description="navMeshAgent" DisplayMethod="unsigned integer"/>
      <Element Offset="168" Vartype="Pointer" Bytesize="8" OffsetHex="000000A8" Description="ailmentReceiver" DisplayMethod="unsigned integer"/>
      <Element Offset="176" Vartype="Pointer" Bytesize="8" OffsetHex="000000B0" Description="accuracyManager" DisplayMethod="unsigned integer"/>
      <Element Offset="184" Vartype="Pointer" Bytesize="8" OffsetHex="000000B8" Description="animationManager" DisplayMethod="unsigned integer"/>
      <Element Offset="192" Vartype="Pointer" Bytesize="8" OffsetHex="000000C0" Description="targetFinder" DisplayMethod="unsigned integer"/>
      <Element Offset="200" Vartype="Pointer" Bytesize="8" OffsetHex="000000C8" Description="waiting" DisplayMethod="unsigned integer"/>
      <Element Offset="208" Vartype="Pointer" Bytesize="8" OffsetHex="000000D0" Description="movingToTarget" DisplayMethod="unsigned integer"/>
      <Element Offset="216" Vartype="Pointer" Bytesize="8" OffsetHex="000000D8" Description="stunned" DisplayMethod="unsigned integer"/>
      <Element Offset="224" Vartype="Pointer" Bytesize="8" OffsetHex="000000E0" Description="relayDamageEvents" DisplayMethod="unsigned integer"/>
      <Element Offset="232" Vartype="Pointer" Bytesize="8" OffsetHex="000000E8" Description="stateSoundManager" DisplayMethod="unsigned integer"/>
      <Element Offset="240" Vartype="Pointer" Bytesize="8" OffsetHex="000000F0" Description="deathItemDrop" DisplayMethod="unsigned integer"/>
      <Element Offset="248" Vartype="Pointer" Bytesize="8" OffsetHex="000000F8" Description="itemContainersManager" DisplayMethod="unsigned integer">
        <Structure Name="ItemContainersManager" AutoFill="0" AutoCreate="1" DefaultHex="0" AutoDestroy="0" DoNotSaveLocal="0" RLECompression="1" AutoCreateStructsize="4096">
          <Elements>
            <Element Offset="16" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000010" Description="m_CachedPtr" DisplayMethod="unsigned integer"/>
            <Element Offset="24" Vartype="Byte" Bytesize="1" OffsetHex="00000018" Description="_hasFirstTicked" DisplayMethod="unsigned integer"/>
            <Element Offset="32" Vartype="Pointer" Bytesize="8" OffsetHex="00000020" Description="inventory" DisplayMethod="unsigned integer"/>
            <Element Offset="40" Vartype="Pointer" Bytesize="8" OffsetHex="00000028" Description="equipment" DisplayMethod="unsigned integer"/>
            <Element Offset="48" Vartype="Pointer" Bytesize="8" OffsetHex="00000030" Description="materials" DisplayMethod="unsigned integer"/>
            <Element Offset="56" Vartype="Pointer" Bytesize="8" OffsetHex="00000038" Description="cursor" DisplayMethod="unsigned integer"/>
            <Element Offset="64" Vartype="Pointer" Bytesize="8" OffsetHex="00000040" Description="swapBuffer" DisplayMethod="unsigned integer"/>
            <Element Offset="72" Vartype="Pointer" Bytesize="8" OffsetHex="00000048" Description="stash" DisplayMethod="unsigned integer"/>
            <Element Offset="80" Vartype="Pointer" Bytesize="8" OffsetHex="00000050" Description="shop" DisplayMethod="unsigned integer"/>
            <Element Offset="88" Vartype="Pointer" Bytesize="8" OffsetHex="00000058" Description="buyback" DisplayMethod="unsigned integer"/>
            <Element Offset="96" Vartype="Pointer" Bytesize="8" OffsetHex="00000060" Description="crafting" DisplayMethod="unsigned integer"/>
            <Element Offset="104" Vartype="Pointer" Bytesize="8" OffsetHex="00000068" Description="eternityCache" DisplayMethod="unsigned integer"/>
            <Element Offset="112" Vartype="Pointer" Bytesize="8" OffsetHex="00000070" Description="gambling" DisplayMethod="unsigned integer"/>
            <Element Offset="120" Vartype="Pointer" Bytesize="8" OffsetHex="00000078" Description="soulGambling" DisplayMethod="unsigned integer"/>
            <Element Offset="128" Vartype="Pointer" Bytesize="8" OffsetHex="00000080" Description="factionGamblingCoF" DisplayMethod="unsigned integer"/>
            <Element Offset="136" Vartype="Pointer" Bytesize="8" OffsetHex="00000088" Description="factionGamblingMG" DisplayMethod="unsigned integer"/>
            <Element Offset="144" Vartype="Pointer" Bytesize="8" OffsetHex="00000090" Description="arenaKey" DisplayMethod="unsigned integer"/>
            <Element Offset="152" Vartype="Pointer" Bytesize="8" OffsetHex="00000098" Description="dun1Key" DisplayMethod="unsigned integer"/>
            <Element Offset="160" Vartype="Pointer" Bytesize="8" OffsetHex="000000A0" Description="lightlessArborDungeonKey" DisplayMethod="unsigned integer"/>
            <Element Offset="168" Vartype="Pointer" Bytesize="8" OffsetHex="000000A8" Description="soulfireBastionDungeonKey" DisplayMethod="unsigned integer"/>
            <Element Offset="176" Vartype="Pointer" Bytesize="8" OffsetHex="000000B0" Description="idols" DisplayMethod="unsigned integer"/>
            <Element Offset="184" Vartype="Pointer" Bytesize="8" OffsetHex="000000B8" Description="blessings" DisplayMethod="unsigned integer"/>
            <Element Offset="192" Vartype="Pointer" Bytesize="8" OffsetHex="000000C0" Description="lenses" DisplayMethod="unsigned integer"/>
            <Element Offset="200" Vartype="Pointer" Bytesize="8" OffsetHex="000000C8" Description="giftedItems" DisplayMethod="unsigned integer"/>
            <Element Offset="208" Vartype="Pointer" Bytesize="8" OffsetHex="000000D0" Description="itemToGift" DisplayMethod="unsigned integer"/>
            <Element Offset="216" Vartype="Pointer" Bytesize="8" OffsetHex="000000D8" Description="itemToTrade" DisplayMethod="unsigned integer"/>
            <Element Offset="224" Vartype="Pointer" Bytesize="8" OffsetHex="000000E0" Description="itemToTradePreview" DisplayMethod="unsigned integer"/>
            <Element Offset="232" Vartype="Pointer" Bytesize="8" OffsetHex="000000E8" Description="itemToList" DisplayMethod="unsigned integer"/>
            <Element Offset="240" Vartype="Pointer" Bytesize="8" OffsetHex="000000F0" Description="craftingManager" DisplayMethod="unsigned integer"/>
            <Element Offset="248" Vartype="4 Bytes" Bytesize="4" OffsetHex="000000F8" Description="CursorPickedFromPos" DisplayMethod="unsigned integer"/>
            <Element Offset="256" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000100" Description="CursorPickedFromContainer" DisplayMethod="unsigned integer"/>
            <Element Offset="264" Vartype="Pointer" Bytesize="8" OffsetHex="00000108" Description="treeData" DisplayMethod="unsigned integer"/>
            <Element Offset="272" Vartype="Pointer" Bytesize="8" OffsetHex="00000110" Description="characterMutator" DisplayMethod="unsigned integer"/>
            <Element Offset="280" Vartype="Pointer" Bytesize="8" OffsetHex="00000118" Description="tracker" DisplayMethod="unsigned integer"/>
            <Element Offset="288" Vartype="Pointer" Bytesize="8" OffsetHex="00000120" Description="globalDataTracker" DisplayMethod="unsigned integer"/>
            <Element Offset="296" Vartype="Pointer" Bytesize="8" OffsetHex="00000128" Description="shardStorage" DisplayMethod="unsigned integer"/>
            <Element Offset="304" Vartype="Pointer" Bytesize="8" OffsetHex="00000130" Description="resonanceStorage" DisplayMethod="unsigned integer"/>
            <Element Offset="312" Vartype="Pointer" Bytesize="8" OffsetHex="00000138" Description="movingPlayer" DisplayMethod="unsigned integer"/>
            <Element Offset="320" Vartype="Pointer" Bytesize="8" OffsetHex="00000140" Description="actor" DisplayMethod="unsigned integer"/>
            <Element Offset="328" Vartype="Pointer" Bytesize="8" OffsetHex="00000148" Description="itemEquipManager" DisplayMethod="unsigned integer"/>
            <Element Offset="336" Vartype="Byte" Bytesize="1" OffsetHex="00000150" Description="fullyInitialisedAndLoaded" DisplayMethod="unsigned integer"/>
            <Element Offset="337" Vartype="Byte" Bytesize="1" OffsetHex="00000151" Description="saveStashFlag" DisplayMethod="unsigned integer"/>
            <Element Offset="338" Vartype="Byte" Bytesize="1" OffsetHex="00000152" Description="saveCharContainerFlag" DisplayMethod="unsigned integer"/>
            <Element Offset="339" Vartype="Byte" Bytesize="1" OffsetHex="00000153" Description="saveStashLayoutFlag" DisplayMethod="unsigned integer"/>
            <Element Offset="340" Vartype="Byte" Bytesize="1" OffsetHex="00000154" Description="syncBuybackFlag" DisplayMethod="unsigned integer"/>
            <Element Offset="341" Vartype="Byte" Bytesize="1" OffsetHex="00000155" Description="cursorLocked" DisplayMethod="unsigned integer"/>
            <Element Offset="342" Vartype="2 Bytes" Bytesize="2" OffsetHex="00000156" Description="soulGamblingSeed" DisplayMethod="unsigned integer"/>
            <Element Offset="344" Vartype="2 Bytes" Bytesize="2" OffsetHex="00000158" Description="itemsPurchasedFromSoulGamblerSincePopulated" DisplayMethod="unsigned integer"/>
            <Element Offset="352" Vartype="Pointer" Bytesize="8" OffsetHex="00000160" Description="OnCursorLockStatusChange" DisplayMethod="unsigned integer"/>
            <Element Offset="360" Vartype="Pointer" Bytesize="8" OffsetHex="00000168" Description="blessingsDiscovered" DisplayMethod="unsigned integer"/>
            <Element Offset="368" Vartype="Pointer" Bytesize="8" OffsetHex="00000170" Description="unequippableDropPairs" DisplayMethod="unsigned integer"/>
            <Element Offset="376" Vartype="Pointer" Bytesize="8" OffsetHex="00000178" Description="clientAdditionalOffhandBaseTypeProvider" DisplayMethod="unsigned integer"/>
            <Element Offset="384" Vartype="Pointer" Bytesize="8" OffsetHex="00000180" Description="tempCharacterInfoProvider" DisplayMethod="unsigned integer"/>
          </Elements>
        </Structure>
      </Element>
      <Element Offset="256" Vartype="Pointer" Bytesize="8" OffsetHex="00000100" Description="characterMutator" DisplayMethod="unsigned integer"/>
      <Element Offset="264" Vartype="Pointer" Bytesize="8" OffsetHex="00000108" Description="playerQuestListHolder" DisplayMethod="unsigned integer"/>
      <Element Offset="272" Vartype="Pointer" Bytesize="8" OffsetHex="00000110" Description="playerMonolithQuestListHolder" DisplayMethod="unsigned integer"/>
      <Element Offset="280" Vartype="Pointer" Bytesize="8" OffsetHex="00000118" Description="monolithRunsManager" DisplayMethod="unsigned integer"/>
      <Element Offset="288" Vartype="Pointer" Bytesize="8" OffsetHex="00000120" Description="goldTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="296" Vartype="Pointer" Bytesize="8" OffsetHex="00000128" Description="factionInfo" DisplayMethod="unsigned integer"/>
      <Element Offset="304" Vartype="Pointer" Bytesize="8" OffsetHex="00000130" Description="resonancesTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="312" Vartype="Pointer" Bytesize="8" OffsetHex="00000138" Description="experienceTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="320" Vartype="Pointer" Bytesize="8" OffsetHex="00000140" Description="itemDropBonuses" DisplayMethod="unsigned integer"/>
      <Element Offset="328" Vartype="Pointer" Bytesize="8" OffsetHex="00000148" Description="generateItems" DisplayMethod="unsigned integer"/>
      <Element Offset="336" Vartype="Pointer" Bytesize="8" OffsetHex="00000150" Description="localTreeData" DisplayMethod="unsigned integer"/>
      <Element Offset="344" Vartype="Pointer" Bytesize="8" OffsetHex="00000158" Description="globalDataTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="352" Vartype="Pointer" Bytesize="8" OffsetHex="00000160" Description="voteManager" DisplayMethod="unsigned integer"/>
      <Element Offset="360" Vartype="Pointer" Bytesize="8" OffsetHex="00000168" Description="dungeonRunManager" DisplayMethod="unsigned integer"/>
      <Element Offset="368" Vartype="Pointer" Bytesize="8" OffsetHex="00000170" Description="arenaRunManager" DisplayMethod="unsigned integer"/>
      <Element Offset="376" Vartype="Pointer" Bytesize="8" OffsetHex="00000178" Description="weaponInfoHolder" DisplayMethod="unsigned integer"/>
      <Element Offset="384" Vartype="Pointer" Bytesize="8" OffsetHex="00000180" Description="falconIdleState" DisplayMethod="unsigned integer"/>
      <Element Offset="392" Vartype="Pointer" Bytesize="8" OffsetHex="00000188" Description="actorPointerEventListener" DisplayMethod="unsigned integer"/>
      <Element Offset="400" Vartype="Pointer" Bytesize="8" OffsetHex="00000190" Description="colliders" DisplayMethod="unsigned integer"/>
      <Element Offset="408" Vartype="Float" Bytesize="4" OffsetHex="00000198" Description="unscaledRadius" DisplayMethod="unsigned integer"/>
      <Element Offset="412" Vartype="Byte" Bytesize="1" OffsetHex="0000019C" Description="cannotBePushed" DisplayMethod="unsigned integer"/>
      <Element Offset="413" Vartype="Byte" Bytesize="1" OffsetHex="0000019D" Description="isPlayerActor" DisplayMethod="unsigned integer"/>
      <Element Offset="416" Vartype="Float" Bytesize="4" OffsetHex="000001A0" Description="increasedPotionDroprate" DisplayMethod="unsigned integer"/>
      <Element Offset="420" Vartype="Byte" Bytesize="1" OffsetHex="000001A4" Description="cannotTargetWithMovementAbilities" DisplayMethod="unsigned integer"/>
      <Element Offset="424" Vartype="Float" Bytesize="4" OffsetHex="000001A8" Description="distanceFromCentreForAttackersToMoveTowards" DisplayMethod="unsigned integer"/>
      <Element Offset="428" Vartype="Byte" Bytesize="1" OffsetHex="000001AC" Description="neverValidTarget" DisplayMethod="unsigned integer"/>
      <Element Offset="429" Vartype="Byte" Bytesize="1" OffsetHex="000001AD" Description="cannotBeAffectedByDarkness" DisplayMethod="unsigned integer"/>
      <Element Offset="432" Vartype="4 Bytes" Bytesize="4" OffsetHex="000001B0" Description="totalSourcesOfTargetInvalidity" DisplayMethod="unsigned integer"/>
      <Element Offset="440" Vartype="Pointer" Bytesize="8" OffsetHex="000001B8" Description="abilityEventListener" DisplayMethod="unsigned integer"/>
      <Element Offset="448" Vartype="Pointer" Bytesize="8" OffsetHex="000001C0" Description="creationReferences" DisplayMethod="unsigned integer"/>
      <Element Offset="456" Vartype="Pointer" Bytesize="8" OffsetHex="000001C8" Description="summonTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="464" Vartype="Pointer" Bytesize="8" OffsetHex="000001D0" Description="mutatorManager" DisplayMethod="unsigned integer"/>
      <Element Offset="472" Vartype="Byte" Bytesize="1" OffsetHex="000001D8" Description="hasMutatorManager" DisplayMethod="unsigned integer"/>
      <Element Offset="480" Vartype="Pointer" Bytesize="8" OffsetHex="000001E0" Description="hitSoundReceiver" DisplayMethod="unsigned integer"/>
      <Element Offset="488" Vartype="Byte" Bytesize="1" OffsetHex="000001E8" Description="checkedForHitSoundReceiver" DisplayMethod="unsigned integer"/>
      <Element Offset="489" Vartype="Byte" Bytesize="1" OffsetHex="000001E9" Description="hasHitSoundReceiver" DisplayMethod="unsigned integer"/>
      <Element Offset="496" Vartype="Pointer" Bytesize="8" OffsetHex="000001F0" Description="movingPlayerServer" DisplayMethod="unsigned integer"/>
      <Element Offset="504" Vartype="Pointer" Bytesize="8" OffsetHex="000001F8" Description="abilityList" DisplayMethod="unsigned integer"/>
      <Element Offset="512" Vartype="Pointer" Bytesize="8" OffsetHex="00000200" Description="characterDataTracker" DisplayMethod="unsigned integer"/>
      <Element Offset="520" Vartype="Pointer" Bytesize="8" OffsetHex="00000208" Description="healthPotion" DisplayMethod="unsigned integer"/>
      <Element Offset="528" Vartype="Pointer" Bytesize="8" OffsetHex="00000210" Description="minionStanceData" DisplayMethod="unsigned integer"/>
      <Element Offset="536" Vartype="Pointer" Bytesize="8" OffsetHex="00000218" Description="tooltipDPSManager" DisplayMethod="unsigned integer"/>
      <Element Offset="544" Vartype="Pointer" Bytesize="8" OffsetHex="00000220" Description="appliedModKeys" DisplayMethod="unsigned integer"/>
      <Element Offset="552" Vartype="4 Bytes" Bytesize="4" OffsetHex="00000228" Description="rarity" DisplayMethod="unsigned integer"/>
      <Element Offset="553" Vartype="Byte" Bytesize="1" OffsetHex="00000229" Description="isMinion" DisplayMethod="unsigned integer"/>
      <Element Offset="554" Vartype="Byte" Bytesize="1" OffsetHex="0000022A" Description="isSummonedTotem" DisplayMethod="unsigned integer"/>
      <Element Offset="555" Vartype="Byte" Bytesize="1" OffsetHex="0000022B" Description="&lt;UsingAbilityHasActivated&gt;k__BackingField" DisplayMethod="unsigned integer"/>
      <Element Offset="556" Vartype="4 Bytes" Bytesize="4" OffsetHex="0000022C" Description="referenceVersion" DisplayMethod="unsigned integer"/>
      <Element Offset="560" Vartype="Pointer" Bytesize="8" OffsetHex="00000230" Description="usingAbilityActivatedEvent" DisplayMethod="unsigned integer"/>
      <Element Offset="568" Vartype="Pointer" Bytesize="8" OffsetHex="00000238" Description="reachedMovementAbilityDestinationEvent" DisplayMethod="unsigned integer"/>
      <Element Offset="576" Vartype="Pointer" Bytesize="8" OffsetHex="00000240" Description="movedToPlayerSpawnEvent" DisplayMethod="unsigned integer"/>
      <Element Offset="584" Vartype="Float" Bytesize="4" OffsetHex="00000248" Description="initialRadius" DisplayMethod="unsigned integer"/>
      <Element Offset="588" Vartype="Byte" Bytesize="1" OffsetHex="0000024C" Description="hasBeenDisabled" DisplayMethod="unsigned integer"/>
      <Element Offset="589" Vartype="Byte" Bytesize="1" OffsetHex="0000024D" Description="initialised" DisplayMethod="unsigned integer"/>
      <Element Offset="592" Vartype="Float" Bytesize="4" OffsetHex="00000250" Description="timeLastPulled" DisplayMethod="unsigned integer"/>
      <Element Offset="600" Vartype="Pointer" Bytesize="8" OffsetHex="00000258" Description="objectLastPulledBy" DisplayMethod="unsigned integer"/>
    </Elements>
  </Structure>
</Structures>

using the tabale code , the actor Point its NULL!

i checked the patch code and that's not runned when i using F5 set break point ..
Visit the new thread -> viewtopic.php?f=4&t=27897&p=337110#p337110

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Fri Feb 23, 2024 10:17 pm
by CoUsT
Is there a working cheat table with no fog of war toggle? I couldn't find any.

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Sat Feb 24, 2024 10:31 am
by Toga
dziobus wrote:
Fri Feb 23, 2024 7:56 pm
Question, what exactly does the "Max Unique, Sets and Implicit Rolls" do / what does it work with cause I dont understand.
They roll with maxed out stats (range)
for a screenshot see viewtopic.php?p=169952#p169952

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Tue Feb 27, 2024 11:06 pm
by Jonastpz
Infinite runes use in the forge to change working in version 1.0D

Code: Select all

<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
  <CheatEntries>
    <CheatEntry>
      <ID>559</ID>
      <Description>"Infinite Runes (Open Inventory) Backup"</Description>
      <Color>4080FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
aobscanmodule(infrunes,GameAssembly.dll,8B 40 28 48 83 C4 20 5B C3 E8 8B) // should be unique
alloc(newmem,$1000,infrunes)

label(code)
label(return)

newmem:

code:
  mov [rax+28],#999
  mov eax,[rax+28]
  add rsp,20
  jmp return

infrunes:
  jmp newmem
  nop 2
return:
registersymbol(infrunes)

[DISABLE]

infrunes:
  db 8B 40 28 48 83 C4 20

unregistersymbol(infrunes)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: GameAssembly.dll+E2C827

GameAssembly.dll+E2C804: 48 8D 4C 24 30  - lea rcx,[rsp+30]
GameAssembly.dll+E2C809: 48 8B 50 20     - mov rdx,[rax+20]
GameAssembly.dll+E2C80D: 48 89 54 24 30  - mov [rsp+30],rdx
GameAssembly.dll+E2C812: E8 09 54 6D FF  - call GameAssembly.dll+501C20
GameAssembly.dll+E2C817: 48 8B 44 24 30  - mov rax,[rsp+30]
GameAssembly.dll+E2C81C: 48 85 C0        - test rax,rax
GameAssembly.dll+E2C81F: 75 06           - jne GameAssembly.dll+E2C827
GameAssembly.dll+E2C821: 48 83 C4 20     - add rsp,20
GameAssembly.dll+E2C825: 5B              - pop rbx
GameAssembly.dll+E2C826: C3              - ret 
// ---------- INJECTING HERE ----------
GameAssembly.dll+E2C827: 8B 40 28        - mov eax,[rax+28]
// ---------- DONE INJECTING  ----------
GameAssembly.dll+E2C82A: 48 83 C4 20     - add rsp,20
GameAssembly.dll+E2C82E: 5B              - pop rbx
GameAssembly.dll+E2C82F: C3              - ret 
GameAssembly.dll+E2C830: E8 1B 58 6D FF  - call GameAssembly.dll+502050
GameAssembly.dll+E2C835: CC              - int 3 
GameAssembly.dll+E2C836: CC              - int 3 
GameAssembly.dll+E2C837: CC              - int 3 
GameAssembly.dll+E2C838: CC              - int 3 
GameAssembly.dll+E2C839: CC              - int 3 
GameAssembly.dll+E2C83A: CC              - int 3 
}
</AssemblerScript>
    </CheatEntry>
  </CheatEntries>
</CheatTable>

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Wed Feb 28, 2024 12:35 am
by lanshu777
Need an update for new version 1.0

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Wed Feb 28, 2024 8:42 pm
by skeeta69
Yeah an update would be great.

Re: Last Epoch EA 0.9+ (Steam)...

Posted: Wed Feb 28, 2024 9:11 pm
by Messy6666
^ hey there peepz

Impala made a new thread for 1.0+
and also others contributing with nice work.

go see it here: viewtopic.php?f=4&t=27897