I may have found the experience that Mastery is looking for
Code: Select all
SamuraiWarriors4DX.exe+18BD5E: CC - int 3
SamuraiWarriors4DX.exe+18BD5F: CC - int 3
SamuraiWarriors4DX.exe+18BD60: 4C 63 CA - movsxd r9,edx
SamuraiWarriors4DX.exe+18BD63: B8 3F 42 0F 00 - mov eax,000F423F
SamuraiWarriors4DX.exe+18BD68: 42 8B 54 89 10 - mov edx,[rcx+r9*4+10]
SamuraiWarriors4DX.exe+18BD6D: 4E 8D 14 89 - lea r10,[rcx+r9*4]
SamuraiWarriors4DX.exe+18BD71: 41 03 D0 - add edx,r8d
SamuraiWarriors4DX.exe+18BD74: 4D 8D 1C 09 - lea r11,[r9+rcx]
SamuraiWarriors4DX.exe+18BD78: 3B D0 - cmp edx,eax
SamuraiWarriors4DX.exe+18BD7A: 0F 46 C2 - cmovbe eax,edx
// ---------- INJECTING HERE ----------
SamuraiWarriors4DX.exe+18BD7D: 41 89 42 10 - mov [r10+10],eax
// ---------- DONE INJECTING ----------
SamuraiWarriors4DX.exe+18BD81: 41 0F B6 43 2A - movzx eax,byte ptr [r11+2A]
SamuraiWarriors4DX.exe+18BD86: 3C 14 - cmp al,14
SamuraiWarriors4DX.exe+18BD88: 72 03 - jb SamuraiWarriors4DX.exe+18BD8D
SamuraiWarriors4DX.exe+18BD8A: 33 C0 - xor eax,eax
SamuraiWarriors4DX.exe+18BD8C: C3 - ret
SamuraiWarriors4DX.exe+18BD8D: 45 33 C9 - xor r9d,r9d
SamuraiWarriors4DX.exe+18BD90: 44 0F B6 C0 - movzx r8d,al
SamuraiWarriors4DX.exe+18BD94: 41 83 F8 14 - cmp r8d,14
SamuraiWarriors4DX.exe+18BD98: 7D 35 - jnl SamuraiWarriors4DX.exe+18BDCF
SamuraiWarriors4DX.exe+18BD9A: 41 8D 48 FF - lea ecx,[r8-01]
}
my issue is that the game doesnt exactly like me "adding" a certain value to eax vor movzx eax,byte ptr[r11+2A] to use to load the level
nevermind quite janky but an imul worked
Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<CheatTable>
<CheatEntries>
<CheatEntry>
<ID>357554</ID>
<Description>"Proficiency multiplier?"</Description>
<LastState Activated="1"/>
<VariableType>Auto Assembler Script</VariableType>
<AssemblerScript>{ Game : SamuraiWarriors4DX.exe
Version:
Date : 2024-07-11
Author : Algester
This script does blah blah blah
}
[ENABLE]
aobscanmodule(ExpertiseProficiencyExp,SamuraiWarriors4DX.exe,41 89 42 10 41 0F B6 43 2A) // should be unique
alloc(newmem,$1000,ExpertiseProficiencyExp)
label(code)
label(return)
newmem:
code:
imul eax,2
mov [r10+10],eax
movzx eax,byte ptr [r11+2A]
jmp return
ExpertiseProficiencyExp:
jmp newmem
nop 4
return:
registersymbol(ExpertiseProficiencyExp)
[DISABLE]
ExpertiseProficiencyExp:
db 41 89 42 10 41 0F B6 43 2A
unregistersymbol(ExpertiseProficiencyExp)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: SamuraiWarriors4DX.exe+18BD7D
SamuraiWarriors4DX.exe+18BD5E: CC - int 3
SamuraiWarriors4DX.exe+18BD5F: CC - int 3
SamuraiWarriors4DX.exe+18BD60: 4C 63 CA - movsxd r9,edx
SamuraiWarriors4DX.exe+18BD63: B8 3F 42 0F 00 - mov eax,000F423F
SamuraiWarriors4DX.exe+18BD68: 42 8B 54 89 10 - mov edx,[rcx+r9*4+10]
SamuraiWarriors4DX.exe+18BD6D: 4E 8D 14 89 - lea r10,[rcx+r9*4]
SamuraiWarriors4DX.exe+18BD71: 41 03 D0 - add edx,r8d
SamuraiWarriors4DX.exe+18BD74: 4D 8D 1C 09 - lea r11,[r9+rcx]
SamuraiWarriors4DX.exe+18BD78: 3B D0 - cmp edx,eax
SamuraiWarriors4DX.exe+18BD7A: 0F 46 C2 - cmovbe eax,edx
// ---------- INJECTING HERE ----------
SamuraiWarriors4DX.exe+18BD7D: 41 89 42 10 - mov [r10+10],eax
// ---------- DONE INJECTING ----------
SamuraiWarriors4DX.exe+18BD81: 41 0F B6 43 2A - movzx eax,byte ptr [r11+2A]
SamuraiWarriors4DX.exe+18BD86: 3C 14 - cmp al,14
SamuraiWarriors4DX.exe+18BD88: 72 03 - jb SamuraiWarriors4DX.exe+18BD8D
SamuraiWarriors4DX.exe+18BD8A: 33 C0 - xor eax,eax
SamuraiWarriors4DX.exe+18BD8C: C3 - ret
SamuraiWarriors4DX.exe+18BD8D: 45 33 C9 - xor r9d,r9d
SamuraiWarriors4DX.exe+18BD90: 44 0F B6 C0 - movzx r8d,al
SamuraiWarriors4DX.exe+18BD94: 41 83 F8 14 - cmp r8d,14
SamuraiWarriors4DX.exe+18BD98: 7D 35 - jnl SamuraiWarriors4DX.exe+18BDCF
SamuraiWarriors4DX.exe+18BD9A: 41 8D 48 FF - lea ecx,[r8-01]
}
</AssemblerScript>
</CheatEntry>
</CheatEntries>
</CheatTable>