Improve readability

This commit is contained in:
Merijn Hendriks 2020-11-20 03:09:48 +01:00
parent 7d77454910
commit 7192228e85

View File

@ -21,12 +21,16 @@ To be specific, we make the checks of battleye and certificate checking always r
We also add logic for saving received data from the server to save data obtained. We also add logic for saving received data from the server to save data obtained.
We use the "swap exploit" by quickly replacing the assembly when the game starts to load our custom assembly. We use the "swap exploit" by quickly replacing the assembly when the game starts to load our custom assembly.
To be able to make patches, we deobfuscate the assembly.
But since de4dot isn't capable of understanding the obfuscation algorithm fully, we use an additional specialized deobfuscator command.
In addition, we save the assembly in the gamefiles before making modifications to fix the resolutionscope error.
## Legenda ## Legenda
```markdown ```markdown
**path** **what** | **example** **path** **what** | **example**
------------ | ----------------------------- | ---------------------- ------------ | ----------------------------- | ----------------------
`%gamedir%` | Escape From Tarkov (Live) | `C:/games/EFT (Live)` `%gamedir%` | Escape From Tarkov (Live) | `C:/games/EFT/ (Live)`
``` ```
## Requirements ## Requirements
@ -36,45 +40,43 @@ We use the "swap exploit" by quickly replacing the assembly when the game starts
- [de4dot](https://dev.offline-tarkov.com/innohurrytocode/de4dot/releases) - [de4dot](https://dev.offline-tarkov.com/innohurrytocode/de4dot/releases)
- [AssetStudio](https://github.com/Perfare/AssetStudio/releases/latest) - [AssetStudio](https://github.com/Perfare/AssetStudio/releases/latest)
## 1. Assembly deobfuscation ## 1. Dumper
1. Go to `%gamedir%/EscapeFromTarkov_Data/Managed/` 1. Copy-paste `%gamedir%/EscapeFromTarkov_Data/Managed/Assembly-CSharp.dll` to your de4dot folder
2. Copy-paste `Assembly-CSharp.dll` to your de4dot folder 2. Drag `Assembly-CSharp.dll` on top of `de4ot-x64.exe`
3. Drag `Assembly-CSharp.dll` on top of `de4ot-x64.exe` 3. Open `Assembly-CSharp-cleaned.dll` in dnSpy
4. Open `Assembly-CSharp-cleaned.dll` from the de4dot folder in dnSpy 4. Find the deobfuscation method (appendix 1.1)
5. Find the deobfuscation method (appendix 1.1) 5. Run the deobfuscate command with the token from the deobfuscation method (appendix 1.2)
6. Run the specialized cleaning command using the token from the deobfuscation method (appendix 1.2) 6. Cut-paste `Assembly-CSharp-cleaned-cleaned.dll` to `%gamedir%/EscapeFromTarkov_Data/Managed/`
7. Cut-paste `Assembly-CSharp-cleaned-cleaned.dll` into `%gamedir%/EscapeFromTarkov_Data/Managed/` 7. Open `Assembly-CSharp-cleaned-cleaned.dll` in dnSpy
8. Open `Assembly-CSharp-cleaned-cleaned.dll` from Managed in dnSpy 8. dnSpy > File > Save Module.
9. dnSpy > File > Save Module 9. Apply dumper patch (appendix 1.3)
10. Apply ssl patch (appendix 1.4)
11. Apply battleye patch (appendix 1.5)
12. dnSpy > File > Save Module
## 2. Create dumper ## 2. Backup
1. Create `%gamedir%/EscapeFromTarkov_Data/Managed/backup/` 1. Create `%gamedir%/backup/`
2. Copy-paste `Assembly-CSharp.dll` to `%gamedir%/EscapeFromTarkov_Data/Managed/backup/` 2. Copy-paste `Assembly-CSharp.dll` to `%gamedir%/backup/`
3. Rename `Assembly-CSharp.dll` in backup to `Assembly-CSharp.dll.bak` 3. Rename `Assembly-CSharp.dll` in `%gamedir%/backup/` to `Assembly-CSharp.dll.bak`
4. Open `Assembly-CSharp-cleaned-cleaned.dll` from Managed in dnSpy 4. Cut-paste `Assembly-CSharp-cleaned-cleaned.dll` to `%gamedir%/backup/`
5. Apply dumper patch (appendix 1.3) 5. Rename `Assembly-CSharp-cleaned-cleaned.dll` in `%gamedir%/backup/` to `Assembly-CSharp.dll`
6. Apply ssl patch (appendix 1.4)
7. Apply battleye patch (appendix 1.5)
8. dnSpy > File > Save Module
9. Cut-paste `Assembly-CSharp-cleaned-cleaned.dll` to `%gamedir%/EscapeFromTarkov_Data/Managed/backup/`
10. Rename `Assembly-CSharp-cleaned-cleaned.dll` in backup to `Assembly-CSharp.dll`
## 3. Dumping server data ## 3. Dumping server data
1. Open Battlestate Games Launcher 1. Open Battlestate Games Launcher
2. Battlestate Games Launcher > settings > close launcher when game starts 2. Battlestate Games Launcher > settings > close launcher when game starts
3. Copy-paste (wait when prompted to override) `Assembly-CSharp.dll` from backup into `%gamedir%/EscapeFromTarkov_Data/Managed/` 3. Start the game
4. Start the game 4. Copy-paste `%gamedir%/backup/Assembly-CSharp.dll` to `%gamedir%/EscapeFromTarkov_Data/Managed/` when the launcher closes
5. As soon as the launcher closes, override the file 5. `%gamedir%/HTTP_DATA/` appears when you reached the main menu
6. When you reached the main menu, the folder `%gamedir%/HTTP_DATA/` will appear 6. Dump the data (appendix 2)
7. Dump the data you need (appendix 2) 7. Close the game
8. When the game closed, replace `Assembly-CSharp.dll` with `Assembly-CSharp.dll.bak` 8. Replace `Assembly-CSharp.dll` with the original assembly
## 4. Dumping asset data ## 4. Dumping asset data
1. Open AssetStudio 1. Open AssetStudio.
2. AssetStudio > File > Load File > `%gamedir%/EscapeFromTarkov_Data/sharedassets2.assets` 2. AssetStudio > File > Load File > `%gamedir%/EscapeFromTarkov_Data/sharedassets2.assets`
3. Switch from Scene Hierarchy to Asset List 3. Switch from Scene Hierarchy to Asset List
4. AssetStudio > Filter Type > what you look for (example: `TextAsset`) 4. AssetStudio > Filter Type > what you look for (example: `TextAsset`)
@ -91,11 +93,11 @@ In order to use it in Aki's database, you have 2 options:
The data does contain sensitive information such as you account id, so be careful whom you share it with. The data does contain sensitive information such as you account id, so be careful whom you share it with.
`aki-analyzer` strips out the sensitive information when it converts the data to the right format. `aki-analyzer` strips out the sensitive information when it converts the data to the right format.
And no, the data dumped from the game server cannot be uploaded back to the game server. And no, the data dumped from the game server cannot be uploaded back to the game server.
## Appendix 1: Code ## Appendix 1: Code
All code is based on Escape From Tarkov 0.12.8.9819 All code is based on Escape From Tarkov 0.12.8.9819.
### 1.1. Deobfuscation method in assembly ### 1.1. Deobfuscation method in assembly
@ -107,7 +109,7 @@ Class2019.smethod_0()
} }
``` ```
### 1.2. Specialized deobfuscation command ### 1.2. Deobfuscation command
```powershell ```powershell
de4dot-x64.exe --un-name "!^<>[a-z0-9]$&!^<>[a-z0-9]__.$&![A-Z][A-Z]\$<>.$&^[a-zA-Z_<{$][a-zA-Z_0-9<>{}$.`-]*$" "Assembly-CSharp-cleaned.dll" --strtyp delegate --strtok 0x0600C93A de4dot-x64.exe --un-name "!^<>[a-z0-9]$&!^<>[a-z0-9]__.$&![A-Z][A-Z]\$<>.$&^[a-zA-Z_<{$][a-zA-Z_0-9<>{}$.`-]*$" "Assembly-CSharp-cleaned.dll" --strtyp delegate --strtok 0x0600C93A
@ -154,16 +156,16 @@ This discusses how you can obtain certain data with the dumper installed.
```markdown ```markdown
**Type** | **How** **Type** | **How**
--------------- | ---------------------------------------------------------------------------------------------------- --------------- | -----------------------------------------------------------------------------------------------------
Startup locales | Start the game in the locale you want to dump Startup locales | Start the game in the locale you want to dump.
Game locales | Select the locale in game settings Game locales | Select the locale in game settings.
Common data | Start the game Common data | Start the game.
Assort | Open the trader you want to dump from Assort | Open the trader you want to dump from.
Bots | Do an offline raid on a map containing that bot Bots | Do an offline raid on a map containing that bot.
Item events | Do the specifiic item event Item events | Do the specifiic item event.
Images | Open the menu containing the image, it's dumped to `%TEMP%\Battlestate Games\EscapeFromTarkov\files` Images | Open the menu containing the image, it's dumped to `%TEMP%\Battlestate Games\EscapeFromTarkov\files`.
Location (loot) | Rip from game files Location (loot) | Rip from game files.
Models | Rip from game files Models | Rip from game files.
Textures | Rip from game files Textures | Rip from game files.
Audio | Rip from game files Audio | Rip from game files.
``` ```