Compare commits

..

No commits in common. "master" and "0.3" have entirely different histories.
master ... 0.3

6 changed files with 120 additions and 30 deletions

View file

@ -1,15 +1,14 @@
# ZUGABE
**This is obsolete. Please use [finalhe by soarqin](https://github.com/soarqin/finalhe).**
This tool automates much of the installation of h-encore.
[![Project Status: Active The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/latest/active.svg)](http://www.repostatus.org/#active)
## 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.
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.
**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
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.
## Todo
- Mac/Linux compatibility
- Translations
- Mac/Linux Compatibilty
- Fix bugs (you tell me!)
## Thanks

Binary file not shown.

View file

@ -16,8 +16,17 @@ namespace h_encore_auto
{
InitializeComponent();
if (File.Exists(Ref.tempDir + "keepfile"))
{
Ref.areFilesKept = true;
Util.keepFilesCleanup();
}
else
{
Ref.areFilesKept = false;
if (Directory.Exists(Ref.tempDir))
Util.DeleteDirectory(Ref.tempDir);
}
InitTimer();
}
@ -55,6 +64,8 @@ namespace h_encore_auto
startInfoOut.FileName = "cmd.exe";
startInfoOut.WorkingDirectory = Ref.tempDir;
if (Ref.areFilesKept == false)
{
// 7ZIP Download and extraction
Util.dlFile(Ref.url7zr, "7zr.exe");
Util.dlFile(Ref.url7za, "7z-extra.7z");
@ -79,6 +90,7 @@ namespace h_encore_auto
File.WriteAllText(Ref.pathImportReg, text);
text = text.Replace("HKEY_CURRENT_USER/Software/codestation/qcma", @"HKEY_CURRENT_USER\Software\codestation\qcma");
File.WriteAllText(Ref.pathImportReg, text);
}
startInfo.Arguments = "/C " + Ref.path7z + " x " + Ref.pathPsvimg;
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);
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.UseShellExecute = false;
startInfoOut.Arguments = @"/C reg query HKEY_CURRENT_USER\Software\codestation\qcma & echo 0";

View file

@ -94,6 +94,11 @@ namespace h_encore_auto
if (Directory.Exists(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);
}
@ -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);
}
}
}

View file

@ -50,7 +50,7 @@ namespace h_encore_auto
currImg--;
imgFrame.Source = new BitmapImage(new Uri("/img/" + currImg + ".png", UriKind.Relative));
buttonFwd.IsEnabled = true;
textField.Text = currText[currImg - 1];
textField.Text = currText[currImg];
if (currImg == 1 || currImg == 15)
{

View file

@ -20,6 +20,31 @@ namespace h_encore_auto
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 isQcmaConfigFound = false;
@ -38,6 +63,7 @@ namespace h_encore_auto
public static readonly string pathBackupReg = tempDir + "backup.reg";
public static readonly string pathImportReg = tempDir + "qcma.reg";
public static readonly string pathQcmaRes = tempDir + "QcmaRes\\";
public static bool areFilesKept = false;
public static bool isRegModified = false;
}