0
"The Long Dark (Steam v1.71 Build 58341)"
800000
1
8469
"[Animal] Meat Harvest Always 3 Units Left"
008000
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
* When harvesting meat from animals, set meat to 3.
* Also works on 'quartered' animal.
}
[ENABLE]
aobscanmodule(INJECT,GameAssembly.dll,F3 0F 11 88 AC 00 00 00 48 85 C0) // should be unique
alloc(newmem,$1000,"GameAssembly.dll"+756278)
label(code)
label(return)
label(new_meat_value)
alloc(animal_meat_ptr,4)
registersymbol(animal_meat_ptr)
newmem:
mov [animal_meat_ptr],rax // for debugging
// movss for float (4 bytes)
// movq for double (8 bytes)
movss xmm1,[new_meat_value]
code:
movss [rax+000000AC],xmm1
jmp return
new_meat_value:
// db for byte/char/int8 (1 byte)
// dw for word/short/int16 (2 bytes)
// dd for dword/float/int32 (4 bytes)
// dq for qword/double/int64 (8 bytes)
// will always use this value after harvesting
dd (float)3
INJECT:
jmp newmem
nop
nop
nop
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db F3 0F 11 88 AC 00 00 00
unregistersymbol(INJECT)
unregistersymbol(animal_meat_ptr)
dealloc(animal_meat_ptr)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+756278
"GameAssembly.dll"+756240: 66 41 0F 2F C2 - comisd xmm0,xmm10
"GameAssembly.dll"+756245: 0F 87 35 FE FF FF - ja GameAssembly.dll+756080
"GameAssembly.dll"+75624B: 48 8B 87 E8 01 00 00 - mov rax,[rdi+000001E8]
"GameAssembly.dll"+756252: 48 85 C0 - test rax,rax
"GameAssembly.dll"+756255: 0F 84 40 02 00 00 - je GameAssembly.dll+75649B
"GameAssembly.dll"+75625B: 48 8B 8F 18 01 00 00 - mov rcx,[rdi+00000118]
"GameAssembly.dll"+756262: 48 85 C9 - test rcx,rcx
"GameAssembly.dll"+756265: 0F 84 2A 02 00 00 - je GameAssembly.dll+756495
"GameAssembly.dll"+75626B: F3 0F 10 88 AC 00 00 00 - movss xmm1,[rax+000000AC]
"GameAssembly.dll"+756273: F3 0F 5C 49 38 - subss xmm1,[rcx+38]
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+756278: F3 0F 11 88 AC 00 00 00 - movss [rax+000000AC],xmm1
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+756280: 48 85 C0 - test rax,rax
"GameAssembly.dll"+756283: 0F 84 06 02 00 00 - je GameAssembly.dll+75648F
"GameAssembly.dll"+756289: F3 0F 10 05 4F 19 9F 02 - movss xmm0,[GameAssembly.dll+3147BE0]
"GameAssembly.dll"+756291: 0F 2F C1 - comiss xmm0,xmm1
"GameAssembly.dll"+756294: 76 07 - jna GameAssembly.dll+75629D
"GameAssembly.dll"+756296: 44 89 B0 AC 00 00 00 - mov [rax+000000AC],r14d
"GameAssembly.dll"+75629D: 48 85 C9 - test rcx,rcx
"GameAssembly.dll"+7562A0: 0F 84 E3 01 00 00 - je GameAssembly.dll+756489
"GameAssembly.dll"+7562A6: F3 0F 10 41 38 - movss xmm0,[rcx+38]
"GameAssembly.dll"+7562AB: 41 0F 2F C0 - comiss xmm0,xmm8
}
8463
"[Campfire] INF Usage of Coal / Wood / Stick / ETC"
1A511F
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
* Adding fuel into fire (barrel/campfire/forge) will not
consume the item. Works with stackable wood/coal/sticks.
* Starting fires will also not consume matches, tinder plugs
& accelerants.
* Non-stackable items like books will be consumed.
}
[ENABLE]
aobscanmodule(NODECREASE,GameAssembly.dll,FF 4B 18 40 0F B6 FF) // should be unique
alloc(newmem,$1000,"GameAssembly.dll"+3398A0)
label(code)
label(return)
newmem:
// rbx is our base address which holds the
// fuel's quantity in its structure at
// offset 0x18
code:
// do not DECrease our fuel quantity
//dec [rbx+18]
movzx edi,dil
jmp return
NODECREASE:
jmp newmem
nop
nop
return:
registersymbol(NODECREASE)
[DISABLE]
NODECREASE:
db FF 4B 18 40 0F B6 FF
unregistersymbol(NODECREASE)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+3398A0
"GameAssembly.dll"+33987B: 83 B9 D8 00 00 00 00 - cmp dword ptr [rcx+000000D8],00
"GameAssembly.dll"+339882: 75 05 - jne GameAssembly.dll+339889
"GameAssembly.dll"+339884: E8 F7 F0 F2 FF - call GameAssembly.dll+268980
"GameAssembly.dll"+339889: 33 D2 - xor edx,edx
"GameAssembly.dll"+33988B: 48 8B CB - mov rcx,rbx
"GameAssembly.dll"+33988E: E8 CD E4 DE 01 - call GameAssembly.dll+2127D60
"GameAssembly.dll"+339893: 84 C0 - test al,al
"GameAssembly.dll"+339895: 74 17 - je GameAssembly.dll+3398AE
"GameAssembly.dll"+339897: 48 85 DB - test rbx,rbx
"GameAssembly.dll"+33989A: 0F 84 44 01 00 00 - je GameAssembly.dll+3399E4
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+3398A0: FF 4B 18 - dec [rbx+18]
"GameAssembly.dll"+3398A3: 40 0F B6 FF - movzx edi,dil
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+3398A7: 83 7B 18 00 - cmp dword ptr [rbx+18],00
"GameAssembly.dll"+3398AB: 0F 4F FD - cmovg edi,ebp
"GameAssembly.dll"+3398AE: 48 8B 15 93 3B 6B 03 - mov rdx,[GameAssembly.dll+39ED448]
"GameAssembly.dll"+3398B5: 48 8B CE - mov rcx,rsi
"GameAssembly.dll"+3398B8: E8 E3 49 B3 01 - call GameAssembly.dll+1E6E2A0
"GameAssembly.dll"+3398BD: 48 8B D8 - mov rbx,rax
"GameAssembly.dll"+3398C0: 48 8B 0D 29 5E 6C 03 - mov rcx,[GameAssembly.dll+39FF6F0]
"GameAssembly.dll"+3398C7: F6 81 27 01 00 00 02 - test byte ptr [rcx+00000127],02
"GameAssembly.dll"+3398CE: 74 0E - je GameAssembly.dll+3398DE
"GameAssembly.dll"+3398D0: 83 B9 D8 00 00 00 00 - cmp dword ptr [rcx+000000D8],00
}
8464
"[Lantern] Fuel Always Full"
1A511F
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
Lantern is always full.
}
[ENABLE]
aobscanmodule(INJECT,GameAssembly.dll,F3 0F 11 73 64 F3 0F 10 7B) // should be unique
alloc(newmem,$1000,"GameAssembly.dll"+68BADE)
label(code)
label(return)
label(lantern_fuel)
newmem:
// fill XMM6 with lantern fuel, 1.00 is the maximum
movss xmm6,[lantern_fuel]
code:
movss [rbx+64],xmm6
jmp return
lantern_fuel:
// dd for dword/float/int32 (4 bytes)
dd (float)1
INJECT:
jmp newmem
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db F3 0F 11 73 64
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+68BADE
"GameAssembly.dll"+68BAB1: 48 8B C8 - mov rcx,rax
"GameAssembly.dll"+68BAB4: E8 C7 CE BD FF - call GameAssembly.dll+268980
"GameAssembly.dll"+68BAB9: 48 8B 05 50 2E 36 03 - mov rax,[GameAssembly.dll+39EE910]
"GameAssembly.dll"+68BAC0: 48 8B 80 B8 00 00 00 - mov rax,[rax+000000B8]
"GameAssembly.dll"+68BAC7: 80 38 00 - cmp byte ptr [rax],00
"GameAssembly.dll"+68BACA: 75 54 - jne GameAssembly.dll+68BB20
"GameAssembly.dll"+68BACC: F3 0F 10 73 64 - movss xmm6,[rbx+64]
"GameAssembly.dll"+68BAD1: F3 0F 10 43 1C - movss xmm0,[rbx+1C]
"GameAssembly.dll"+68BAD6: F3 0F 59 C7 - mulss xmm0,xmm7
"GameAssembly.dll"+68BADA: F3 0F 5C F0 - subss xmm6,xmm0
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+68BADE: F3 0F 11 73 64 - movss [rbx+64],xmm6
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+68BAE3: F3 0F 10 7B 18 - movss xmm7,[rbx+18]
"GameAssembly.dll"+68BAE8: 48 8B 0D 71 96 36 03 - mov rcx,[GameAssembly.dll+39F5160]
"GameAssembly.dll"+68BAEF: F6 81 27 01 00 00 02 - test byte ptr [rcx+00000127],02
"GameAssembly.dll"+68BAF6: 74 0E - je GameAssembly.dll+68BB06
"GameAssembly.dll"+68BAF8: 83 B9 D8 00 00 00 00 - cmp dword ptr [rcx+000000D8],00
"GameAssembly.dll"+68BAFF: 75 05 - jne GameAssembly.dll+68BB06
"GameAssembly.dll"+68BB01: E8 7A CE BD FF - call GameAssembly.dll+268980
"GameAssembly.dll"+68BB06: 0F 57 C0 - xorps xmm0,xmm0
"GameAssembly.dll"+68BB09: 0F 2F C6 - comiss xmm0,xmm6
"GameAssembly.dll"+68BB0C: 77 0A - ja GameAssembly.dll+68BB18
}
8486
"[Containers] +3 Extra Items When Stacking Existing Item"
1A511F
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
* Stacking existing items in a container will
get additional extra items per transfer.
* The same item must already be present in the
container for it to stack & get extra items.
* Currently set to 3 extra items.
}
define(address,"GameAssembly.dll"+196B444)
define(bytes,01 68 18 B0 01)
[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,"GameAssembly.dll"+196B444)
label(code)
label(return)
newmem:
// Do not use 'add', just increment.
// We do not want to set/clear the
// carry flag and mess with other flags
// which might cause a crash.
inc ebp // -> total +1 extra item
inc ebp // -> total +2 extra items
inc ebp // -> total +3 extra items
// add more here if needed
code:
add [rax+18],ebp
mov al,01
jmp return
address:
jmp newmem
return:
[DISABLE]
address:
db bytes
// add [rax+18],ebp
// mov al,01
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+196B444
"GameAssembly.dll"+196B414: E8 F7 2C 71 FE - call GameAssembly.dll+7E110
"GameAssembly.dll"+196B419: F3 0F 5C F7 - subss xmm6,xmm7
"GameAssembly.dll"+196B41D: 0F 5A C6 - vcvtps2pd xmm0,xmm6
"GameAssembly.dll"+196B420: 0F 54 05 D9 38 9D 01 - andps xmm0,[GameAssembly.dll+333ED00]
"GameAssembly.dll"+196B427: 66 0F 5A C0 - cvtpd2ps xmm0,xmm0
"GameAssembly.dll"+196B42B: 0F 2F 05 EA E9 9C 01 - comiss xmm0,[GameAssembly.dll+3339E1C]
"GameAssembly.dll"+196B432: 0F 87 A1 FE FF FF - ja GameAssembly.dll+196B2D9
"GameAssembly.dll"+196B438: 48 8B 83 20 02 00 00 - mov rax,[rbx+00000220]
"GameAssembly.dll"+196B43F: 48 85 C0 - test rax,rax
"GameAssembly.dll"+196B442: 74 0A - je GameAssembly.dll+196B44E
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+196B444: 01 68 18 - add [rax+18],ebp
"GameAssembly.dll"+196B447: B0 01 - mov al,01
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+196B449: E9 8D FE FF FF - jmp GameAssembly.dll+196B2DB
"GameAssembly.dll"+196B44E: E8 5D 3C 73 FE - call GameAssembly.dll+9F0B0
"GameAssembly.dll"+196B453: CC - int 3
"GameAssembly.dll"+196B454: E8 57 3C 73 FE - call GameAssembly.dll+9F0B0
"GameAssembly.dll"+196B459: CC - int 3
"GameAssembly.dll"+196B45A: E8 51 3C 73 FE - call GameAssembly.dll+9F0B0
"GameAssembly.dll"+196B45F: CC - int 3
"GameAssembly.dll"+196B460: E8 4B 3C 73 FE - call GameAssembly.dll+9F0B0
"GameAssembly.dll"+196B465: CC - int 3
"GameAssembly.dll"+196B466: E8 45 3C 73 FE - call GameAssembly.dll+9F0B0
}
8499
"--- Map & Survey ---"
008080
1
8473
"[Survey] INF Charcoal"
008080
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
* Cartographer/Survey: will not use up the charcoal.
* Must have at least one charcoal in inventory.
}
[ENABLE]
aobscanmodule(INJECT,GameAssembly.dll,FF 48 18 48 8B 43 28) // should be unique
alloc(newmem,$1000,"GameAssembly.dll"+7FAD01)
label(code)
label(return)
alloc(charcoal_ptr,4)
registersymbol(charcoal_ptr)
newmem:
mov [charcoal_ptr],rax // for debugging
code:
//dec [rax+18]
mov rax,[rbx+28]
jmp return
INJECT:
jmp newmem
nop
nop
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db FF 48 18 48 8B 43 28
unregistersymbol(INJECT)
unregistersymbol(charcoal_ptr)
dealloc(charcoal_ptr)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+7FAD01
"GameAssembly.dll"+7FACD4: 48 8B CF - mov rcx,rdi
"GameAssembly.dll"+7FACD7: E8 84 D0 92 01 - call GameAssembly.dll+2127D60
"GameAssembly.dll"+7FACDC: 84 C0 - test al,al
"GameAssembly.dll"+7FACDE: 0F 84 A7 00 00 00 - je GameAssembly.dll+7FAD8B
"GameAssembly.dll"+7FACE4: 48 8B 43 28 - mov rax,[rbx+28]
"GameAssembly.dll"+7FACE8: 48 85 C0 - test rax,rax
"GameAssembly.dll"+7FACEB: 0F 84 14 01 00 00 - je GameAssembly.dll+7FAE05
"GameAssembly.dll"+7FACF1: 48 8B 80 E8 01 00 00 - mov rax,[rax+000001E8]
"GameAssembly.dll"+7FACF8: 48 85 C0 - test rax,rax
"GameAssembly.dll"+7FACFB: 0F 84 FE 00 00 00 - je GameAssembly.dll+7FADFF
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+7FAD01: FF 48 18 - dec [rax+18]
"GameAssembly.dll"+7FAD04: 48 8B 43 28 - mov rax,[rbx+28]
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+7FAD08: 48 85 C0 - test rax,rax
"GameAssembly.dll"+7FAD0B: 0F 84 E8 00 00 00 - je GameAssembly.dll+7FADF9
"GameAssembly.dll"+7FAD11: 48 8B 80 E8 01 00 00 - mov rax,[rax+000001E8]
"GameAssembly.dll"+7FAD18: 48 85 C0 - test rax,rax
"GameAssembly.dll"+7FAD1B: 0F 84 D2 00 00 00 - je GameAssembly.dll+7FADF3
"GameAssembly.dll"+7FAD21: 83 78 18 00 - cmp dword ptr [rax+18],00
"GameAssembly.dll"+7FAD25: 7F 64 - jg GameAssembly.dll+7FAD8B
"GameAssembly.dll"+7FAD27: 48 8B 0D 92 F1 21 03 - mov rcx,[GameAssembly.dll+3A19EC0]
"GameAssembly.dll"+7FAD2E: F6 81 27 01 00 00 02 - test byte ptr [rcx+00000127],02
"GameAssembly.dll"+7FAD35: 74 0E - je GameAssembly.dll+7FAD45
}
8489
"[Survey] Reveal Large Map Radius (chiados)"
008080
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
Based on Script By: Iscariot
* Using charcoal will now reveal a large map radius.
* public void DoDetailSurvey();
* This is based on an older script.
}
define(address,"GameAssembly.dll"+1A39C50)
define(bytes,4C 8B DC 57 41 56)
[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,"GameAssembly.dll"+1A39C50)
label(code)
label(return)
label(revealRadius)
newmem:
movss xmm1,[revealRadius]
code:
mov r11,rsp
push rdi
push r14
jmp return
revealRadius:
dd (float)150000.0
address:
jmp newmem
nop
return:
[DISABLE]
address:
db bytes
// mov r11,rsp
// push rdi
// push r14
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+1A39C50
"GameAssembly.dll"+1A39C2E: 45 33 C0 - xor r8d,r8d
"GameAssembly.dll"+1A39C31: 48 8B D9 - mov rbx,rcx
"GameAssembly.dll"+1A39C34: E8 17 00 00 00 - call GameAssembly.dll+1A39C50
"GameAssembly.dll"+1A39C39: 41 B0 01 - mov r8l,01
"GameAssembly.dll"+1A39C3C: 45 33 C9 - xor r9d,r9d
"GameAssembly.dll"+1A39C3F: 41 0F B6 D0 - movzx edx,r8l
"GameAssembly.dll"+1A39C43: 48 8B CB - mov rcx,rbx
"GameAssembly.dll"+1A39C46: 48 83 C4 20 - add rsp,20
"GameAssembly.dll"+1A39C4A: 5B - pop rbx
"GameAssembly.dll"+1A39C4B: E9 B0 09 00 00 - jmp GameAssembly.dll+1A3A600
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+1A39C50: 4C 8B DC - mov r11,rsp
"GameAssembly.dll"+1A39C53: 57 - push rdi
"GameAssembly.dll"+1A39C54: 41 56 - push r14
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+1A39C56: 41 57 - push r15
"GameAssembly.dll"+1A39C58: 48 81 EC A0 00 00 00 - sub rsp,000000A0
"GameAssembly.dll"+1A39C5F: 48 C7 44 24 30 FE FF FF FF - mov qword ptr [rsp+30],FFFFFFFE
"GameAssembly.dll"+1A39C68: 49 89 5B 08 - mov [r11+08],rbx
"GameAssembly.dll"+1A39C6C: 49 89 6B 10 - mov [r11+10],rbp
"GameAssembly.dll"+1A39C70: 49 89 73 18 - mov [r11+18],rsi
"GameAssembly.dll"+1A39C74: 41 0F 29 73 D8 - movaps [r11-28],xmm6
"GameAssembly.dll"+1A39C79: 41 0F 29 7B C8 - movaps [r11-38],xmm7
"GameAssembly.dll"+1A39C7E: 0F 28 F9 - movaps xmm7,xmm1
"GameAssembly.dll"+1A39C81: 48 8B F1 - mov rsi,rcx
}
8455
"[Guns] INF Reload"
400040
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
GUNS: Infinite Reload - need at least
one ammo in the inventory.
}
define(address,"GameAssembly.dll"+1E4318D)
define(bytes,FF 48 18 33 D2)
[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,"GameAssembly.dll"+1E4318D)
label(code)
label(return)
newmem:
code:
//dec [rax+18]
xor edx,edx
jmp return
address:
jmp newmem
return:
[DISABLE]
address:
db bytes
// dec [rax+18]
// xor edx,edx
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+1E4318D
"GameAssembly.dll"+1E43176: 41 5C - pop r12
"GameAssembly.dll"+1E43178: 5F - pop rdi
"GameAssembly.dll"+1E43179: 5E - pop rsi
"GameAssembly.dll"+1E4317A: 5D - pop rbp
"GameAssembly.dll"+1E4317B: C3 - ret
"GameAssembly.dll"+1E4317C: 48 85 F6 - test rsi,rsi
"GameAssembly.dll"+1E4317F: 74 49 - je GameAssembly.dll+1E431CA
"GameAssembly.dll"+1E43181: 48 8B 86 20 02 00 00 - mov rax,[rsi+00000220]
"GameAssembly.dll"+1E43188: 48 85 C0 - test rax,rax
"GameAssembly.dll"+1E4318B: 74 37 - je GameAssembly.dll+1E431C4
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+1E4318D: FF 48 18 - dec [rax+18]
"GameAssembly.dll"+1E43190: 33 D2 - xor edx,edx
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+1E43192: 48 8B CE - mov rcx,rsi
"GameAssembly.dll"+1E43195: E8 06 DD FB FF - call GameAssembly.dll+1E00EA0
"GameAssembly.dll"+1E4319A: EB C9 - jmp GameAssembly.dll+1E43165
"GameAssembly.dll"+1E4319C: E8 0F BF 25 FE - call GameAssembly.dll+9F0B0
"GameAssembly.dll"+1E431A1: 90 - nop
"GameAssembly.dll"+1E431A2: E8 09 BF 25 FE - call GameAssembly.dll+9F0B0
"GameAssembly.dll"+1E431A7: 90 - nop
"GameAssembly.dll"+1E431A8: E8 03 BF 25 FE - call GameAssembly.dll+9F0B0
"GameAssembly.dll"+1E431AD: E8 FE BE 25 FE - call GameAssembly.dll+9F0B0
"GameAssembly.dll"+1E431B2: E8 F9 BE 25 FE - call GameAssembly.dll+9F0B0
}
8467
"--- PLAYER ---"
800000
1
8498
"--- Survival Levels ---"
C08000
1
8474
"[Stamina] Sprinting Does Not Consume Stamina"
C08000
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
* Does not spend stamina. Ever.
}
[ENABLE]
aobscanmodule(INJECT,GameAssembly.dll,F1 F3 0F 11 73 78) // should be unique
alloc(newmem,$1000,"GameAssembly.dll"+544737)
label(code)
label(return)
newmem:
// get max stamina and put it in current stamina
movss xmm6,[rbx+74]
code:
movss [rbx+78],xmm6
jmp return
INJECT+01:
jmp newmem
return:
registersymbol(INJECT)
[DISABLE]
INJECT+01:
db F3 0F 11 73 78
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+544737
"GameAssembly.dll"+54470A: 75 1C - jne GameAssembly.dll+544728
"GameAssembly.dll"+54470C: 48 8D 0D 35 BC AF 02 - lea rcx,[GameAssembly.dll+3040348]
"GameAssembly.dll"+544713: E8 08 CB D7 FF - call GameAssembly.dll+2C1220
"GameAssembly.dll"+544718: 48 85 C0 - test rax,rax
"GameAssembly.dll"+54471B: 0F 84 32 05 00 00 - je GameAssembly.dll+544C53
"GameAssembly.dll"+544721: 48 89 05 90 73 51 03 - mov [GameAssembly.dll+3A5BAB8],rax
"GameAssembly.dll"+544728: FF D0 - call rax
"GameAssembly.dll"+54472A: F3 0F 10 4B 5C - movss xmm1,[rbx+5C]
"GameAssembly.dll"+54472F: F3 0F 59 C8 - mulss xmm1,xmm0
"GameAssembly.dll"+544733: F3 0F 5C F1 - subss xmm6,xmm1
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+544737: F3 0F 11 73 78 - movss [rbx+78],xmm6
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+54473C: 33 D2 - xor edx,edx
"GameAssembly.dll"+54473E: 48 8B CB - mov rcx,rbx
"GameAssembly.dll"+544741: E8 2A 0B 00 00 - call GameAssembly.dll+545270
"GameAssembly.dll"+544746: 0F 28 F8 - movaps xmm7,xmm0
"GameAssembly.dll"+544749: 48 8B 0D 10 0A 4B 03 - mov rcx,[GameAssembly.dll+39F5160]
"GameAssembly.dll"+544750: F6 81 27 01 00 00 02 - test byte ptr [rcx+00000127],02
"GameAssembly.dll"+544757: 74 0E - je GameAssembly.dll+544767
"GameAssembly.dll"+544759: 83 B9 D8 00 00 00 00 - cmp dword ptr [rcx+000000D8],00
"GameAssembly.dll"+544760: 75 05 - jne GameAssembly.dll+544767
"GameAssembly.dll"+544762: E8 19 42 D2 FF - call GameAssembly.dll+268980
}
8500
"[Fatigue] Always at 90/100 So You Can Still Sleep"
C08000
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
* Infinite Fatigue.
* Fatigue is always 90.00/100.00 to be able to sleep if required.
* public void AddFatigue(float fatigueValue);
}
define(address,"GameAssembly.dll"+19335E5)
define(bytes,F3 0F 11 7B 1C)
[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,"GameAssembly.dll"+19335E5)
label(code)
label(return)
label(curFatigue)
newmem:
movss xmm0,[curFatigue]
movss [rbx+1C],xmm0
code:
//movss [rbx+1C],xmm7
jmp return
curFatigue:
dd (float)10.0
address:
jmp newmem
return:
[DISABLE]
address:
db bytes
// movss [rbx+1C],xmm7
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+19335E5
"GameAssembly.dll"+19335C3: 83 B9 D8 00 00 00 00 - cmp dword ptr [rcx+000000D8],00
"GameAssembly.dll"+19335CA: 75 05 - jne GameAssembly.dll+19335D1
"GameAssembly.dll"+19335CC: E8 3F AB 74 FE - call GameAssembly.dll+7E110
"GameAssembly.dll"+19335D1: 0F 2F F7 - comiss xmm6,xmm7
"GameAssembly.dll"+19335D4: 77 0C - ja GameAssembly.dll+19335E2
"GameAssembly.dll"+19335D6: 41 0F 2F F8 - comiss xmm7,xmm8
"GameAssembly.dll"+19335DA: 76 09 - jna GameAssembly.dll+19335E5
"GameAssembly.dll"+19335DC: 41 0F 28 F8 - movaps xmm7,xmm8
"GameAssembly.dll"+19335E0: EB 03 - jmp GameAssembly.dll+19335E5
"GameAssembly.dll"+19335E2: 0F 28 FE - movaps xmm7,xmm6
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+19335E5: F3 0F 11 7B 1C - movss [rbx+1C],xmm7
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+19335EA: 0F 28 74 24 60 - movaps xmm6,[rsp+60]
"GameAssembly.dll"+19335EF: 0F 28 7C 24 50 - movaps xmm7,[rsp+50]
"GameAssembly.dll"+19335F4: 44 0F 28 44 24 40 - movaps xmm8,[rsp+40]
"GameAssembly.dll"+19335FA: 48 83 C4 70 - add rsp,70
"GameAssembly.dll"+19335FE: 5B - pop rbx
"GameAssembly.dll"+19335FF: C3 - ret
"GameAssembly.dll"+1933600: E8 AB BA 76 FE - call GameAssembly.dll+9F0B0
"GameAssembly.dll"+1933605: CC - int 3
"GameAssembly.dll"+1933606: E8 A5 BA 76 FE - call GameAssembly.dll+9F0B0
"GameAssembly.dll"+193360B: CC - int 3
}
8501
"--- Backpack & Inventory ---"
C08000
1
8488
"[Backpack] Select Any Item to Restore Full Condition"
9D6A00
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
* Inventory: Full Condition when Selecting an item in your backpack.
* Note that since we already have the item's GearItem class, we can
add more cheats based on its exposed fields.
}
define(address,"GameAssembly.dll"+1998F2E)
define(bytes,48 8B E8 33 D2)
[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,"GameAssembly.dll"+1998F2E)
label(code)
label(return)
newmem:
// after returning from call to GetCurrentlySelectedGearItem
// the item's GearItem class pointer is returned in RAX
// RAX+2E8 holds the current item's condition
// RAX+2EC holds the item's MAX condition
// xmm10 is unused so we will use it
movss xmm10,[rax+000002EC] // get max item HP
movss [rax+000002E8],xmm10 // set it as current HP
code:
mov rbp,rax
xor edx,edx
jmp return
address:
jmp newmem
return:
[DISABLE]
address:
db bytes
// mov rbp,rax
// xor edx,edx
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+1998F2E
// private GearItem GetCurrentlySelectedGearItem();
// RVA: 0x1806DD150 Offset: 0x6DC150
// "GameAssembly.dll"+06DD150 <-- GetCurrentlySelectedGearItem
// "GameAssembly.dll"+06E0270 <-- Original Injection
"GameAssembly.dll"+1998F0A: 33 C9 - xor ecx,ecx
"GameAssembly.dll"+1998F0C: FF 15 FE 19 0C 02 - call qword ptr [GameAssembly.dll+3A5A910]
"GameAssembly.dll"+1998F12: 90 - nop
"GameAssembly.dll"+1998F13: C6 05 EA DE 30 02 01 - mov byte ptr [GameAssembly.dll+3CA6E04],01
"GameAssembly.dll"+1998F1A: 33 D2 - xor edx,edx
"GameAssembly.dll"+1998F1C: 48 8B CF - mov rcx,rdi
"GameAssembly.dll"+1998F1F: E8 5C 7F 00 00 - call GameAssembly.dll+19A0E80
"GameAssembly.dll"+1998F24: 33 D2 - xor edx,edx
"GameAssembly.dll"+1998F26: 48 8B CF - mov rcx,rdi
"GameAssembly.dll"+1998F29: E8 52 54 00 00 - call GameAssembly.dll+199E380
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+1998F2E: 48 8B E8 - mov rbp,rax
"GameAssembly.dll"+1998F31: 33 D2 - xor edx,edx
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+1998F33: 48 8B C8 - mov rcx,rax
"GameAssembly.dll"+1998F36: E8 95 83 ED FF - call GameAssembly.dll+18712D0
"GameAssembly.dll"+1998F3B: 4C 8B F8 - mov r15,rax
"GameAssembly.dll"+1998F3E: 48 8B 15 2B 42 2D 02 - mov rdx,[GameAssembly.dll+3C6D170]
"GameAssembly.dll"+1998F45: 48 3B C2 - cmp rax,rdx
"GameAssembly.dll"+1998F48: 74 27 - je GameAssembly.dll+1998F71
"GameAssembly.dll"+1998F4A: 48 85 C0 - test rax,rax
"GameAssembly.dll"+1998F4D: 74 1D - je GameAssembly.dll+1998F6C
"GameAssembly.dll"+1998F4F: 48 85 D2 - test rdx,rdx
"GameAssembly.dll"+1998F52: 74 18 - je GameAssembly.dll+1998F6C
}
8470
"[Backpack] Zero Weight"
9D6A00
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
Backpack Weight - zero!
}
define(address,"GameAssembly.dll"+1869DE3)
define(bytes,F3 44 0F 11 45 48)
[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,"GameAssembly.dll"+1869DE3)
label(code)
label(return)
label(zero)
newmem:
movss xmm8,[zero]
code:
movss [rbp+48],xmm8
jmp return
zero:
dd 0
address:
jmp newmem
nop
return:
[DISABLE]
address:
db bytes
// movss [rbp+48],xmm8
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+1869DE3
"GameAssembly.dll"+1869DC2: F3 0F 11 4D 40 - movss [rbp+40],xmm1
"GameAssembly.dll"+1869DC7: F3 0F 10 4D 44 - movss xmm1,[rbp+44]
"GameAssembly.dll"+1869DCC: 0F 2F F9 - comiss xmm7,xmm1
"GameAssembly.dll"+1869DCF: 77 0A - ja GameAssembly.dll+1869DDB
"GameAssembly.dll"+1869DD1: 0F 2F C8 - comiss xmm1,xmm0
"GameAssembly.dll"+1869DD4: 76 08 - jna GameAssembly.dll+1869DDE
"GameAssembly.dll"+1869DD6: 0F 28 C8 - movaps xmm1,xmm0
"GameAssembly.dll"+1869DD9: EB 03 - jmp GameAssembly.dll+1869DDE
"GameAssembly.dll"+1869DDB: 0F 28 CF - movaps xmm1,xmm7
"GameAssembly.dll"+1869DDE: F3 0F 11 4D 44 - movss [rbp+44],xmm1
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+1869DE3: F3 44 0F 11 45 48 - movss [rbp+48],xmm8
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+1869DE9: F3 44 0F 11 4D 64 - movss [rbp+64],xmm9
"GameAssembly.dll"+1869DEF: 41 8B D6 - mov edx,r14d
"GameAssembly.dll"+1869DF2: 48 8B 4D 20 - mov rcx,[rbp+20]
"GameAssembly.dll"+1869DF6: 48 85 C9 - test rcx,rcx
"GameAssembly.dll"+1869DF9: 0F 84 C6 00 00 00 - je GameAssembly.dll+1869EC5
"GameAssembly.dll"+1869DFF: 48 8B C1 - mov rax,rcx
"GameAssembly.dll"+1869E02: BF 20 00 00 00 - mov edi,00000020
"GameAssembly.dll"+1869E07: 3B 51 18 - cmp edx,[rcx+18]
"GameAssembly.dll"+1869E0A: 7D 77 - jnl GameAssembly.dll+1869E83
"GameAssembly.dll"+1869E0C: 48 85 C0 - test rax,rax
}
8471
"[Eating] Food Will Always Have MAX Calories Left (up to 1k)"
C08000
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
* Food calories left after eating (1000).
}
define(address,"GameAssembly.dll"+1AA8883)
define(bytes,F3 0F 11 40 20)
[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,"GameAssembly.dll"+1AA8883)
label(code)
label(return)
label(remainingCalories)
label(xmmStorage)
newmem:
movss [xmmStorage],xmm0
movss xmm0,[remainingCalories]
movss [rax+20],xmm0
movss xmm0,[xmmStorage]
code:
//movss [rax+20],xmm0
jmp return
remainingCalories:
dd (float)1000
xmmStorage:
dd 0
address:
jmp newmem
return:
[DISABLE]
address:
db bytes
// movss [rax+20],xmm0
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+1AA8883
"GameAssembly.dll"+1AA8854: 0F 57 35 C5 64 89 01 - xorps xmm6,[GameAssembly.dll+333ED20]
"GameAssembly.dll"+1AA885B: 45 33 C0 - xor r8d,r8d
"GameAssembly.dll"+1AA885E: 0F 28 CE - movaps xmm1,xmm6
"GameAssembly.dll"+1AA8861: 48 8B C8 - mov rcx,rax
"GameAssembly.dll"+1AA8864: E8 07 31 10 00 - call GameAssembly.dll+1BAB970
"GameAssembly.dll"+1AA8869: 48 8B 83 B8 00 00 00 - mov rax,[rbx+000000B8]
"GameAssembly.dll"+1AA8870: 48 85 C0 - test rax,rax
"GameAssembly.dll"+1AA8873: 0F 84 B3 00 00 00 - je GameAssembly.dll+1AA892C
"GameAssembly.dll"+1AA8879: F3 0F 10 40 20 - movss xmm0,[rax+20]
"GameAssembly.dll"+1AA887E: F3 41 0F 5C C0 - subss xmm0,xmm8
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+1AA8883: F3 0F 11 40 20 - movss [rax+20],xmm0
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+1AA8888: 48 8B BB B8 00 00 00 - mov rdi,[rbx+000000B8]
"GameAssembly.dll"+1AA888F: 48 85 FF - test rdi,rdi
"GameAssembly.dll"+1AA8892: 0F 84 8E 00 00 00 - je GameAssembly.dll+1AA8926
"GameAssembly.dll"+1AA8898: F3 0F 10 77 20 - movss xmm6,[rdi+20]
"GameAssembly.dll"+1AA889D: F3 44 0F 10 47 24 - movss xmm8,[rdi+24]
"GameAssembly.dll"+1AA88A3: 48 8B 0D 86 3F 1C 02 - mov rcx,[GameAssembly.dll+3C6C830]
"GameAssembly.dll"+1AA88AA: F6 81 27 01 00 00 02 - test byte ptr [rcx+00000127],02
"GameAssembly.dll"+1AA88B1: 74 0E - je GameAssembly.dll+1AA88C1
"GameAssembly.dll"+1AA88B3: 83 B9 D8 00 00 00 00 - cmp dword ptr [rcx+000000D8],00
"GameAssembly.dll"+1AA88BA: 75 05 - jne GameAssembly.dll+1AA88C1
}
8468
"[Drinking] Does Not Consume Water in INV"
9D6A00
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
* Drinking will not consume your water in inventory.
}
[ENABLE]
aobscanmodule(INJECT,GameAssembly.dll,F3 0F 5C F7 F3 0F 11 73 1C) // should be unique
alloc(newmem,$1000,"GameAssembly.dll"+33C773)
label(code)
label(return)
newmem:
// just comment SUBSS
code:
//subss xmm6,xmm7
movss [rbx+1C],xmm6
jmp return
INJECT:
jmp newmem
nop
nop
nop
nop
return:
registersymbol(INJECT)
[DISABLE]
INJECT:
db F3 0F 5C F7 F3 0F 11 73 1C
unregistersymbol(INJECT)
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+33C773
"GameAssembly.dll"+33C74E: 4C 8D 44 24 28 - lea r8,[rsp+28]
"GameAssembly.dll"+33C753: E8 D8 99 F1 FF - call GameAssembly.dll+256130
"GameAssembly.dll"+33C758: 90 - nop
"GameAssembly.dll"+33C759: 33 C9 - xor ecx,ecx
"GameAssembly.dll"+33C75B: FF 15 17 C6 64 03 - call qword ptr [GameAssembly.dll+3988D78]
"GameAssembly.dll"+33C761: 90 - nop
"GameAssembly.dll"+33C762: C6 05 F7 86 70 03 01 - mov byte ptr [GameAssembly.dll+3A44E60],01
"GameAssembly.dll"+33C769: 48 85 DB - test rbx,rbx
"GameAssembly.dll"+33C76C: 74 48 - je GameAssembly.dll+33C7B6
"GameAssembly.dll"+33C76E: F3 0F 10 73 1C - movss xmm6,[rbx+1C]
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+33C773: F3 0F 5C F7 - subss xmm6,xmm7
"GameAssembly.dll"+33C777: F3 0F 11 73 1C - movss [rbx+1C],xmm6
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+33C77C: 48 8B 0D DD 89 6B 03 - mov rcx,[GameAssembly.dll+39F5160]
"GameAssembly.dll"+33C783: F6 81 27 01 00 00 02 - test byte ptr [rcx+00000127],02
"GameAssembly.dll"+33C78A: 74 0E - je GameAssembly.dll+33C79A
"GameAssembly.dll"+33C78C: 83 B9 D8 00 00 00 00 - cmp dword ptr [rcx+000000D8],00
"GameAssembly.dll"+33C793: 75 05 - jne GameAssembly.dll+33C79A
"GameAssembly.dll"+33C795: E8 E6 C1 F2 FF - call GameAssembly.dll+268980
"GameAssembly.dll"+33C79A: 0F 57 C0 - xorps xmm0,xmm0
"GameAssembly.dll"+33C79D: F3 0F 5F C6 - maxss xmm0,xmm6
"GameAssembly.dll"+33C7A1: F3 0F 11 43 1C - movss [rbx+1C],xmm0
"GameAssembly.dll"+33C7A6: 0F 28 74 24 50 - movaps xmm6,[rsp+50]
}
8491
"--- Crafting ---"
0080FF
1
8495
"[Crafting] Craft Anywhere"
0080FF
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
* Craft Anywhere
* public bool CanCraftSelectedBlueprint();
* Upon entering function after setting the stack:
set al=01, reset the stack, return immediately
so that function will always return true.
}
define(address,"GameAssembly.dll"+17FCDC4)
define(bytes,48 8B D9 80 3D 6C 96 4A 02 00)
[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,"GameAssembly.dll"+17FCDC4)
label(code)
label(return)
newmem:
mov al,01 { 1 }
mov rbx,[rsp+50]
add rsp,40 { 64 }
pop rdi
ret // always return true, ignore remaining funtion instructions
code:
mov rbx,rcx
cmp byte ptr [GameAssembly.dll+3CA643A],00
jmp return
address:
jmp newmem
nop
nop
nop
nop
nop
return:
[DISABLE]
address:
db bytes
// mov rbx,rcx
// cmp byte ptr [GameAssembly.dll+3CA643A],00
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+17FCDC4
"GameAssembly.dll"+17FCDAA: CC - int 3
"GameAssembly.dll"+17FCDAB: CC - int 3
"GameAssembly.dll"+17FCDAC: CC - int 3
"GameAssembly.dll"+17FCDAD: CC - int 3
"GameAssembly.dll"+17FCDAE: CC - int 3
"GameAssembly.dll"+17FCDAF: CC - int 3
"GameAssembly.dll"+17FCDB0: 40 57 - push rdi
"GameAssembly.dll"+17FCDB2: 48 83 EC 40 - sub rsp,40
"GameAssembly.dll"+17FCDB6: 48 C7 44 24 20 FE FF FF FF - mov qword ptr [rsp+20],FFFFFFFE
"GameAssembly.dll"+17FCDBF: 48 89 5C 24 50 - mov [rsp+50],rbx
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+17FCDC4: 48 8B D9 - mov rbx,rcx
"GameAssembly.dll"+17FCDC7: 80 3D 6C 96 4A 02 00 - cmp byte ptr [GameAssembly.dll+3CA643A],00
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+17FCDCE: 75 50 - jne GameAssembly.dll+17FCE20
"GameAssembly.dll"+17FCDD0: 48 8B 05 51 A5 49 02 - mov rax,[GameAssembly.dll+3C97328]
"GameAssembly.dll"+17FCDD7: 48 63 90 C0 00 00 00 - movsxd rdx,dword ptr [rax+000000C0]
"GameAssembly.dll"+17FCDDE: 48 8B 05 33 A5 49 02 - mov rax,[GameAssembly.dll+3C97318]
"GameAssembly.dll"+17FCDE5: 8B 8C 02 98 25 05 00 - mov ecx,[rdx+rax+00052598]
"GameAssembly.dll"+17FCDEC: 45 33 C0 - xor r8d,r8d
"GameAssembly.dll"+17FCDEF: 4C 89 44 24 28 - mov [rsp+28],r8
"GameAssembly.dll"+17FCDF4: 4C 89 44 24 30 - mov [rsp+30],r8
"GameAssembly.dll"+17FCDF9: 4C 89 44 24 38 - mov [rsp+38],r8
"GameAssembly.dll"+17FCDFE: 4C 8D 44 24 28 - lea r8,[rsp+28]
}
8497
"[Crafting] Setup BP For 0-min Crafting, etc. (see script)"
0080FF
Auto Assembler Script
{
Game : The Long Dark (tld.exe)
Version: Steam v1.71
Date : 2020-01-21
Author : JLee
* public void Setup(BlueprintItem bpi); // RVA: 0x181BEE8B0 Offset: 0x1BECEB0
* Setup BluePrint. RDX holds the BluePrintItem.
* This function is always called when opening the Crafting menu.
* Modifies the following:
mov [rdx+44],0 // INT crafting time: 0 minutes
mov [rdx+50],0 // FLOAT kerosene liters required
mov [rdx+54],0 // FLOAT gunpowder KG required
mov [rdx+58],0 // BOOL requires light?
mov [rdx+59],0 // BOOL locked?
mov [rdx+64],0 // CraftingLocation: Anywhere
mov [rdx+68],0 // BOOL requires lit fire?
// class BluePrintItem fields
public GearItem[] m_RequiredGear; // 0x18
public int[] m_RequiredGearUnits; // 0x20
public ToolsItem m_RequiredTool; // 0x28
public ToolsItem[] m_OptionalTools; // 0x30
public GearItem m_CraftedResult; // 0x38
public int m_CraftedResultCount; // 0x40
public int m_DurationMinutes; // 0x44
public string m_CraftingAudio; // 0x48
public float m_KeroseneLitersRequired; // 0x50
public float m_GunpowderKGRequired; // 0x54
public bool m_RequiresLight; // 0x58
public bool m_Locked; // 0x59
public bool m_AppearsInStoryOnly; // 0x5A
public SkillType m_AppliedSkill; // 0x5C
public SkillType m_ImprovedSkill; // 0x60
public CraftingLocation m_RequiredCraftingLocation; // 0x64
public bool m_RequiresLitFire; // 0x68
private static List`1<string> m_UnlockedBlueprints; // 0x0
// enum SkillType
public const SkillType None = -1; // 0x0
public const SkillType Firestarting = 0; // 0x0
public const SkillType CarcassHarvesting = 1; // 0x0
public const SkillType IceFishing = 2; // 0x0
public const SkillType Cooking = 3; // 0x0
public const SkillType Rifle = 4; // 0x0
public const SkillType Archery = 5; // 0x0
public const SkillType ClothingRepair = 6; // 0x0
public const SkillType ToolRepair = 7; // 0x0
public const SkillType Revolver = 8; // 0x0
public const SkillType Gunsmithing = 9; // 0x0
// enum CraftingLocation
public const CraftingLocation Anywhere = 0; // 0x0
public const CraftingLocation Workbench = 1; // 0x0
public const CraftingLocation Forge = 2; // 0x0
public const CraftingLocation AmmoWorkbench = 3; // 0x0
public const CraftingLocation Count = 4; // 0x0
}
define(address,"GameAssembly.dll"+1BEE8B0)
define(bytes,48 8B C4 55 41 56)
[ENABLE]
assert(address,bytes)
alloc(newmem,$1000,"GameAssembly.dll"+1BEE8B0)
label(code)
label(return)
newmem:
mov [rdx+44],0 // INT crafting time: 0 minutes
mov [rdx+50],0 // FLOAT kerosene liters required
mov [rdx+54],0 // FLOAT gunpowder KG required
mov [rdx+58],0 // BOOL requires light?
mov [rdx+59],0 // BOOL locked?
mov [rdx+64],0 // CraftingLocation: Anywhere
mov [rdx+68],0 // BOOL requires lit fire?
code:
mov rax,rsp
push rbp
push r14
jmp return
address:
jmp newmem
nop
return:
[DISABLE]
address:
db bytes
// mov rax,rsp
// push rbp
// push r14
dealloc(newmem)
{
// ORIGINAL CODE - INJECTION POINT: "GameAssembly.dll"+1BEE8B0
"GameAssembly.dll"+1BEE89A: CC - int 3
"GameAssembly.dll"+1BEE89B: E8 10 08 4B FE - call GameAssembly.dll+9F0B0
"GameAssembly.dll"+1BEE8A0: CC - int 3
"GameAssembly.dll"+1BEE8A1: E8 0A 08 4B FE - call GameAssembly.dll+9F0B0
"GameAssembly.dll"+1BEE8A6: CC - int 3
"GameAssembly.dll"+1BEE8A7: E8 04 08 4B FE - call GameAssembly.dll+9F0B0
"GameAssembly.dll"+1BEE8AC: CC - int 3
"GameAssembly.dll"+1BEE8AD: CC - int 3
"GameAssembly.dll"+1BEE8AE: CC - int 3
"GameAssembly.dll"+1BEE8AF: CC - int 3
// ---------- INJECTING HERE ----------
"GameAssembly.dll"+1BEE8B0: 48 8B C4 - mov rax,rsp
"GameAssembly.dll"+1BEE8B3: 55 - push rbp
"GameAssembly.dll"+1BEE8B4: 41 56 - push r14
// ---------- DONE INJECTING ----------
"GameAssembly.dll"+1BEE8B6: 41 57 - push r15
"GameAssembly.dll"+1BEE8B8: 48 8D 68 A1 - lea rbp,[rax-5F]
"GameAssembly.dll"+1BEE8BC: 48 81 EC A0 00 00 00 - sub rsp,000000A0
"GameAssembly.dll"+1BEE8C3: 48 C7 45 C7 FE FF FF FF - mov qword ptr [rbp-39],FFFFFFFE
"GameAssembly.dll"+1BEE8CB: 48 89 58 08 - mov [rax+08],rbx
"GameAssembly.dll"+1BEE8CF: 48 89 70 10 - mov [rax+10],rsi
"GameAssembly.dll"+1BEE8D3: 48 89 78 18 - mov [rax+18],rdi
"GameAssembly.dll"+1BEE8D7: 0F 29 70 D8 - movaps [rax-28],xmm6
"GameAssembly.dll"+1BEE8DB: 0F 29 78 C8 - movaps [rax-38],xmm7
"GameAssembly.dll"+1BEE8DF: 44 0F 29 40 B8 - movaps [rax-48],xmm8
}
8481
"--- END ---"
C0C0C0
1
8504
"DEBUG Backpack Zero Weight"
1
C0C0C0
Array of byte
12
GameAssembly.dll+1869DE3