和平精英画质配置文件 UserCustom.ini 剖析 UserCustom.ini
,俗称 UC
,直译为「用户配置」,修改和平精英画质选项主要靠的就是修改这个文件。本篇文章,我将会带你了解这个文件的基本结构、加密方式,以及如何解密修改这个文件。
基本结构
以下内容均使用用户 0 即主应用作演示
如果你安装了和平精英,你可以在 /storage/emulated/0/Android/data/com.tencent.tmgp.pubgmhd/files/UE4Game/ShadowTrackerExtra/ShadowTrackerExtra/Saved/Config/Android/UserCustom.ini
找到这个配置文件,文件为 INI 格式 ,遵守了 INI 格式的基本规范,但对部分内容做了加密。
打开这个文件,你会看到这样的结构:
1 2 3 4 5 6 7 8 9 10 11 12 [UserCustom DeviceProfile] +CVars =0 B57292C3B3E3D1C0F101A1C3F292A35160E444F +CVars =0 B57292C3B3E3D1C0F101A1C3F292A34101D444F +CVars =0 B57292C3B3E3D1C0F101A1C3F292A31101E11444F +CVars =0 B572C0A1C0B31101E112B1C0A16150C0D1016172A1C0D0D10171E4449[BackUp DeviceProfile] +CVars =0 B57292C3B3E3D1C0F101A1C3F292A35160E444F +CVars =0 B57292C3B3E3D1C0F101A1C3F292A34101D444F +CVars =0 B57292C3B3E3D1C0F101A1C3F292A31101E11444F +CVars =0 B572C0A1C0B31101E112B1C0A16150C0D1016172A1C0D0D10171E4449
如果你没有使用工具修改过画质选项,那么这里的 UserCustom DeviceProfile
部分和 BackUp DeviceProfile
应当是相同的,下简称「配置部分」和「备份部分」。
加密解密方式 配置部分 我们先分析一下配置部分。
这部分第一行会有一个节 :[UserCustom DeviceProfile]
来做标志,随后是固定的 +CVars=...
格式,这里的 ...
实际上是经过 16 进制转换后再进行简单替换加密 的产物。密文的每两个字符可以对应为明文的一个字符。
经过分析,我们得到了这个映射表:
1 2 3 4 5 6 7 8 9 ["明文"]="密文" ["A"]="38" ["a"]="18" ["B"]="3B" ["b"]="1B" ["C"]="3A" ["c"]="1A" ["D"]="3D" ["d"]="1D" ["E"]="3C" ["e"]="1C" ["F"]="3F" ["f"]="1F" ["G"]="3E" ["g"]="1E" ["H"]="31" ["h"]="11" ["I"]="30" ["i"]="10" ["J"]="33" ["j"]="13" ["K"]="32" ["k"]="12" ["L"]="35" ["l"]="15" ["M"]="34" ["m"]="14" ["N"]="37" ["n"]="17" ["O"]="36" ["o"]="16" ["P"]="29" ["p"]="09" ["Q"]="28" ["q"]="08" ["R"]="2B" ["r"]="0B" ["S"]="2A" ["s"]="0A" ["T"]="2D" ["t"]="0D" ["U"]="2C" ["u"]="0C" ["V"]="2F" ["v"]="0F" ["W"]="2E" ["w"]="0E" ["X"]="21" ["x"]="01" ["Y"]="20" ["y"]="00" ["Z"]="23" ["z"]="03" ["."]="57" ["0"]="49" ["1"]="48" ["2"]="4B" ["3"]="4A" ["4"]="4D" ["5"]="4C" ["6"]="4F" ["7"]="4E" ["8"]="41" ["9"]="40" ["="]="44"
有了这个表,我们就可以干很多事情了。首先我们随机选取一行进行分析验证:
1 2 +CVars = 0 B 57 29 2 C 3 B 3 E 3 D 1 C 0 F 10 1 A 1 C 3 F 29 2 A 31 10 1 E 11 44 4 F +CVars = r . P U B G D e v i c e F P S H i g h = 6
我们得到了结果 CVars=r.PUBGDeviceFPSHigh=6
,这就是和平精英画质配置文件的其中一项。但是这么多内容如果全靠人去转换,肯定是不可行的,所以,一系列「画质助手」就应运而生了,他们可以利用手机的算力来进行解密。我没有这个技术力,所以只能写一个简单的 Shell Bash 解密脚本:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 input_file="/storage/emulated/0/Android/data/com.tencent.tmgp.pubgmhd/files/UE4Game/ShadowTrackerExtra/ShadowTrackerExtra/Saved/Config/Android/UserCustom.ini" output_file="UC_解密.ini" declare -A encryptMap=( ["A" ]="38" ["a" ]="18" ["B" ]="3B" ["b" ]="1B" ["C" ]="3A" ["c" ]="1A" ["D" ]="3D" ["d" ]="1D" ["E" ]="3C" ["e" ]="1C" ["F" ]="3F" ["f" ]="1F" ["G" ]="3E" ["g" ]="1E" ["H" ]="31" ["h" ]="11" ["I" ]="30" ["i" ]="10" ["J" ]="33" ["j" ]="13" ["K" ]="32" ["k" ]="12" ["L" ]="35" ["l" ]="15" ["M" ]="34" ["m" ]="14" ["N" ]="37" ["n" ]="17" ["O" ]="36" ["o" ]="16" ["P" ]="29" ["p" ]="09" ["Q" ]="28" ["q" ]="08" ["R" ]="2B" ["r" ]="0B" ["S" ]="2A" ["s" ]="0A" ["T" ]="2D" ["t" ]="0D" ["U" ]="2C" ["u" ]="0C" ["V" ]="2F" ["v" ]="0F" ["W" ]="2E" ["w" ]="0E" ["X" ]="21" ["x" ]="01" ["Y" ]="20" ["y" ]="00" ["Z" ]="23" ["z" ]="03" ["." ]="57" ["0" ]="49" ["1" ]="48" ["2" ]="4B" ["3" ]="4A" ["4" ]="4D" ["5" ]="4C" ["6" ]="4F" ["7" ]="4E" ["8" ]="41" ["9" ]="40" ["=" ]="44" ) rm -f $output_file " cp $input_file /data/local/tmp/tmp.ini local input_file=" /data/local/tmp/tmp.ini" sed -i '/.BackUp.*/,$d ' $input_file while IFS= read -r line; do if [[ $line == +CVars=* ]]; then prefix=" +CVars=" encrypted_part=" ${line#$prefix} " decrypted_part=" " for ((i=0; i<${#encrypted_part} ; i+=2)); do code=" ${encrypted_part:i:2} " decrypted_part+=" ${decryptMap[$code]} " done echo " $prefix$decrypted_part " >> " $output_file " else echo " $line " >> " $output_file " fi done < " $input_file " rm -f /data/local/tmp/tmp.ini echo -e " ${gr} - 解密完成,已保存到 $output_file${res} "
运行这个脚本,你会在脚本所在目录看到一个被解密的 UserCustom.ini
,里面只包含配置部分,至于为什么要截掉备份部分后面会说。
解密后的文件大致如下,每个人可能会有所不同,我对部分项做了注释:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 [UserCustom DeviceProfile] +CVars =r.PUBGDeviceFPSLow=6 +CVars =r.PUBGDeviceFPSMid=6 +CVars =r.PUBGDeviceFPSHigh=6 +CVars =r.UserQualitySetting=1 +CVars =r.UserShadowSwitch=0 +CVars =r.ShadowQuality=0 +CVars =r.MobileContentScaleFactor=1.500000 +CVars =r.UserVulkanSetting=0 +CVars =r.UserQualitySettingTA=1 +CVars =r.MobileHDR=0.0 +CVars =r.Mobile.SceneColorFormat=0.0 +CVars =r.UserHDRSetting=2 +CVars =r.ACESStyle=2 +CVars =r.UserMSAASetting=0 +CVars =r.DefaultFeature.AntiAliasing=0.0 +CVars =r.MobileMSAA=1.0 +CVars =r.MSAACount=4.0 +CVars =r.MaterialQualityLevel=0 +CVars =r.Shadow.MaxCSMResolution=4 +CVars =r.Shadow.CSM.MaxMobileCascades=0 +CVars =r.Shadow.DistanceScale=0 +CVars =r.StaticMeshLODDistanceScale=1.3 +CVars =foliage.LODDistanceScale=0.6 +CVars =r.DetailMode=0 +CVars =r.Streaming.PoolSize=200 +CVars =r.EmitterSpawnRateScale=0.5 +CVars =r.ParticleLODBias=2 +CVars =r.DepthOfF ieldQuality=0 +CVars =r.RefractionQuality=0 +CVars =foliage.MinLOD=0 +CVars =r.MaxAnisotropy=4
备份部分 这部分是用来校验的,节标志为 [BackUp DeviceProfile]
,在修改 UserCustom.ini
的情况下打开游戏,游戏会对 UserCustom.ini
文件进行一次读取,并把 [UserCustom DeviceProfile]
节的代码和 [BackUp DeviceProfile]
节的代码作对比校验,若校验不通过,则会使用 [BackUp DeviceProfile]
中的代码对 [UserCustom DeviceProfile]
作重置。
所以,修改文件后如果不想被「自动恢复」,就需要让两部分的代码保持一致才行,当然,你也可以通过修改文件权限的方式不让软件修改,但这一般需要 Root。
如何修改 如果你清晰了解了以上内容,那么「修改和平精英画质配置文件」的方法相信你已经有思路了,简单来说,就是:解密 - 修改 - 重新加密 - 锁定文件(可选)。加密就是解密的逆向操作。
使用我新上线的 Bash 工具即可完成全过程,你可以选择自定义修改,还是使用我给你做好的预设。快去试试吧!