March 28, 2024, 18:42
bigger smaller reset     1020px Wide width Full width Reset   * *

Gildor's Forums

  Homepage Facebook Read news on Twitter Youtube channel Github page
Welcome, Guest. Please login or register.
Did you miss your activation email?

« previous next »
Print
Author Topic: Assetto Corsa Competizione  (Read 6352 times)
Sparten
Newbie
*
Posts: 3


View Profile
« on: October 01, 2018, 22:39 »

First of all for thos who need it here is the key to unpack:
Code:
F4393E55EE923AE2596931D85E1621FD96B11B509F2039809D66A60182BF5E82

Having done that i'm left with a problem of an undetected engine version, so i went and tested from version 4.16 to 4.21 and non of them seems to be able to extract enything other the simple textures most of the time i'm faced with execptions like this:

Code:
Package "AC2/Content/common/Textures/CarPaint/T_Bump_N.uasset": wrong name index 6150
UnPackage::SerializeFName:pos=000003D0 <- FPropertyTag<< <- CTypeInfo::SerializeUnrealProps <- UObject::Serialize <- UTexture3::Serialize4 <- UTexture2D::Serialize4 <- UTexture2D::Serialize <- LoadObject:Texture2D'T_Bump_N.T_Bump_N', pos=3D0, ver=516/0 (unversioned), game=ue4.20 <- UObject::EndLoad <- CUmodelApp::ShowPackageUI <- UIMenuItem::HandleCommand <- UIMenuItem::HandleCommand <- CUmodelApp::WndProc <- VisualizerLoop <- Main:umodel_build=880

Hope someone might be able to point me in the right direction.
Btw the game comes with a full .pdb of the main .exe
« Last Edit: October 01, 2018, 22:41 by Sparten » Logged
Sparten
Newbie
*
Posts: 3


View Profile
« Reply #1 on: October 02, 2018, 01:01 »

Just want to add a small bit of code in case someone might want to dump the files without the need for a key.
You will need to filter out the files you dont want to copy as this will dump everything.
You might need to change signature to find FPlatformFileManager::Get() for other games.

Code:

enum class EPlatformFileRead : uint8_t
{
None = 0x0,
AllowWrite = 0x01 // attempts to open for read while allowing others to write
};
/**
 * Enum for platform file write flags
 */
enum class EPlatformFileWrite : uint8_t
{
None = 0x0,
AllowRead = 0x01 // attempts to open for write while allowing others to read
};

class FPakFile
{
public:
FString PakFilename;
FName PakFilenameName;
unsigned char unknowndata00[0x168];
};
class IPlatformFile
{
public:
virtual void vfunct0();
virtual void vfunct1();
virtual void vfunct2();
virtual void vfunct3();
virtual void vfunct4();;
virtual void vfunct5();
virtual void vfunct6();
virtual void vfunct7();
virtual void vfunct8();
virtual void vfunct9();
virtual void vfunct10();
virtual void vfunct11();
virtual void vfunct12();
virtual void vfunct13();
virtual void vfunct14();
virtual void vfunct15();
virtual void vfunct16();
virtual void vfunct17();
virtual void vfunct18();
virtual void vfunct19();
virtual void vfunct20();
virtual void vfunct21();
virtual void vfunct22();
virtual void vfunct23();
virtual void vfunct24();
virtual void vfunct25();
virtual void vfunct26();
virtual void vfunct27();
virtual void vfunct28();
virtual void vfunct29();
virtual void vfunct30();
virtual void vfunct31();
virtual void vfunct32();
virtual void vfunct33();
virtual void vfunct34();
virtual void vfunct35();
virtual void vfunct36();
virtual void vfunct37();
virtual void vfunct38();
virtual void FindFilesRecursively(TArray<FString>* FoundFiles, const TCHAR* Directory, const TCHAR* FileExtension);
virtual bool DeleteDirectoryRecursively(const TCHAR* Directory);
virtual bool CreateDirectoryTree(const TCHAR* Directory);
virtual bool _CopyFile(const TCHAR* To, const TCHAR* From, EPlatformFileRead ReadFlags = EPlatformFileRead::None, EPlatformFileWrite WriteFlags = EPlatformFileWrite::None);
};

class FPakPlatformFile : public IPlatformFile
{
struct FPakListEntry
{
int ReadOrder;
FPakFile *PakFile;
};
public:
IPlatformFile *LowerLevel;
TArray<FPakListEntry> PakFiles;
};

class FPlatformFileManager
{
public:

FPakPlatformFile *TopmostPlatformFile;
private:
};

void CreatePath(const std::wstring& strPathin)
{
std::wstring strPath(strPathin);
std::wstring strCurrent;
int nStart, nStart1, nStart2;

// Create the path //
while (strPath.length())
{
nStart1 = (int)strPath.find('/'); if (nStart1 == std::wstring::npos) nStart1 = INT_MAX;
nStart2 = (int)strPath.find('\\'); if (nStart2 == std::wstring::npos) nStart2 = INT_MAX;
nStart = min(nStart1, nStart2);
if (nStart == INT_MAX) break;
strCurrent += strPath.substr(0, nStart) + L"\\";
strPath.erase(strPath.begin(), strPath.begin() + nStart + 1);
CreateDirectory(strCurrent.c_str(), NULL);
}
}

typedef FPlatformFileManager *(__stdcall* FPlatformFileManagerGet_t)();
FPlatformFileManagerGet_t pFPlatformFileManagerGet = nullptr;

pFPlatformFileManagerGet =  reinterpret_cast<FPlatformFileManagerGet_t>(FindPattern(GetModuleHandle(NULL), (unsigned char*)"\x48\x8B\xC3\x48\x83\xC4\x20\x5B\xC3\xCC\xCC\xCC\xCC\xCC\x48\x8D\x05\x00\x00\x00\x00\xC3\xCC\xCC\xCC\xCC\xCC\xCC\xCC\xCC\x48\x83\xEC\x38",
"xxxxxxxxxxxxxxxxx????xxxxxxxxxxxxx") + 14);

add_log("pFPlatformFileManagerGet 0x%llx", pFPlatformFileManagerGet);
FPlatformFileManager * fileManager = pFPlatformFileManagerGet();

TArray<FString> OutFiles;
fileManager->TopmostPlatformFile->FindFilesRecursively(&OutFiles, L"../../../", L"");

for (size_t i = 0; i < OutFiles.Num(); i++)
{
std::wstring indir = OutFiles[i].c_str();
std::wstring outdir = L"E:/ACC/" + indir.substr(9, indir.length());
CreatePath(outdir);

outdir = L"E:/ACC/" + indir.substr(9, indir.length());
if(!fileManager->TopmostPlatformFile->_CopyFile(outdir.c_str(), OutFiles[i].c_str()))
{
add_log("failed to copy file %s", ws2s(outdir).c_str());
}
}
add_log("done dumping files");
« Last Edit: October 02, 2018, 01:37 by Sparten » Logged
Juso3D
Moderator
Hero Member
*****
Posts: 910


Welcome to Gildor Forums


View Profile
« Reply #2 on: October 02, 2018, 10:16 »

UE4:20 - AES: 0xF4393E55EE923AE2596931D85E1621FD96B11B509F2039809D66A60182BF5E82

Logged

Blender + Linux User Here.
Sparten
Newbie
*
Posts: 3


View Profile
« Reply #3 on: October 02, 2018, 10:37 »

Thanks, i was trying using both quickbms and the method posted above to extract, but never tested it with umodel on its own. dooh
Logged
linamza_84
Newbie
*
Posts: 2


View Profile
« Reply #4 on: January 01, 2019, 21:26 »

Hi,

The new version has add a new files, but unfotrunatly the umodel open all the models without the correct material, all new models are opened with a material called "worldgridmaterial".

maybe is a AES KEY or a umodel need to be updated to support the new files?

find here one of the new model files: http://www.mediafire.com/file/x7lw7iinn51cubv/UMODEL_Material_Unloaded.rar/file

Hope gildor can fix this. thank you in advance for the great work.

Cheers

« Last Edit: January 01, 2019, 21:32 by linamza_84 » Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #5 on: January 01, 2019, 21:37 »

If AES key would be wrong, you wouldn't open anything. Incorrect material doesn't mean a problem with opening files, this means that models were prepared in a way when materials are assigned in a different way than setting them up directly to meshes. You should recognize and assign materials yourself, outside of umodel.
Logged
linamza_84
Newbie
*
Posts: 2


View Profile
« Reply #6 on: January 01, 2019, 22:30 »

Thank you Gildor for the quick answer, much apreciated.
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #7 on: January 01, 2019, 23:16 »

There are several places where model materials could be set up.
1. model itself
2. blueprint
3. scene
4. from code (assign materials to model's sections).

Only the 1st one could work with umodel.
Logged
Juso3D
Moderator
Hero Member
*****
Posts: 910


Welcome to Gildor Forums


View Profile
« Reply #8 on: January 02, 2019, 09:30 »

uModel can only show you the basic textures of materials, it's isn't a full engine like UE4 is, here is what a car material setup consists of.....


Logged

Blender + Linux User Here.
javiliyors
Newbie
*
Posts: 5


View Profile
« Reply #9 on: May 23, 2019, 23:07 »

its possible to extract the tracks? would be wonderful
Logged
venturion
Jr. Member
**
Posts: 77


View Profile
« Reply #10 on: June 04, 2019, 04:16 »

Ver 1.0.0 is using 4.22 with different AES-key now that is;

0x1FFA618EE774DB10686AE27D283C303D241893F77D679F4FD5250C2B1A537EA0 (Thanks to GHFear)

everything else should work.
Logged
Cauri
Newbie
*
Posts: 4


View Profile
« Reply #11 on: December 03, 2019, 19:21 »

Hello, i'm trying to make some skin for ACC. I extacted, edited and repacked the pak file, but i don't know what i have to do for the .sig file.
Can anyone help me?
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #12 on: December 03, 2019, 19:51 »

This forum has no modding information, it is generally not allowed here. By the way, .sig file contains hash of the pak file, generated with private encryption key owned by developer company, so you can't generate it.
Logged
Cauri
Newbie
*
Posts: 4


View Profile
« Reply #13 on: December 03, 2019, 20:07 »

Sorry If i didn't followed some rules.
I was trying bcause i saw that someone did it on racedepartment. So i guess there is a way, but i'm too noob to understand it.
I started 3 days ago with unreal games.
I did a skin on Ride3, and i would love to be able to do it on ACC.

Anyway thank you for your quik answer.
Much appreciated. Smiley
Logged
Gildor
Administrator
Hero Member
*****
Posts: 7978



View Profile WWW
« Reply #14 on: December 04, 2019, 09:23 »

People who do any modding are never sharing anything here, no matter if they're using UModel or not. Sometimes I see some modding guides on youtube - made by 10 years old children, so nothing serious. I even have a special board for this, but it is mostly filled with questions, with no experience sharing.
Logged
Print 
« previous next »
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Leviathan design by Bloc | XHTML | CSS