public ulong GetIntNative(uint regId, out int intVal) { ulong errorCode = 0; var bufferAddr = ps4.AllocateMemory(p.pid, sizeof(int)); ps4.WriteMemory <int>(p.pid, bufferAddr, 0); errorCode = ps4.Call(p.pid, stub, sceRegMgrGetInt_addr, regId, bufferAddr); int valueReturned = ps4.ReadMemory <int>(p.pid, bufferAddr); ps4.FreeMemory(p.pid, bufferAddr, sizeof(int)); intVal = valueReturned; return(errorCode); }
private void searchButton_Click(object sender, EventArgs e) { if (pid == 0) { SetStatus("No Process Selected"); return; } var pm = ps4.GetProcessMaps(pid); if (pm.FindEntry("(NoName)clienthandler") == null) { SetStatus("RPC Stub Not Found"); return; } var dirNameAddr = ps4.AllocateMemory(pid, Marshal.SizeOf(typeof(SceSaveDataDirName)) * 1024); var paramAddr = ps4.AllocateMemory(pid, Marshal.SizeOf(typeof(SceSaveDataParam)) * 1024); SceSaveDataDirNameSearchCond searchCond = new SceSaveDataDirNameSearchCond { userId = GetUser() }; SceSaveDataDirNameSearchResult searchResult = new SceSaveDataDirNameSearchResult { dirNames = dirNameAddr, dirNamesNum = 1024, param = paramAddr, }; dirsComboBox.DataSource = Find(searchCond, searchResult); ps4.FreeMemory(pid, dirNameAddr, Marshal.SizeOf(typeof(SceSaveDataDirName)) * 1024); ps4.FreeMemory(pid, paramAddr, Marshal.SizeOf(typeof(SceSaveDataParam)) * 1024); if (dirsComboBox.Items.Count > 0) { SetStatus($"Found {dirsComboBox.Items.Count} Save Directories :D"); } else { SetStatus("Found 0 Save Directories :("); } }
private void searchButton_Click(object sender, EventArgs e) { if (!ps4.IsConnected) { SetStatus("Not connected to ps4"); return; } if (pid == 0) { SetStatus("dont forget to click setup"); return; } if (selectedGame == null) { SetStatus("No game selected"); return; } var pm = ps4.GetProcessMaps(pid); if (pm.FindEntry("(NoName)clienthandler") == null) { SetStatus("RPC Stub Not Found"); return; } var dirNameAddr = ps4.AllocateMemory(pid, Marshal.SizeOf(typeof(SceSaveDataDirName)) * 1024 + 0x10 + Marshal.SizeOf(typeof(SceSaveDataParam)) * 1024); var titleIdAddr = dirNameAddr + (uint)Marshal.SizeOf(typeof(SceSaveDataDirName)) * 1024; var paramAddr = titleIdAddr + 0x10; SceSaveDataDirNameSearchCond searchCond = new SceSaveDataDirNameSearchCond { userId = GetUser(), titleId = titleIdAddr }; SceSaveDataDirNameSearchResult searchResult = new SceSaveDataDirNameSearchResult { dirNames = dirNameAddr, dirNamesNum = 1024, param = paramAddr, }; ps4.WriteMemory(pid, titleIdAddr, selectedGame); dirsComboBox.DataSource = Find(searchCond, searchResult); ps4.FreeMemory(pid, dirNameAddr, Marshal.SizeOf(typeof(SceSaveDataDirName)) * 1024 + 0x10 + Marshal.SizeOf(typeof(SceSaveDataParam)) * 1024); if (dirsComboBox.Items.Count > 0) { SetStatus($"Found {dirsComboBox.Items.Count} Save Directories :D"); } else { SetStatus("Found 0 Save Directories :("); } }
private void FindDirs_Button_Click(object sender, EventArgs e) { if (pid == 0) { return; } var pm = ps4.GetProcessMaps(pid); if (pm.FindEntry("(NoName)clienthandler") == null) { return; } var dirNameAddr = ps4.AllocateMemory(pid, Marshal.SizeOf(typeof(SceSaveDataDirName)) * 1024); SceSaveDataDirNameSearchCond searchCond = new SceSaveDataDirNameSearchCond { userId = InitialUser() }; SceSaveDataDirNameSearchResult searchResult = new SceSaveDataDirNameSearchResult { dirNames = dirNameAddr, dirNamesNum = 1024 }; Dirs_ComboBox.DataSource = Find(searchCond, searchResult); ps4.FreeMemory(pid, dirNameAddr, Marshal.SizeOf(typeof(SceSaveDataDirName)) * 1024); }