diff --git a/IL/dump.sln b/IL/dump.sln new file mode 100644 index 0000000..b92ecf5 --- /dev/null +++ b/IL/dump.sln @@ -0,0 +1,20 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# Visual Studio 2010 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "dump", "dump\dump.csproj", "{1E7E2359-710F-4B80-921D-7E2E185242D2}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1E7E2359-710F-4B80-921D-7E2E185242D2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1E7E2359-710F-4B80-921D-7E2E185242D2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1E7E2359-710F-4B80-921D-7E2E185242D2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1E7E2359-710F-4B80-921D-7E2E185242D2}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(MonoDevelopProperties) = preSolution + StartupItem = dump\dump.csproj + EndGlobalSection +EndGlobal diff --git a/IL/dump.userprefs b/IL/dump.userprefs new file mode 100644 index 0000000..4bc2fe2 --- /dev/null +++ b/IL/dump.userprefs @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/IL/dump/AppMain.cs b/IL/dump/AppMain.cs new file mode 100644 index 0000000..dd24d57 --- /dev/null +++ b/IL/dump/AppMain.cs @@ -0,0 +1,84 @@ +using System; + +using Sce.PlayStation.Core; +using Sce.PlayStation.Core.Environment; +using Sce.PlayStation.Core.Graphics; +using Sce.PlayStation.Core.Input; + +using System.IO; + +namespace dump +{ + public class AppMain + { + private static GraphicsContext graphics; + + public static void Main (string[] args) + { + + + Initialize (); + + + String[] Dirs = Directory.GetDirectories("/Application","*",SearchOption.AllDirectories); + String[] Files = Directory.GetFiles("/Application","*",SearchOption.AllDirectories); + + foreach(String dir in Dirs) + { + try{ + Directory.CreateDirectory(dir.Replace("Application","Documents/Application")); + } + catch(Exception) + { + } + + } + + foreach(String file in Files) + { + SystemEvents.CheckEvents(); + Update(); + + // Clear the screen + graphics.SetClearColor (1.0f, 0.0f, 0.0f, 0.0f); + graphics.Clear (); + + // Present the screen + graphics.SwapBuffers (); + Byte[] ByteArray = File.ReadAllBytes(file); + File.WriteAllBytes(file.Replace("Application","Documents/Application"),ByteArray); + + + } + while(true) + { + SystemEvents.CheckEvents(); + Update(); + Render(); + } + + } + + public static void Initialize () + { + // Set up the graphics system + graphics = new GraphicsContext (); + } + + public static void Update () + { + // Query gamepad for current state + var gamePadData = GamePad.GetData (0); + } + + public static void Render () + { + // Clear the screen + graphics.SetClearColor (0.0f, 1.0f, 0.0f, 0.0f); + graphics.Clear (); + + // Present the screen + graphics.SwapBuffers (); + } + } +} diff --git a/IL/dump/app.xml b/IL/dump/app.xml new file mode 100644 index 0000000..9eaab35 --- /dev/null +++ b/IL/dump/app.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/IL/dump/dump.csproj b/IL/dump/dump.csproj new file mode 100644 index 0000000..b9e4759 --- /dev/null +++ b/IL/dump/dump.csproj @@ -0,0 +1,45 @@ + + + + Debug + AnyCPU + 10.0.0 + 2.0 + {1E7E2359-710F-4B80-921D-7E2E185242D2} + {69878862-DA7D-4DC6-B0A1-50D8FAB4242F};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + Exe + dump + dump + + + true + full + false + bin\Debug + DEBUG; + prompt + 4 + false + + + none + false + bin\Release + prompt + 4 + false + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/IL/dump/dump.pidb b/IL/dump/dump.pidb new file mode 100644 index 0000000..ad323d3 Binary files /dev/null and b/IL/dump/dump.pidb differ diff --git a/Native/CMakeLists.txt b/Native/CMakeLists.txt new file mode 100644 index 0000000..7f8584d --- /dev/null +++ b/Native/CMakeLists.txt @@ -0,0 +1,47 @@ +cmake_minimum_required(VERSION 2.8) + +if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) + if(DEFINED ENV{VITASDK}) + set(CMAKE_TOOLCHAIN_FILE "$ENV{VITASDK}/share/vita.toolchain.cmake" CACHE PATH "toolchain file") + else() + message(FATAL_ERROR "Please define VITASDK to point to your SDK path!") + endif() +endif() + +project(FuckPSSE) +include("${VITASDK}/share/vita.cmake" REQUIRED) + +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-q -Wall -O3 -std=gnu99") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fno-rtti -fno-exceptions") + +include_directories( +) + +link_directories( + ${CMAKE_CURRENT_BINARY_DIR} +) + +if (NOT ${RELEASE}) + add_definitions(-DENABLE_LOGGING) +endif() + +add_executable(FuckPSSE + FuckPSSE.c +) + +target_link_libraries(FuckPSSE + taihen_stub + SceLibKernel_stub + SceIofilemgr_stub + SceAppMgr_stub + SceLibc_stub + SceProcessmgr_stub +) + +set_target_properties(FuckPSSE + PROPERTIES LINK_FLAGS "-nostdlib" +) + +vita_create_self(FuckPSSE.suprx FuckPSSE + CONFIG ${CMAKE_SOURCE_DIR}/FuckPSSE.yml +) \ No newline at end of file diff --git a/Native/FuckPSSE.c b/Native/FuckPSSE.c new file mode 100644 index 0000000..ec5fb8a --- /dev/null +++ b/Native/FuckPSSE.c @@ -0,0 +1,169 @@ + +#include +#include +#include +#include + + + +SceUID sceKernelGetStdout(); + +static SceUID LoadModuleHook; +static tai_hook_ref_t LoadModuleHook_ref; + +static SceUID cOpenHook; +static tai_hook_ref_t cOpenHook_ref; + +static SceUID cReadHook; +static tai_hook_ref_t cReadHook_ref; + +static SceUID OpenHook; +static tai_hook_ref_t OpenHook_ref; + +static char LetsJustAttackILL[0x1200] = {0x4D,0x5A,0x90,0x00,0x03,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0xFF,0xFF,0x00,0x00,0xB8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x0E,0x1F,0xBA,0x0E,0x00,0xB4,0x09,0xCD,0x21,0xB8,0x01,0x4C,0xCD,0x21,0x54,0x68,0x69,0x73,0x20,0x70,0x72,0x6F,0x67,0x72,0x61,0x6D,0x20,0x63,0x61,0x6E,0x6E,0x6F,0x74,0x20,0x62,0x65,0x20,0x72,0x75,0x6E,0x20,0x69,0x6E,0x20,0x44,0x4F,0x53,0x20,0x6D,0x6F,0x64,0x65,0x2E,0x0D,0x0D,0x0A,0x24,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x45,0x00,0x00,0x4C,0x01,0x03,0x00,0xB4,0xEF,0xC1,0x5B,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x00,0x02,0x01,0x0B,0x01,0x0B,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x8E,0x27,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x20,0x00,0x00,0x00,0x02,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x40,0x85,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x38,0x27,0x00,0x00,0x53,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0xC8,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x20,0x00,0x00,0x48,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x2E,0x74,0x65,0x78,0x74,0x00,0x00,0x00,0x94,0x07,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x60,0x2E,0x72,0x73,0x72,0x63,0x00,0x00,0x00,0xC8,0x04,0x00,0x00,0x00,0x40,0x00,0x00,0x00,0x06,0x00,0x00,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x40,0x2E,0x72,0x65,0x6C,0x6F,0x63,0x00,0x00,0x0C,0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00,0x02,0x00,0x05,0x00,0xE4,0x21,0x00,0x00,0x54,0x05,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1B,0x30,0x05,0x00,0x0F,0x01,0x00,0x00,0x01,0x00,0x00,0x11,0x00,0x28,0x02,0x00,0x00,0x06,0x00,0x72,0x01,0x00,0x00,0x70,0x72,0x1B,0x00,0x00,0x70,0x17,0x28,0x03,0x00,0x00,0x0A,0x0A,0x72,0x01,0x00,0x00,0x70,0x72,0x1B,0x00,0x00,0x70,0x17,0x28,0x04,0x00,0x00,0x0A,0x0B,0x00,0x06,0x13,0x05,0x16,0x13,0x06,0x2B,0x2E,0x11,0x05,0x11,0x06,0x9A,0x0C,0x00,0x00,0x08,0x72,0x1F,0x00,0x00,0x70,0x72,0x37,0x00,0x00,0x70,0x6F,0x05,0x00,0x00,0x0A,0x28,0x06,0x00,0x00,0x0A,0x26,0x00,0xDE,0x05,0x26,0x00,0x00,0xDE,0x00,0x00,0x00,0x11,0x06,0x17,0x58,0x13,0x06,0x11,0x06,0x11,0x05,0x8E,0x69,0xFE,0x04,0x13,0x07,0x11,0x07,0x2D,0xC4,0x00,0x07,0x13,0x05,0x16,0x13,0x06,0x2B,0x6F,0x11,0x05,0x11,0x06,0x9A,0x0D,0x00,0x28,0x07,0x00,0x00,0x0A,0x00,0x28,0x03,0x00,0x00,0x06,0x00,0x7E,0x01,0x00,0x00,0x04,0x22,0x00,0x00,0x80,0x3F,0x22,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x6F,0x08,0x00,0x00,0x0A,0x00,0x7E,0x01,0x00,0x00,0x04,0x6F,0x09,0x00,0x00,0x0A,0x00,0x7E,0x01,0x00,0x00,0x04,0x6F,0x0A,0x00,0x00,0x0A,0x00,0x09,0x28,0x0B,0x00,0x00,0x0A,0x13,0x04,0x09,0x72,0x1F,0x00,0x00,0x70,0x72,0x37,0x00,0x00,0x70,0x6F,0x05,0x00,0x00,0x0A,0x11,0x04,0x28,0x0C,0x00,0x00,0x0A,0x00,0x00,0x11,0x06,0x17,0x58,0x13,0x06,0x11,0x06,0x11,0x05,0x8E,0x69,0xFE,0x04,0x13,0x07,0x11,0x07,0x2D,0x83,0x2B,0x14,0x00,0x28,0x07,0x00,0x00,0x0A,0x00,0x28,0x03,0x00,0x00,0x06,0x00,0x28,0x04,0x00,0x00,0x06,0x00,0x00,0x17,0x13,0x07,0x2B,0xE7,0x00,0x01,0x10,0x00,0x00,0x00,0x00,0x39,0x00,0x1A,0x53,0x00,0x05,0x0B,0x00,0x00,0x01,0x32,0x00,0x73,0x0D,0x00,0x00,0x0A,0x80,0x01,0x00,0x00,0x04,0x2A,0x00,0x00,0x00,0x13,0x30,0x01,0x00,0x09,0x00,0x00,0x00,0x02,0x00,0x00,0x11,0x00,0x16,0x28,0x0E,0x00,0x00,0x0A,0x0A,0x2A,0xDE,0x00,0x7E,0x01,0x00,0x00,0x04,0x22,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x80,0x3F,0x22,0x00,0x00,0x00,0x00,0x22,0x00,0x00,0x00,0x00,0x6F,0x08,0x00,0x00,0x0A,0x00,0x7E,0x01,0x00,0x00,0x04,0x6F,0x09,0x00,0x00,0x0A,0x00,0x7E,0x01,0x00,0x00,0x04,0x6F,0x0A,0x00,0x00,0x0A,0x00,0x2A,0x1E,0x02,0x28,0x0F,0x00,0x00,0x0A,0x2A,0x00,0x00,0x00,0x42,0x53,0x4A,0x42,0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x0C,0x00,0x00,0x00,0x76,0x32,0x2E,0x30,0x2E,0x35,0x30,0x37,0x32,0x37,0x00,0x00,0x00,0x00,0x05,0x00,0x6C,0x00,0x00,0x00,0xB4,0x01,0x00,0x00,0x23,0x7E,0x00,0x00,0x20,0x02,0x00,0x00,0x30,0x02,0x00,0x00,0x23,0x53,0x74,0x72,0x69,0x6E,0x67,0x73,0x00,0x00,0x00,0x00,0x50,0x04,0x00,0x00,0x64,0x00,0x00,0x00,0x23,0x55,0x53,0x00,0xB4,0x04,0x00,0x00,0x10,0x00,0x00,0x00,0x23,0x47,0x55,0x49,0x44,0x00,0x00,0x00,0xC4,0x04,0x00,0x00,0x90,0x00,0x00,0x00,0x23,0x42,0x6C,0x6F,0x62,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x01,0x57,0x15,0x02,0x00,0x09,0x00,0x00,0x00,0x00,0xFA,0x25,0x33,0x00,0x16,0x00,0x00,0x01,0x00,0x00,0x00,0x0D,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x2F,0x00,0x28,0x00,0x0A,0x00,0x69,0x00,0x4B,0x00,0x06,0x00,0xCB,0x00,0xAB,0x00,0x06,0x00,0xEB,0x00,0xAB,0x00,0x06,0x00,0x17,0x01,0x0D,0x01,0x06,0x00,0x21,0x01,0x0D,0x01,0x06,0x00,0x46,0x01,0x28,0x00,0x06,0x00,0x55,0x01,0x0D,0x01,0x0A,0x00,0x94,0x01,0x73,0x01,0x06,0x00,0xCD,0x01,0x0D,0x01,0x06,0x00,0xED,0x01,0x28,0x00,0x0A,0x00,0x12,0x02,0xF7,0x01,0x0A,0x00,0x1A,0x02,0xF7,0x01,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x10,0x00,0x12,0x00,0x1A,0x00,0x05,0x00,0x01,0x00,0x01,0x00,0x11,0x00,0x79,0x00,0x0A,0x00,0x50,0x20,0x00,0x00,0x00,0x00,0x96,0x00,0x82,0x00,0x0E,0x00,0x01,0x00,0x7C,0x21,0x00,0x00,0x00,0x00,0x96,0x00,0x87,0x00,0x14,0x00,0x02,0x00,0x8C,0x21,0x00,0x00,0x00,0x00,0x96,0x00,0x92,0x00,0x14,0x00,0x02,0x00,0xA1,0x21,0x00,0x00,0x00,0x00,0x96,0x00,0x99,0x00,0x14,0x00,0x02,0x00,0xD9,0x21,0x00,0x00,0x00,0x00,0x86,0x18,0xA0,0x00,0x18,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0xA6,0x00,0x19,0x00,0xA0,0x00,0x1C,0x00,0x21,0x00,0xA0,0x00,0x18,0x00,0x29,0x00,0x2E,0x01,0x21,0x00,0x29,0x00,0x3D,0x01,0x21,0x00,0x39,0x00,0x4D,0x01,0x2A,0x00,0x29,0x00,0x63,0x01,0x30,0x00,0x49,0x00,0xA1,0x01,0x14,0x00,0x11,0x00,0xAD,0x01,0x36,0x00,0x11,0x00,0xBB,0x01,0x18,0x00,0x11,0x00,0xC1,0x01,0x18,0x00,0x51,0x00,0xD2,0x01,0x3E,0x00,0x51,0x00,0xDF,0x01,0x44,0x00,0x11,0x00,0xA0,0x00,0x18,0x00,0x61,0x00,0x26,0x02,0x5A,0x00,0x09,0x00,0xA0,0x00,0x18,0x00,0x2E,0x00,0x0B,0x00,0x65,0x00,0x2E,0x00,0x13,0x00,0x6E,0x00,0x4B,0x00,0x60,0x00,0x04,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x09,0x01,0x00,0x00,0x02,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x36,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x4D,0x6F,0x64,0x75,0x6C,0x65,0x3E,0x00,0x61,0x70,0x70,0x2E,0x65,0x78,0x65,0x00,0x41,0x70,0x70,0x4D,0x61,0x69,0x6E,0x00,0x64,0x75,0x6D,0x70,0x00,0x6D,0x73,0x63,0x6F,0x72,0x6C,0x69,0x62,0x00,0x53,0x79,0x73,0x74,0x65,0x6D,0x00,0x4F,0x62,0x6A,0x65,0x63,0x74,0x00,0x53,0x63,0x65,0x2E,0x50,0x6C,0x61,0x79,0x53,0x74,0x61,0x74,0x69,0x6F,0x6E,0x2E,0x43,0x6F,0x72,0x65,0x00,0x53,0x63,0x65,0x2E,0x50,0x6C,0x61,0x79,0x53,0x74,0x61,0x74,0x69,0x6F,0x6E,0x2E,0x43,0x6F,0x72,0x65,0x2E,0x47,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x00,0x47,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x43,0x6F,0x6E,0x74,0x65,0x78,0x74,0x00,0x67,0x72,0x61,0x70,0x68,0x69,0x63,0x73,0x00,0x4D,0x61,0x69,0x6E,0x00,0x49,0x6E,0x69,0x74,0x69,0x61,0x6C,0x69,0x7A,0x65,0x00,0x55,0x70,0x64,0x61,0x74,0x65,0x00,0x52,0x65,0x6E,0x64,0x65,0x72,0x00,0x2E,0x63,0x74,0x6F,0x72,0x00,0x61,0x72,0x67,0x73,0x00,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x52,0x75,0x6E,0x74,0x69,0x6D,0x65,0x2E,0x43,0x6F,0x6D,0x70,0x69,0x6C,0x65,0x72,0x53,0x65,0x72,0x76,0x69,0x63,0x65,0x73,0x00,0x43,0x6F,0x6D,0x70,0x69,0x6C,0x61,0x74,0x69,0x6F,0x6E,0x52,0x65,0x6C,0x61,0x78,0x61,0x74,0x69,0x6F,0x6E,0x73,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x00,0x52,0x75,0x6E,0x74,0x69,0x6D,0x65,0x43,0x6F,0x6D,0x70,0x61,0x74,0x69,0x62,0x69,0x6C,0x69,0x74,0x79,0x41,0x74,0x74,0x72,0x69,0x62,0x75,0x74,0x65,0x00,0x61,0x70,0x70,0x00,0x53,0x79,0x73,0x74,0x65,0x6D,0x2E,0x49,0x4F,0x00,0x44,0x69,0x72,0x65,0x63,0x74,0x6F,0x72,0x79,0x00,0x53,0x65,0x61,0x72,0x63,0x68,0x4F,0x70,0x74,0x69,0x6F,0x6E,0x00,0x47,0x65,0x74,0x44,0x69,0x72,0x65,0x63,0x74,0x6F,0x72,0x69,0x65,0x73,0x00,0x47,0x65,0x74,0x46,0x69,0x6C,0x65,0x73,0x00,0x53,0x74,0x72,0x69,0x6E,0x67,0x00,0x52,0x65,0x70,0x6C,0x61,0x63,0x65,0x00,0x44,0x69,0x72,0x65,0x63,0x74,0x6F,0x72,0x79,0x49,0x6E,0x66,0x6F,0x00,0x43,0x72,0x65,0x61,0x74,0x65,0x44,0x69,0x72,0x65,0x63,0x74,0x6F,0x72,0x79,0x00,0x53,0x63,0x65,0x2E,0x50,0x6C,0x61,0x79,0x53,0x74,0x61,0x74,0x69,0x6F,0x6E,0x2E,0x43,0x6F,0x72,0x65,0x2E,0x45,0x6E,0x76,0x69,0x72,0x6F,0x6E,0x6D,0x65,0x6E,0x74,0x00,0x53,0x79,0x73,0x74,0x65,0x6D,0x45,0x76,0x65,0x6E,0x74,0x73,0x00,0x43,0x68,0x65,0x63,0x6B,0x45,0x76,0x65,0x6E,0x74,0x73,0x00,0x53,0x65,0x74,0x43,0x6C,0x65,0x61,0x72,0x43,0x6F,0x6C,0x6F,0x72,0x00,0x43,0x6C,0x65,0x61,0x72,0x00,0x53,0x77,0x61,0x70,0x42,0x75,0x66,0x66,0x65,0x72,0x73,0x00,0x46,0x69,0x6C,0x65,0x00,0x52,0x65,0x61,0x64,0x41,0x6C,0x6C,0x42,0x79,0x74,0x65,0x73,0x00,0x57,0x72,0x69,0x74,0x65,0x41,0x6C,0x6C,0x42,0x79,0x74,0x65,0x73,0x00,0x45,0x78,0x63,0x65,0x70,0x74,0x69,0x6F,0x6E,0x00,0x53,0x63,0x65,0x2E,0x50,0x6C,0x61,0x79,0x53,0x74,0x61,0x74,0x69,0x6F,0x6E,0x2E,0x43,0x6F,0x72,0x65,0x2E,0x49,0x6E,0x70,0x75,0x74,0x00,0x47,0x61,0x6D,0x65,0x50,0x61,0x64,0x00,0x47,0x61,0x6D,0x65,0x50,0x61,0x64,0x44,0x61,0x74,0x61,0x00,0x47,0x65,0x74,0x44,0x61,0x74,0x61,0x00,0x00,0x00,0x00,0x19,0x2F,0x00,0x41,0x00,0x70,0x00,0x70,0x00,0x6C,0x00,0x69,0x00,0x63,0x00,0x61,0x00,0x74,0x00,0x69,0x00,0x6F,0x00,0x6E,0x00,0x00,0x03,0x2A,0x00,0x00,0x17,0x41,0x00,0x70,0x00,0x70,0x00,0x6C,0x00,0x69,0x00,0x63,0x00,0x61,0x00,0x74,0x00,0x69,0x00,0x6F,0x00,0x6E,0x00,0x00,0x2B,0x44,0x00,0x6F,0x00,0x63,0x00,0x75,0x00,0x6D,0x00,0x65,0x00,0x6E,0x00,0x74,0x00,0x73,0x00,0x2F,0x00,0x41,0x00,0x70,0x00,0x70,0x00,0x6C,0x00,0x69,0x00,0x63,0x00,0x61,0x00,0x74,0x00,0x69,0x00,0x6F,0x00,0x6E,0x00,0x00,0x00,0xF7,0x6B,0x51,0xB7,0x1D,0xBC,0x44,0x48,0xB7,0x05,0x01,0x74,0xF7,0x2B,0x35,0x8B,0x00,0x08,0x79,0x43,0x9F,0xFC,0x30,0x8A,0xA6,0xA0,0x03,0x06,0x12,0x09,0x05,0x00,0x01,0x01,0x1D,0x0E,0x03,0x00,0x00,0x01,0x03,0x20,0x00,0x01,0x04,0x20,0x01,0x01,0x08,0x08,0x00,0x03,0x1D,0x0E,0x0E,0x0E,0x11,0x19,0x05,0x20,0x02,0x0E,0x0E,0x0E,0x05,0x00,0x01,0x12,0x21,0x0E,0x07,0x20,0x04,0x01,0x0C,0x0C,0x0C,0x0C,0x05,0x00,0x01,0x1D,0x05,0x0E,0x06,0x00,0x02,0x01,0x0E,0x1D,0x05,0x0E,0x07,0x08,0x1D,0x0E,0x1D,0x0E,0x0E,0x0E,0x1D,0x05,0x1D,0x0E,0x08,0x02,0x05,0x00,0x01,0x11,0x35,0x08,0x04,0x07,0x01,0x11,0x35,0x08,0x01,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x1E,0x01,0x00,0x01,0x00,0x54,0x02,0x16,0x57,0x72,0x61,0x70,0x4E,0x6F,0x6E,0x45,0x78,0x63,0x65,0x70,0x74,0x69,0x6F,0x6E,0x54,0x68,0x72,0x6F,0x77,0x73,0x01,0x00,0x00,0x00,0x60,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0x27,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x70,0x27,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x5F,0x43,0x6F,0x72,0x45,0x78,0x65,0x4D,0x61,0x69,0x6E,0x00,0x6D,0x73,0x63,0x6F,0x72,0x65,0x65,0x2E,0x64,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00,0xFF,0x25,0x00,0x20,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x10,0x00,0x00,0x00,0x20,0x00,0x00,0x80,0x18,0x00,0x00,0x00,0x38,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x50,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,0x68,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x90,0x00,0x00,0x00,0xA0,0x40,0x00,0x00,0x34,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xD8,0x42,0x00,0x00,0xEA,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x34,0x02,0x34,0x00,0x00,0x00,0x56,0x00,0x53,0x00,0x5F,0x00,0x56,0x00,0x45,0x00,0x52,0x00,0x53,0x00,0x49,0x00,0x4F,0x00,0x4E,0x00,0x5F,0x00,0x49,0x00,0x4E,0x00,0x46,0x00,0x4F,0x00,0x00,0x00,0x00,0x00,0xBD,0x04,0xEF,0xFE,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x44,0x00,0x00,0x00,0x01,0x00,0x56,0x00,0x61,0x00,0x72,0x00,0x46,0x00,0x69,0x00,0x6C,0x00,0x65,0x00,0x49,0x00,0x6E,0x00,0x66,0x00,0x6F,0x00,0x00,0x00,0x00,0x00,0x24,0x00,0x04,0x00,0x00,0x00,0x54,0x00,0x72,0x00,0x61,0x00,0x6E,0x00,0x73,0x00,0x6C,0x00,0x61,0x00,0x74,0x00,0x69,0x00,0x6F,0x00,0x6E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xB0,0x04,0x94,0x01,0x00,0x00,0x01,0x00,0x53,0x00,0x74,0x00,0x72,0x00,0x69,0x00,0x6E,0x00,0x67,0x00,0x46,0x00,0x69,0x00,0x6C,0x00,0x65,0x00,0x49,0x00,0x6E,0x00,0x66,0x00,0x6F,0x00,0x00,0x00,0x70,0x01,0x00,0x00,0x01,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x30,0x00,0x34,0x00,0x62,0x00,0x30,0x00,0x00,0x00,0x2C,0x00,0x02,0x00,0x01,0x00,0x46,0x00,0x69,0x00,0x6C,0x00,0x65,0x00,0x44,0x00,0x65,0x00,0x73,0x00,0x63,0x00,0x72,0x00,0x69,0x00,0x70,0x00,0x74,0x00,0x69,0x00,0x6F,0x00,0x6E,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x30,0x00,0x08,0x00,0x01,0x00,0x46,0x00,0x69,0x00,0x6C,0x00,0x65,0x00,0x56,0x00,0x65,0x00,0x72,0x00,0x73,0x00,0x69,0x00,0x6F,0x00,0x6E,0x00,0x00,0x00,0x00,0x00,0x30,0x00,0x2E,0x00,0x30,0x00,0x2E,0x00,0x30,0x00,0x2E,0x00,0x30,0x00,0x00,0x00,0x30,0x00,0x08,0x00,0x01,0x00,0x49,0x00,0x6E,0x00,0x74,0x00,0x65,0x00,0x72,0x00,0x6E,0x00,0x61,0x00,0x6C,0x00,0x4E,0x00,0x61,0x00,0x6D,0x00,0x65,0x00,0x00,0x00,0x61,0x00,0x70,0x00,0x70,0x00,0x2E,0x00,0x65,0x00,0x78,0x00,0x65,0x00,0x00,0x00,0x28,0x00,0x02,0x00,0x01,0x00,0x4C,0x00,0x65,0x00,0x67,0x00,0x61,0x00,0x6C,0x00,0x43,0x00,0x6F,0x00,0x70,0x00,0x79,0x00,0x72,0x00,0x69,0x00,0x67,0x00,0x68,0x00,0x74,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x38,0x00,0x08,0x00,0x01,0x00,0x4F,0x00,0x72,0x00,0x69,0x00,0x67,0x00,0x69,0x00,0x6E,0x00,0x61,0x00,0x6C,0x00,0x46,0x00,0x69,0x00,0x6C,0x00,0x65,0x00,0x6E,0x00,0x61,0x00,0x6D,0x00,0x65,0x00,0x00,0x00,0x61,0x00,0x70,0x00,0x70,0x00,0x2E,0x00,0x65,0x00,0x78,0x00,0x65,0x00,0x00,0x00,0x34,0x00,0x08,0x00,0x01,0x00,0x50,0x00,0x72,0x00,0x6F,0x00,0x64,0x00,0x75,0x00,0x63,0x00,0x74,0x00,0x56,0x00,0x65,0x00,0x72,0x00,0x73,0x00,0x69,0x00,0x6F,0x00,0x6E,0x00,0x00,0x00,0x30,0x00,0x2E,0x00,0x30,0x00,0x2E,0x00,0x30,0x00,0x2E,0x00,0x30,0x00,0x00,0x00,0x38,0x00,0x08,0x00,0x01,0x00,0x41,0x00,0x73,0x00,0x73,0x00,0x65,0x00,0x6D,0x00,0x62,0x00,0x6C,0x00,0x79,0x00,0x20,0x00,0x56,0x00,0x65,0x00,0x72,0x00,0x73,0x00,0x69,0x00,0x6F,0x00,0x6E,0x00,0x00,0x00,0x30,0x00,0x2E,0x00,0x30,0x00,0x2E,0x00,0x30,0x00,0x2E,0x00,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xEF,0xBB,0xBF,0x3C,0x3F,0x78,0x6D,0x6C,0x20,0x76,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x22,0x31,0x2E,0x30,0x22,0x20,0x65,0x6E,0x63,0x6F,0x64,0x69,0x6E,0x67,0x3D,0x22,0x55,0x54,0x46,0x2D,0x38,0x22,0x20,0x73,0x74,0x61,0x6E,0x64,0x61,0x6C,0x6F,0x6E,0x65,0x3D,0x22,0x79,0x65,0x73,0x22,0x3F,0x3E,0x0D,0x0A,0x3C,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x20,0x78,0x6D,0x6C,0x6E,0x73,0x3D,0x22,0x75,0x72,0x6E,0x3A,0x73,0x63,0x68,0x65,0x6D,0x61,0x73,0x2D,0x6D,0x69,0x63,0x72,0x6F,0x73,0x6F,0x66,0x74,0x2D,0x63,0x6F,0x6D,0x3A,0x61,0x73,0x6D,0x2E,0x76,0x31,0x22,0x20,0x6D,0x61,0x6E,0x69,0x66,0x65,0x73,0x74,0x56,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x22,0x31,0x2E,0x30,0x22,0x3E,0x0D,0x0A,0x20,0x20,0x3C,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x49,0x64,0x65,0x6E,0x74,0x69,0x74,0x79,0x20,0x76,0x65,0x72,0x73,0x69,0x6F,0x6E,0x3D,0x22,0x31,0x2E,0x30,0x2E,0x30,0x2E,0x30,0x22,0x20,0x6E,0x61,0x6D,0x65,0x3D,0x22,0x4D,0x79,0x41,0x70,0x70,0x6C,0x69,0x63,0x61,0x74,0x69,0x6F,0x6E,0x2E,0x61,0x70,0x70,0x22,0x2F,0x3E,0x0D,0x0A,0x20,0x20,0x3C,0x74,0x72,0x75,0x73,0x74,0x49,0x6E,0x66,0x6F,0x20,0x78,0x6D,0x6C,0x6E,0x73,0x3D,0x22,0x75,0x72,0x6E,0x3A,0x73,0x63,0x68,0x65,0x6D,0x61,0x73,0x2D,0x6D,0x69,0x63,0x72,0x6F,0x73,0x6F,0x66,0x74,0x2D,0x63,0x6F,0x6D,0x3A,0x61,0x73,0x6D,0x2E,0x76,0x32,0x22,0x3E,0x0D,0x0A,0x20,0x20,0x20,0x20,0x3C,0x73,0x65,0x63,0x75,0x72,0x69,0x74,0x79,0x3E,0x0D,0x0A,0x20,0x20,0x20,0x20,0x20,0x20,0x3C,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x65,0x64,0x50,0x72,0x69,0x76,0x69,0x6C,0x65,0x67,0x65,0x73,0x20,0x78,0x6D,0x6C,0x6E,0x73,0x3D,0x22,0x75,0x72,0x6E,0x3A,0x73,0x63,0x68,0x65,0x6D,0x61,0x73,0x2D,0x6D,0x69,0x63,0x72,0x6F,0x73,0x6F,0x66,0x74,0x2D,0x63,0x6F,0x6D,0x3A,0x61,0x73,0x6D,0x2E,0x76,0x33,0x22,0x3E,0x0D,0x0A,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3C,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x65,0x64,0x45,0x78,0x65,0x63,0x75,0x74,0x69,0x6F,0x6E,0x4C,0x65,0x76,0x65,0x6C,0x20,0x6C,0x65,0x76,0x65,0x6C,0x3D,0x22,0x61,0x73,0x49,0x6E,0x76,0x6F,0x6B,0x65,0x72,0x22,0x20,0x75,0x69,0x41,0x63,0x63,0x65,0x73,0x73,0x3D,0x22,0x66,0x61,0x6C,0x73,0x65,0x22,0x2F,0x3E,0x0D,0x0A,0x20,0x20,0x20,0x20,0x20,0x20,0x3C,0x2F,0x72,0x65,0x71,0x75,0x65,0x73,0x74,0x65,0x64,0x50,0x72,0x69,0x76,0x69,0x6C,0x65,0x67,0x65,0x73,0x3E,0x0D,0x0A,0x20,0x20,0x20,0x20,0x3C,0x2F,0x73,0x65,0x63,0x75,0x72,0x69,0x74,0x79,0x3E,0x0D,0x0A,0x20,0x20,0x3C,0x2F,0x74,0x72,0x75,0x73,0x74,0x49,0x6E,0x66,0x6F,0x3E,0x0D,0x0A,0x3C,0x2F,0x61,0x73,0x73,0x65,0x6D,0x62,0x6C,0x79,0x3E,0x0D,0x0A,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x0C,0x00,0x00,0x00,0x90,0x37,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}; + +int HasReplacedExe = 0; + +//Thanks dots-tb for reversing this! +typedef struct PSM_handle { +uint32_t unk0; +uint32_t unk1; +uint32_t filesz; +uint32_t unk3; + +} PSM_handle; + +char OldPath[1024]; + +int pss_crypto_open_p(PSM_handle *handle, char *path) { + memset(OldPath,0x00,1024); + memcpy(OldPath,path,1024); + + sceClibPrintf("[FuckPSSE] [OPEN] before run: PSM_handle:\n"); + sceClibPrintf("[FuckPSSE] unk0 %lx\n",handle->unk0); + sceClibPrintf("[FuckPSSE] unk1 %lx\n",handle->unk1); + sceClibPrintf("[FuckPSSE] Size %lx\n",handle->filesz); + sceClibPrintf("[FuckPSSE] unk3 %lx\n",handle->unk3); + sceClibPrintf("[FuckPSSE] Path: %s\n",path); + + int ret; + ret = TAI_CONTINUE(int, cOpenHook_ref, handle, path); + + if(!strcmp(OldPath,"pss0:/top/Application/app.exe") && !HasReplacedExe) + { + handle->filesz = 0x1200; + } + + sceClibPrintf("[FuckPSSE] [OPEN] after run: PSM_handle:\n"); + sceClibPrintf("[FuckPSSE] unk0 %lx\n",handle->unk0); + sceClibPrintf("[FuckPSSE] unk1 %lx\n",handle->unk1); + sceClibPrintf("[FuckPSSE] Size %lx\n",handle->filesz); + sceClibPrintf("[FuckPSSE] unk3 %lx\n",handle->unk3); + sceClibPrintf("[FuckPSSE] Path: %s\n",path); + sceClibPrintf("[FuckPSSE] ret: %x\n",ret); + + return ret; +} + +char *pss_crypto_read_p(PSM_handle *handle, int ctx) { + sceClibPrintf("[FuckPSSE] [READ] before run: PSM_handle:\n"); + sceClibPrintf("[FuckPSSE] unk0 %lx\n",handle->unk0); + sceClibPrintf("[FuckPSSE] unk1 %lx\n",handle->unk1); + sceClibPrintf("[FuckPSSE] Size %lx\n",handle->filesz); + sceClibPrintf("[FuckPSSE] unk3 %lx\n",handle->unk3); + sceClibPrintf("[FuckPSSE] Path: %x\n",ctx); + + if(!strcmp(OldPath,"pss0:/top/Application/app.exe") && !HasReplacedExe) + { + TAI_CONTINUE(int, cReadHook_ref, handle, ctx); + sceClibPrintf("[FuckPSSE] APP.EXE Detected! Injecting dumper!\n"); + HasReplacedExe = 1; + return (char*)&LetsJustAttackILL; + } + else + { + int ret; + ret = TAI_CONTINUE(int, cReadHook_ref, handle, ctx); + + sceClibPrintf("[FuckPSSE] [READ] after run: PSM_handle:\n"); + sceClibPrintf("[FuckPSSE] unk0 %lx\n",handle->unk0); + sceClibPrintf("[FuckPSSE] unk1 %lx\n",handle->unk1); + sceClibPrintf("[FuckPSSE] Size %lx\n",handle->filesz); + sceClibPrintf("[FuckPSSE] unk3 %lx\n",handle->unk3); + sceClibPrintf("[FuckPSSE] Path: %x\n",ctx); + + return ret; + } + return 0; +} + +int pss_io_open_p(int arg1, int arg2, int arg3) { + sceClibPrintf("[FuckPSSE] Before Run: pss_io_open() %x %x %x \n",arg1,arg2,arg3); + int ret; + ret = TAI_CONTINUE(int, OpenHook_ref, arg1, arg2, arg3); + sceClibPrintf("[FuckPSSE] After Run pss_io_open() %x %x %x ret: %x\n",arg1,arg2,arg3 ,ret); + return ret; +} + + +SceUID sceKernelLoadStartModule_p(char *path, SceSize args, void *argp, int flags, SceKernelLMOption *option, int *status) +{ + //sceClibPrintf("[FuckPSSE] Starting Module: %s\n",path); + + SceUID ret; + ret = TAI_CONTINUE(SceUID, LoadModuleHook_ref, path, args, argp, flags, option, status); + + if(!strcmp(path,"app0:/module/libpsm.suprx")) + { + sceClibPrintf("[FuckPSSE] SceLibPsm Detected!\n"); + cOpenHook = taiHookFunctionImport(&cOpenHook_ref, + "SceLibMono", + TAI_ANY_LIBRARY, + 0x6B4125E4, //pss_crypto_open + pss_crypto_open_p); + + cReadHook = taiHookFunctionImport(&cReadHook_ref, + "SceLibMono", + TAI_ANY_LIBRARY, + 0x32BA8444, //pss_crypto_read + pss_crypto_read_p); + + sceClibPrintf("[FuckPSSE] cOpenHook %x, %x\n",cOpenHook,cOpenHook_ref); + sceClibPrintf("[FuckPSSE] cReadHook %x, %x\n",cReadHook,cReadHook_ref); + + + } + return ret; +} + + +void _start() __attribute__ ((weak, alias ("module_start"))); + +void module_start(SceSize argc, const void *args) { + char titleid[12]; + sceAppMgrAppParamGetString(0, 12, titleid, 256); + + if(!strcmp(titleid,"PCSI00011")) // PSM Runtime + { + sceClibPrintf("[FuckPSSE] Silca: I like to see girls die :3\n"); + sceClibPrintf("[FuckPSSE] Loaded!\n"); + sceClibPrintf("[FuckPSSE] Running on %s\n",titleid); + + LoadModuleHook = taiHookFunctionImport(&LoadModuleHook_ref, + TAI_MAIN_MODULE, + TAI_ANY_LIBRARY, + 0x2DCC4AFA, //sceKernelLoadStartModule + sceKernelLoadStartModule_p); + + sceClibPrintf("[FuckPSSE] LoadModuleHook %x, %x\n",LoadModuleHook,LoadModuleHook_ref); + } +} + +int module_stop(SceSize argc, const void *args) { + + // release hooks + if (cOpenHook >= 0) taiHookRelease(cOpenHook, cOpenHook_ref); + if (cReadHook >= 0) taiHookRelease(cReadHook, cReadHook_ref); + if (OpenHook >= 0) taiHookRelease(LoadModuleHook, LoadModuleHook_ref); + return SCE_KERNEL_STOP_SUCCESS; +} diff --git a/Native/FuckPSSE.yml b/Native/FuckPSSE.yml new file mode 100644 index 0000000..8cbe046 --- /dev/null +++ b/Native/FuckPSSE.yml @@ -0,0 +1,8 @@ +FuckPSSE: + attributes: 0 + version: + major: 1 + minor: 1 + main: + start: module_start + stop: module_stop diff --git a/Native/LICENSE b/Native/LICENSE new file mode 100644 index 0000000..3302a93 --- /dev/null +++ b/Native/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Silica + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Native/README.md b/Native/README.md new file mode 100644 index 0000000..d568338 --- /dev/null +++ b/Native/README.md @@ -0,0 +1,21 @@ +# IDUSpoof +This is a plugin that spoofs IDU Mode (vshSysconIsIduMode) to allways return 0x1 +this has the effect of tricking whatever application's its configured for into thinking its running in IDU mode. +in fact, if you do \*ALL it has the same effect as if you just enabled IDU mode! +the advantage to this plugin is ofcource that you can specify exactly what apps idu is set for. + +for example. if you want to enable the package installer. simply do +\*NPXS10031 +ux0:tai/iduSpoof.suprx + +or enable IDU settings without IDU Mode: + +\*NPXS10015 +ux0:tai/iduSpoof.suprx + +though keep in mind henkaku overwrites idu settings with its own. + + +!! WORKS ON 3.65 And 3.68!! + +Download: https://bitbucket.org/SilicaAndPina/iduspoof/downloads/iduSpoof.suprx \ No newline at end of file