Compare commits
No commits in common. "master" and "0.3" have entirely different histories.
6 changed files with 120 additions and 30 deletions
10
README.md
10
README.md
|
@ -1,15 +1,14 @@
|
||||||
# ZUGABE
|
# ZUGABE
|
||||||
|
|
||||||
**This is obsolete. Please use [finalhe by soarqin](https://github.com/soarqin/finalhe).**
|
|
||||||
|
|
||||||
This tool automates much of the installation of h-encore.
|
This tool automates much of the installation of h-encore.
|
||||||
|
|
||||||
|
[](http://www.repostatus.org/#active)
|
||||||
|
|
||||||
## About
|
## About
|
||||||
This tool automates the install process of thefl0w's h-encore exploit for PS Vita, at least everything that can be done on the PC.
|
This tool automates the install process of thefl0w's h-encore exploit for PS Vita, at least everything that can be done on the PC.
|
||||||
Since I can't code in C or C++, I was unable to use OpenCMA as a backend, so I used QCMA. It's automatically downloaded and does not require to be installed.
|
Since I can't code in C or C++, I was unable to use OpenCMA as a backend, so I used QCMA. It's automatically downloaded and does not require to be installed.
|
||||||
Configuration of QCMA is done via registry edits. The application also detects existing QCMA installations and restores the original settings after the exploit was installed.
|
Configuration of QCMA is done via registry edits. The application also detects existing QCMA installations and restores the original settings after the exploit was installed.
|
||||||
|
|
||||||
**Attention: This tool only supports connection of the PSVita using Wi-Fi, therefore it's currently only compatible with PSVita/PSTV on Firmware 3.68!**
|
**Attention: This tool only supports connection of the PSVita using Wi-Fi!**
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
Download from the releases section, extract it and run the executable.
|
Download from the releases section, extract it and run the executable.
|
||||||
|
@ -18,7 +17,8 @@ Download from the releases section, extract it and run the executable.
|
||||||
Build using Visual Studio 2017, this was tested. Other C# IDEs might work as well.
|
Build using Visual Studio 2017, this was tested. Other C# IDEs might work as well.
|
||||||
|
|
||||||
## Todo
|
## Todo
|
||||||
- Mac/Linux compatibility
|
- Translations
|
||||||
|
- Mac/Linux Compatibilty
|
||||||
- Fix bugs (you tell me!)
|
- Fix bugs (you tell me!)
|
||||||
|
|
||||||
## Thanks
|
## Thanks
|
||||||
|
|
Binary file not shown.
|
@ -16,8 +16,17 @@ namespace h_encore_auto
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
if (Directory.Exists(Ref.tempDir))
|
if (File.Exists(Ref.tempDir + "keepfile"))
|
||||||
Util.DeleteDirectory(Ref.tempDir);
|
{
|
||||||
|
Ref.areFilesKept = true;
|
||||||
|
Util.keepFilesCleanup();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Ref.areFilesKept = false;
|
||||||
|
if (Directory.Exists(Ref.tempDir))
|
||||||
|
Util.DeleteDirectory(Ref.tempDir);
|
||||||
|
}
|
||||||
|
|
||||||
InitTimer();
|
InitTimer();
|
||||||
}
|
}
|
||||||
|
@ -55,30 +64,33 @@ namespace h_encore_auto
|
||||||
startInfoOut.FileName = "cmd.exe";
|
startInfoOut.FileName = "cmd.exe";
|
||||||
startInfoOut.WorkingDirectory = Ref.tempDir;
|
startInfoOut.WorkingDirectory = Ref.tempDir;
|
||||||
|
|
||||||
// 7ZIP Download and extraction
|
if (Ref.areFilesKept == false)
|
||||||
Util.dlFile(Ref.url7zr, "7zr.exe");
|
{
|
||||||
Util.dlFile(Ref.url7za, "7z-extra.7z");
|
// 7ZIP Download and extraction
|
||||||
|
Util.dlFile(Ref.url7zr, "7zr.exe");
|
||||||
|
Util.dlFile(Ref.url7za, "7z-extra.7z");
|
||||||
|
|
||||||
startInfo.Arguments = "/C 7zr.exe x 7z-extra.7z";
|
startInfo.Arguments = "/C 7zr.exe x 7z-extra.7z";
|
||||||
process.StartInfo = startInfo;
|
process.StartInfo = startInfo;
|
||||||
process.Start();
|
process.Start();
|
||||||
process.WaitForExit();
|
process.WaitForExit();
|
||||||
|
|
||||||
//Rest of the tool downloads
|
//Rest of the tool downloads
|
||||||
Util.dlFile(Ref.urlPsvimg, "psvimgtools.zip");
|
Util.dlFile(Ref.urlPsvimg, "psvimgtools.zip");
|
||||||
Util.dlFile(Ref.urlPkg, "pkg2zip.zip");
|
Util.dlFile(Ref.urlPkg, "pkg2zip.zip");
|
||||||
Util.dlFile(Ref.urlEnc, "h-encore.zip");
|
Util.dlFile(Ref.urlEnc, "h-encore.zip");
|
||||||
Util.dlFile(Ref.urlEntry, "entryPoint.pkg");
|
Util.dlFile(Ref.urlEntry, "entryPoint.pkg");
|
||||||
Util.dlFile(Ref.urlQcma, "qcma.zip");
|
Util.dlFile(Ref.urlQcma, "qcma.zip");
|
||||||
Util.dlFile(Ref.urlReg, "qcma.reg");
|
Util.dlFile(Ref.urlReg, "qcma.reg");
|
||||||
|
|
||||||
string text = File.ReadAllText(Ref.pathImportReg);
|
string text = File.ReadAllText(Ref.pathImportReg);
|
||||||
text = text.Replace("REPLACE", Ref.pathQcmaRes);
|
text = text.Replace("REPLACE", Ref.pathQcmaRes);
|
||||||
File.WriteAllText(Ref.pathImportReg, text);
|
File.WriteAllText(Ref.pathImportReg, text);
|
||||||
text = text.Replace("\\", "/");
|
text = text.Replace("\\", "/");
|
||||||
File.WriteAllText(Ref.pathImportReg, text);
|
File.WriteAllText(Ref.pathImportReg, text);
|
||||||
text = text.Replace("HKEY_CURRENT_USER/Software/codestation/qcma", @"HKEY_CURRENT_USER\Software\codestation\qcma");
|
text = text.Replace("HKEY_CURRENT_USER/Software/codestation/qcma", @"HKEY_CURRENT_USER\Software\codestation\qcma");
|
||||||
File.WriteAllText(Ref.pathImportReg, text);
|
File.WriteAllText(Ref.pathImportReg, text);
|
||||||
|
}
|
||||||
|
|
||||||
startInfo.Arguments = "/C " + Ref.path7z + " x " + Ref.pathPsvimg;
|
startInfo.Arguments = "/C " + Ref.path7z + " x " + Ref.pathPsvimg;
|
||||||
process.StartInfo = startInfo;
|
process.StartInfo = startInfo;
|
||||||
|
@ -110,6 +122,20 @@ namespace h_encore_auto
|
||||||
Util.CopyDir(Ref.tempDir + "app\\PCSG90096\\", Ref.tempDir + "h-encore\\app\\ux0_temp_game_PCSG90096_app_PCSG90096\\",true);
|
Util.CopyDir(Ref.tempDir + "app\\PCSG90096\\", Ref.tempDir + "h-encore\\app\\ux0_temp_game_PCSG90096_app_PCSG90096\\",true);
|
||||||
File.Copy(Ref.tempDir + "app\\PCSG90096\\sce_sys\\package\\temp.bin", Ref.tempDir + @"h-encore\license\ux0_temp_game_PCSG90096_license_app_PCSG90096\6488b73b912a753a492e2714e9b38bc7.rif");
|
File.Copy(Ref.tempDir + "app\\PCSG90096\\sce_sys\\package\\temp.bin", Ref.tempDir + @"h-encore\license\ux0_temp_game_PCSG90096_license_app_PCSG90096\6488b73b912a753a492e2714e9b38bc7.rif");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string path = Ref.tempDir + "app\\PCSG90096\\resource\\";
|
||||||
|
foreach (string k in Ref.trims)
|
||||||
|
{
|
||||||
|
Util.DeleteDirectory(path + k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Exception: " + ex.Message + "\nYou should tell the developer in a github issue. Include a screenshot if possible!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
startInfoOut.RedirectStandardOutput = true;
|
startInfoOut.RedirectStandardOutput = true;
|
||||||
startInfoOut.UseShellExecute = false;
|
startInfoOut.UseShellExecute = false;
|
||||||
startInfoOut.Arguments = @"/C reg query HKEY_CURRENT_USER\Software\codestation\qcma & echo 0";
|
startInfoOut.Arguments = @"/C reg query HKEY_CURRENT_USER\Software\codestation\qcma & echo 0";
|
||||||
|
|
|
@ -94,7 +94,12 @@ namespace h_encore_auto
|
||||||
|
|
||||||
if (Directory.Exists(Ref.tempDir))
|
if (Directory.Exists(Ref.tempDir))
|
||||||
{
|
{
|
||||||
DeleteDirectory(Ref.tempDir);
|
if (MessageBox.Show("Do you want to keep the downloaded files for future use?\nPressing no will wipe any leftover files of this application off your computer.", "Keep Files?", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
|
||||||
|
{
|
||||||
|
keepFilesCleanup();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
DeleteDirectory(Ref.tempDir);
|
||||||
}
|
}
|
||||||
|
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
|
@ -150,5 +155,38 @@ namespace h_encore_auto
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
public static void keepFilesCleanup()
|
||||||
|
{
|
||||||
|
if (!File.Exists(Ref.tempDir + "keepfile"))
|
||||||
|
{
|
||||||
|
File.Create(Ref.tempDir + "keepfile");
|
||||||
|
}
|
||||||
|
|
||||||
|
string backupTemp = Ref.tempDir + "keepfiles\\";
|
||||||
|
Directory.CreateDirectory(backupTemp);
|
||||||
|
|
||||||
|
foreach (string download in Ref.downloads)
|
||||||
|
{
|
||||||
|
File.Copy(Ref.tempDir + download, backupTemp + download);
|
||||||
|
}
|
||||||
|
|
||||||
|
Util.DeleteDirectory(Ref.tempDir + "\\app");
|
||||||
|
Util.DeleteDirectory(Ref.tempDir + "\\Far");
|
||||||
|
Util.DeleteDirectory(Ref.tempDir + "\\h-encore");
|
||||||
|
Util.DeleteDirectory(Ref.tempDir + "\\Qcma");
|
||||||
|
Util.DeleteDirectory(Ref.tempDir + "\\QcmaRes");
|
||||||
|
Util.DeleteDirectory(Ref.tempDir + "\\x64");
|
||||||
|
|
||||||
|
foreach (string file in Directory.GetFiles(Ref.tempDir))
|
||||||
|
{
|
||||||
|
File.Delete(file);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (string download in Ref.downloads)
|
||||||
|
{
|
||||||
|
File.Copy(backupTemp + download, Ref.tempDir + download);
|
||||||
|
}
|
||||||
|
Util.DeleteDirectory(backupTemp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -50,7 +50,7 @@ namespace h_encore_auto
|
||||||
currImg--;
|
currImg--;
|
||||||
imgFrame.Source = new BitmapImage(new Uri("/img/" + currImg + ".png", UriKind.Relative));
|
imgFrame.Source = new BitmapImage(new Uri("/img/" + currImg + ".png", UriKind.Relative));
|
||||||
buttonFwd.IsEnabled = true;
|
buttonFwd.IsEnabled = true;
|
||||||
textField.Text = currText[currImg - 1];
|
textField.Text = currText[currImg];
|
||||||
|
|
||||||
if (currImg == 1 || currImg == 15)
|
if (currImg == 1 || currImg == 15)
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,6 +20,31 @@ namespace h_encore_auto
|
||||||
|
|
||||||
public static readonly string tempDir = Path.GetTempPath() + @"encore_temp\";
|
public static readonly string tempDir = Path.GetTempPath() + @"encore_temp\";
|
||||||
|
|
||||||
|
public static readonly string[] trims = new string[] {
|
||||||
|
"movie\\",
|
||||||
|
"image\\bg\\",
|
||||||
|
"image\\ev\\",
|
||||||
|
"image\\icon\\",
|
||||||
|
"image\\stitle\\",
|
||||||
|
"image\\tachie\\",
|
||||||
|
"sound\\bgm\\",
|
||||||
|
"sound\\se\\",
|
||||||
|
"sound\\sec\\",
|
||||||
|
"sound\\voice\\",
|
||||||
|
"text\\01\\"
|
||||||
|
};
|
||||||
|
|
||||||
|
public static readonly string[] downloads = new string[] {
|
||||||
|
"7zr.exe",
|
||||||
|
"7z-extra.7z",
|
||||||
|
"entryPoint.pkg",
|
||||||
|
"h-encore.zip",
|
||||||
|
"pkg2zip.zip",
|
||||||
|
"psvimgtools.zip",
|
||||||
|
"qcma.reg",
|
||||||
|
"qcma.zip"
|
||||||
|
};
|
||||||
|
|
||||||
public static bool isSecondGuide = false;
|
public static bool isSecondGuide = false;
|
||||||
|
|
||||||
public static bool isQcmaConfigFound = false;
|
public static bool isQcmaConfigFound = false;
|
||||||
|
@ -38,6 +63,7 @@ namespace h_encore_auto
|
||||||
public static readonly string pathBackupReg = tempDir + "backup.reg";
|
public static readonly string pathBackupReg = tempDir + "backup.reg";
|
||||||
public static readonly string pathImportReg = tempDir + "qcma.reg";
|
public static readonly string pathImportReg = tempDir + "qcma.reg";
|
||||||
public static readonly string pathQcmaRes = tempDir + "QcmaRes\\";
|
public static readonly string pathQcmaRes = tempDir + "QcmaRes\\";
|
||||||
|
public static bool areFilesKept = false;
|
||||||
|
|
||||||
public static bool isRegModified = false;
|
public static bool isRegModified = false;
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue