Qhimm.com Forums

Final Fantasy Forums => Scripting and Reverse Engineering => Topic started by: Maki on 2018-02-09 15:32:35

Title: [PC] Final Fantasy XV
Post by: Maki on 2018-02-09 15:32:35
The benchmark is available on:
http://benchmark.finalfantasyxv.com/na/

not much, but maybe that'd be possible to escape benchmark mode

Lot's of floating rocks above ground, character just ran through a car... It's quite messy demo.
Makes HTTP connection to 23.51.123.27

UPDATE:
Okay, I broke it- it's all scripted in "Quest" file. Getting into /datas/quest/duscae/* and grabbing all files makes the game unresponsible (all hud works, game works, it just doesn't produce any motion)

UPDATE2:
Broke out- you just need to delete all quest except area_du_share_quest_jet_bench.earc and as soon as Noct stops fishing you are on your own. Now I have time to actually try to control character

UPDATE3:
Time of day normally passes. I put sniffer on process flow and it only reads:
\datas\sound\resources\20001music2\jp\bgm_hanyo_kyoten.win.mab
in chunks (therefore music is streamed)

from time to time it queries C:\Windows\System32\dinput8.dll

UPDATE4: (18:28)
(https://s19.postimg.org/xrlxat15v/Bez_tytu_u.jpg)
PS> Yeah, I tried plugging DualShock 4

UPDATE5:
Game has anti-debugger things... I can attach just like in patched MOBIUS:FF

UPDATE6: (18:41)
Loaded dump into IDA. Found FFXV entry point

UPDATE7: (19:09)
By changing EXEs PE format from GUI (sic!) to console you get the debug console, unfortunately it only displays:
2018-02-09T19:09:12.880: DllMain.cpp:22      #0 Attached GfeSDK.dll

UPDATE8: (19:30)
Engine codename is "re_black" or just "black"

UPDATE9: (19:33)
Engine has rich debugging strings and references to internal script language as "klang"
Engine has trap to debugger function (INT 3) [exception throwing]

UPDATE10: (20:11)
Oh SE... SE... SEEEE! You must have love us to introduce all these anti-debugger tricks, but you ain't stopping me!

UPDATE11: (20:12)
So I see you learnt something from Mobius:FF and now you trap debuggers even when already in-game. :-) I'll find you

UPDATE12: (20:17)
Do you feel that SquareEnix? I'm getting closer and... more drunk by the way

UPDATE13: (20:31)
00007FF634A5ACEC - case 8 is your reaper

UPDATE14: (20:40)
One of your threads are detecting debugger... let's see...

UPDATE15: (20:49)
sub_7FF636B5C380 - Raises exception to one thread
Title: Re: [PC] Final Fantasy XV
Post by: LeonhartGR on 2018-02-09 18:50:00
That feels more exciting than playing the actual game! :D
Title: Re: [PC] Final Fantasy XV
Post by: obesebear on 2018-02-09 19:09:08
Very entertaining read.  Keep up the good work!
Title: Re: [PC] Final Fantasy XV
Post by: Maki on 2018-02-09 19:18:25
FOUND THE FUCKER!
ucrtbase.dll:00007FFF8A01D800 ucrtbase__Exit -this is called asynchronous by one thread. Suspending thread toally makes the game playable with debugger attached.

UPDATE:
Unfortunately it doesn't print any cool debug stuff (maybe before level loading I saw something with [klang])

Okay, now I'm not quite sure how to enable input here xD I bet the input must be on some thread

DUMP TIME!

Luminous.RenderInterface.DefaultWindow
.rdata:00007FF6374128B0 0000000A C GLADIOLUS   

Hm, maybe this script:
SQEX.Ebony.Framework.Sequence.Event.SequenceEventKeyboardInput
EDIT_DISABLED_KEYBOARD_PAD   

Grab 73k lines of all engine scripts/paths/etc here:
https://www.dropbox.com/s/wytfrid4r3ju5nd/FFXV_dumped.txt?dl=0

UPDATE:
I saw "Luminous" only one time, it's always refered as "Black":
BlackConfig.xml

ucrtbase_exit is called by sub_7FF634CAC230 which is called by sub_7FF634CAC79


[klang][info]version 16.2.26.A

UPDATE:

Code: [Select]
.rdata:00007FF637646990 00000007 C ESCAPE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
.rdata:00007FF6376469C8 00000008 C PRT_SCR                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
.rdata:00007FF6376469D0 00000007 C SCR_LK                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
.rdata:00007FF6376469F0 0000000B C BACK_QUOTE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
.rdata:00007FF637646A00 00000005 C CAPS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
.rdata:00007FF637646A08 00000008 C L_SHIFT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
.rdata:00007FF637646A10 00000007 C L_CTRL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
.rdata:00007FF637646A18 00000008 C WINDOWS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
.rdata:00007FF637646A20 00000006 C L_ALT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
.rdata:00007FF637646A28 00000006 C MINUS                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
.rdata:00007FF637646A30 00000006 C EQUAL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
.rdata:00007FF637646A38 0000000B C BACK_SPACE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
.rdata:00007FF637646A48 0000000D C OPEN_BRACKET                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
.rdata:00007FF637646A58 0000000E C CLOSE_BRACKET                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
.rdata:00007FF637646A68 0000000B C BACK_SLASH                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
.rdata:00007FF637646A78 0000000B C SEMI_COLON                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
.rdata:00007FF637646A88 0000000B C APOSTROPHE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
.rdata:00007FF637646A94 00000006 C ENTER                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
.rdata:00007FF637646A9C 00000006 C COMMA                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
.rdata:00007FF637646AA4 00000007 C PERIOD                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
.rdata:00007FF637646AAC 00000006 C SLASH                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
.rdata:00007FF637646AB8 00000008 C R_SHIFT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
.rdata:00007FF637646AC0 00000006 C SPACE                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
.rdata:00007FF637646AC8 00000006 C R_ALT                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
.rdata:00007FF637646AD0 00000005 C FUNC                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
.rdata:00007FF637646AD8 00000005 C MENU                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
Title: Re: [PC] Final Fantasy XV
Post by: Maki on 2018-02-09 21:46:29
Uhm

(https://s19.postimg.org/4pv2oac8j/Bez_tytu_u.jpg)
Title: Re: [PC] Final Fantasy XV
Post by: Maki on 2018-02-10 11:50:27
ffxv.exe parameters as said in launcher (which is written in C# and is not obfuscated):

Code: [Select]
string text = "ffxv.exe";
string text2 = string.Empty;
if (this.QualityComboIndex2 == MainWindow.QualityComboIndexes.LowQuality)
{
text2 += "--graphicsIni config\\GraphicsConfig_BenchmarkLow.ini";
}
else if (this.QualityComboIndex2 == MainWindow.QualityComboIndexes.MiddleQuality)
{
text2 += "--graphicsIni config\\GraphicsConfig_BenchmarkMiddle.ini";
}
else if (this.QualityComboIndex2 == MainWindow.QualityComboIndexes.HighQuality)
{
text2 += "--graphicsIni config\\GraphicsConfig_BenchmarkHigh.ini";
}
if (this.WindowModeComboIndex2 == MainWindow.WindowModeComboIndexes.FullScreen)
{
text2 += " -f";
}
if (this.ResolutionComboIndex2 == MainWindow.ResolutionComboIndexes.Resolution_1280x720)
{
text2 += " --displayResolution 1280 720 --renderingResolution 1280 720";
}
else if (this.ResolutionComboIndex2 == MainWindow.ResolutionComboIndexes.Resolution_1920x1080)
{
text2 += " --displayResolution 1920 1080 --renderingResolution 1920 1080";
}
else if (this.ResolutionComboIndex2 == MainWindow.ResolutionComboIndexes.Resolution_3840x2160)
{
text2 += " --displayResolution 3840 2160 --renderingResolution 3840 2160";
}
if (this.IsAutoLoop)
{
text2 += " --loop_mode";
}
text2 = text2 + " --locale=" + this.LanguageLabels[this.LanguageComboIndex].LocaleText;
ProcessStartInfo startInfo = new ProcessStartInfo
{
UseShellExecute = false,
FileName = text,
Arguments = text2
};
try
{
this.gameProcess = Process.Start(startInfo);
}
Title: Re: [PC] Final Fantasy XV
Post by: Maki on 2018-02-10 15:59:32
All possible parameters:
Code: [Select]
.rdata:00007FF637501D40 0000000A C --locale=
.rdata:00007FF637501D50 0000000A C --ui_lang
.rdata:00007FF637501D60 0000000D C --numThreads
.rdata:00007FF637501D70 00000012 C --numAsyncThreads
.rdata:00007FF637501D88 0000000C C --loop_mode
.rdata:00007FF637501D98 0000000E C --graphicsIni
.rdata:00007FF637501DA8 00000007 C --720p
.rdata:00007FF637501DB0 00000008 C --2160p
.rdata:00007FF637501DB8 00000014 C --displayResolution
.rdata:00007FF637501DD0 00000016 C --renderingResolution
.rdata:00007FF637501DE8 00000014 C --noNvidiaAfterMath

for config see this:
Code: [Select]
.rdata:00007FF637501E40 000002A5 C +wEAAJ8CAAD/W0Jhc2ljU2X/dHRpbmdzXQr/RGlzcGxheVL/ZXNvbHV0aW//bldIPTEyODD/eDcyMApNYXj/RnJhbWVyYXT/ZT0yNDAKUmWPbmRlcvjwBQ8XAUf/cmFwaGljc1D/cmVzZXQ9MAr/U2hvd0Nvbma7aWdZBEZQU1kACnlb/vT0/lNjYWz48O9Nb2RlWQBGUDH/NkJhY2tCdWb/ZmVyPTEKRnX/bGxTY3JlZW7+lAFPblN0YXJ0+3VwWQBIYXJkd+dhcmWsC8MBRFJH72FtbWGNAWU9MfsuM94BTHVtaW5vYW5jZecEMDDEAHdpZ2hTAGNpcwwA3iwDVGFyZ1cCVlP3eW5jcAJOVklE+0lB4gBlV29ya/1z9PdOdmlkaWHPRmxvd1kARxNIYfNpcjgSURZTaGFk3293TGliYhdUZf9ycmFpblRlc89zZWxhCwF2F3VyPWZRFlZYQU9wAiwGXvT3QW50aY8AYWIR/0FtYmllbnRPj2NjbHUREcMBCRBTT3BlY0GIEFgBTAkQNvfxUXWPAHR5WQCUAe9sTE9EjQQ9NzX9CrADRmlsdGVyP0RldGFpbKkAbBPC/vB0+QUQJW0SNQc9Nf8wClRleHR1cv9lQW5pc290co9vcGljHSNZAFkkU+90cmVh9gBnTWUXbW9yACAA
Looks familar? Yeah, that's base64...

Code: [Select]
����[BasicSettings]
DisplayResolutionWH=1280x720
MaxFramerate=240
RenderGraphicsPreset=0
ShowConfigYFPSY�
y[ScalModeY�FP16BackBuffer=1
FullScreenOnStartupY�Hardware DRGammae=1.3Luminoance00�wighS�cis �,TargWVSyncpNVIDIA�eWorksNvidiaFlowY�GHair8QShadowLibbTerrainTessela vur=fQVXAOp,^Anti�abAmbientOcclu SOpecAXL 6Qu�tyY�lLOD=75
Filter?Detail�lt%m5=50
TextureAnisotropic#Y�Y$Strea�gMemor� �

KeyConfig.ini in root directory actually has it all, not quite sure why it doesn't seem to work for input.
Game reads the file as said in Process IO:
Code: [Select]
18:12:40,8167929 ffxv.exe 6832 QueryDirectory E:\FINAL FANTASY XV BENCHMARK\KeyConfig.ini SUCCESS Filter: KeyConfig.ini, 1: KeyConfig.ini
18:12:40,8169401 ffxv.exe 6832 CreateFile E:\FINAL FANTASY XV BENCHMARK\KeyConfig.ini SUCCESS Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Non-Directory File, Attributes: R, ShareMode: Read, Write, AllocationSize: n/a, OpenResult: Opened

Title: Re: [PC] Final Fantasy XV
Post by: LeonhartGR on 2018-02-10 16:48:41
Hahaha! This hacking image is gonna stay in history!
Title: Re: [PC] Final Fantasy XV
Post by: Maki on 2018-02-10 18:00:26
I'm out of ideas... I just can't happen to enable input, and alcochol doesn't seem to help me...
Title: Re: [PC] Final Fantasy XV
Post by: DLPB on 2018-02-12 04:02:27
Alcohol never helps programming... not after first hour anyway :P