├── .gitattributes ├── .gitignore ├── README.md ├── Xbox Toolbox.sln └── Xbox Toolbox ├── App.config ├── Form1.Designer.cs ├── Form1.cs ├── Form1.resx ├── PPC ├── buildppc.bat ├── spu-lv2-as.exe └── spu-lv2-objcopy.exe ├── Program.cs ├── Properties ├── AssemblyInfo.cs ├── Resources.Designer.cs ├── Resources.resx ├── Settings.Designer.cs └── Settings.settings ├── XDRPCPlusPlus.cs ├── Xbox Toolbox.csproj └── icon.ico /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | 4 | # User-specific files 5 | *.suo 6 | *.user 7 | *.userosscache 8 | *.sln.docstates 9 | 10 | # User-specific files (MonoDevelop/Xamarin Studio) 11 | *.userprefs 12 | 13 | # Build results 14 | [Dd]ebug/ 15 | [Dd]ebugPublic/ 16 | [Rr]elease/ 17 | [Rr]eleases/ 18 | x64/ 19 | x86/ 20 | bld/ 21 | [Bb]in/ 22 | [Oo]bj/ 23 | [Ll]og/ 24 | 25 | # Visual Studio 2015 cache/options directory 26 | .vs/ 27 | # Uncomment if you have tasks that create the project's static files in wwwroot 28 | #wwwroot/ 29 | 30 | # MSTest test Results 31 | [Tt]est[Rr]esult*/ 32 | [Bb]uild[Ll]og.* 33 | 34 | # NUNIT 35 | *.VisualState.xml 36 | TestResult.xml 37 | 38 | # Build Results of an ATL Project 39 | [Dd]ebugPS/ 40 | [Rr]eleasePS/ 41 | dlldata.c 42 | 43 | # DNX 44 | project.lock.json 45 | project.fragment.lock.json 46 | artifacts/ 47 | 48 | *_i.c 49 | *_p.c 50 | *_i.h 51 | *.ilk 52 | *.meta 53 | *.obj 54 | *.pch 55 | *.pdb 56 | *.pgc 57 | *.pgd 58 | *.rsp 59 | *.sbr 60 | *.tlb 61 | *.tli 62 | *.tlh 63 | *.tmp 64 | *.tmp_proj 65 | *.log 66 | *.vspscc 67 | *.vssscc 68 | .builds 69 | *.pidb 70 | *.svclog 71 | *.scc 72 | 73 | # Chutzpah Test files 74 | _Chutzpah* 75 | 76 | # Visual C++ cache files 77 | ipch/ 78 | *.aps 79 | *.ncb 80 | *.opendb 81 | *.opensdf 82 | *.sdf 83 | *.cachefile 84 | *.VC.db 85 | *.VC.VC.opendb 86 | 87 | # Visual Studio profiler 88 | *.psess 89 | *.vsp 90 | *.vspx 91 | *.sap 92 | 93 | # TFS 2012 Local Workspace 94 | $tf/ 95 | 96 | # Guidance Automation Toolkit 97 | *.gpState 98 | 99 | # ReSharper is a .NET coding add-in 100 | _ReSharper*/ 101 | *.[Rr]e[Ss]harper 102 | *.DotSettings.user 103 | 104 | # JustCode is a .NET coding add-in 105 | .JustCode 106 | 107 | # TeamCity is a build add-in 108 | _TeamCity* 109 | 110 | # DotCover is a Code Coverage Tool 111 | *.dotCover 112 | 113 | # NCrunch 114 | _NCrunch_* 115 | .*crunch*.local.xml 116 | nCrunchTemp_* 117 | 118 | # MightyMoose 119 | *.mm.* 120 | AutoTest.Net/ 121 | 122 | # Web workbench (sass) 123 | .sass-cache/ 124 | 125 | # Installshield output folder 126 | [Ee]xpress/ 127 | 128 | # DocProject is a documentation generator add-in 129 | DocProject/buildhelp/ 130 | DocProject/Help/*.HxT 131 | DocProject/Help/*.HxC 132 | DocProject/Help/*.hhc 133 | DocProject/Help/*.hhk 134 | DocProject/Help/*.hhp 135 | DocProject/Help/Html2 136 | DocProject/Help/html 137 | 138 | # Click-Once directory 139 | publish/ 140 | 141 | # Publish Web Output 142 | *.[Pp]ublish.xml 143 | *.azurePubxml 144 | # TODO: Comment the next line if you want to checkin your web deploy settings 145 | # but database connection strings (with potential passwords) will be unencrypted 146 | #*.pubxml 147 | *.publishproj 148 | 149 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 150 | # checkin your Azure Web App publish settings, but sensitive information contained 151 | # in these scripts will be unencrypted 152 | PublishScripts/ 153 | 154 | # NuGet Packages 155 | *.nupkg 156 | # The packages folder can be ignored because of Package Restore 157 | **/packages/* 158 | # except build/, which is used as an MSBuild target. 159 | !**/packages/build/ 160 | # Uncomment if necessary however generally it will be regenerated when needed 161 | #!**/packages/repositories.config 162 | # NuGet v3's project.json files produces more ignoreable files 163 | *.nuget.props 164 | *.nuget.targets 165 | 166 | # Microsoft Azure Build Output 167 | csx/ 168 | *.build.csdef 169 | 170 | # Microsoft Azure Emulator 171 | ecf/ 172 | rcf/ 173 | 174 | # Windows Store app package directories and files 175 | AppPackages/ 176 | BundleArtifacts/ 177 | Package.StoreAssociation.xml 178 | _pkginfo.txt 179 | 180 | # Visual Studio cache files 181 | # files ending in .cache can be ignored 182 | *.[Cc]ache 183 | # but keep track of directories ending in .cache 184 | !*.[Cc]ache/ 185 | 186 | # Others 187 | ClientBin/ 188 | ~$* 189 | *~ 190 | *.dbmdl 191 | *.dbproj.schemaview 192 | *.jfm 193 | *.pfx 194 | *.publishsettings 195 | node_modules/ 196 | orleans.codegen.cs 197 | 198 | # Since there are multiple workflows, uncomment next line to ignore bower_components 199 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 200 | #bower_components/ 201 | 202 | # RIA/Silverlight projects 203 | Generated_Code/ 204 | 205 | # Backup & report files from converting an old project file 206 | # to a newer Visual Studio version. Backup files are not needed, 207 | # because we have git ;-) 208 | _UpgradeReport_Files/ 209 | Backup*/ 210 | UpgradeLog*.XML 211 | UpgradeLog*.htm 212 | 213 | # SQL Server files 214 | *.mdf 215 | *.ldf 216 | 217 | # Business Intelligence projects 218 | *.rdl.data 219 | *.bim.layout 220 | *.bim_*.settings 221 | 222 | # Microsoft Fakes 223 | FakesAssemblies/ 224 | 225 | # GhostDoc plugin setting file 226 | *.GhostDoc.xml 227 | 228 | # Node.js Tools for Visual Studio 229 | .ntvs_analysis.dat 230 | 231 | # Visual Studio 6 build log 232 | *.plg 233 | 234 | # Visual Studio 6 workspace options file 235 | *.opt 236 | 237 | # Visual Studio LightSwitch build output 238 | **/*.HTMLClient/GeneratedArtifacts 239 | **/*.DesktopClient/GeneratedArtifacts 240 | **/*.DesktopClient/ModelManifest.xml 241 | **/*.Server/GeneratedArtifacts 242 | **/*.Server/ModelManifest.xml 243 | _Pvt_Extensions 244 | 245 | # Paket dependency manager 246 | .paket/paket.exe 247 | paket-files/ 248 | 249 | # FAKE - F# Make 250 | .fake/ 251 | 252 | # JetBrains Rider 253 | .idea/ 254 | *.sln.iml 255 | 256 | # CodeRush 257 | .cr/ 258 | 259 | # Python Tools for Visual Studio (PTVS) 260 | __pycache__/ 261 | *.pyc -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Xbox-Toolbox 2 | Toolbox for RGH/Jtag/Devkit Xbox 360
3 | This tool uses XDRPC for connecting to the Xbox 360 4 | 5 | [Downloads](https://github.com/skiffaw/Xbox-Toolbox/releases) 6 | 7 | # Features 8 | - Load and unload modules from the system 9 | - View module name, base address, module size for loaded modules 10 | - Call xbox functions by module name and ordinal number 11 | - Call functions in a game by address 12 | - PPC compiler/injector 13 | - Memory editor 14 | 15 | # Resources 16 | - xdrpc.dll (comes with the xbox360 sdk) 17 | - xdevkit.dll (comes with the xbox360 sdk) 18 | - HexBox.dll 19 | 20 | # Screenshots 21 | ![Modules Page](https://i.imgur.com/jb4pfsu.png) 22 | ![Functions Page](https://i.imgur.com/8cObVBQ.png) 23 | ![PPC Compiler](https://i.imgur.com/bw88mXU.png) 24 | 25 | # Credits 26 | [Matrix](https://github.com/skiffaw)
27 | [ImJtagModz](https://twitter.com/ImJtagModz)
28 | [Sabotage](https://github.com/egatobaS)
29 | [John](https://twitter.com/john1337hax) 30 | -------------------------------------------------------------------------------- /Xbox Toolbox.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.26730.15 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Xbox Toolbox", "Xbox Toolbox\Xbox Toolbox.csproj", "{DC37FF7E-4AD5-4F0E-8BBA-4154648996EA}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {DC37FF7E-4AD5-4F0E-8BBA-4154648996EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {DC37FF7E-4AD5-4F0E-8BBA-4154648996EA}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {DC37FF7E-4AD5-4F0E-8BBA-4154648996EA}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {DC37FF7E-4AD5-4F0E-8BBA-4154648996EA}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | GlobalSection(ExtensibilityGlobals) = postSolution 23 | SolutionGuid = {0DED26B5-0C09-4D1D-B56E-D854B94B06C8} 24 | EndGlobalSection 25 | EndGlobal 26 | -------------------------------------------------------------------------------- /Xbox Toolbox/App.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 0x0 24 | 25 | 26 | 0x82000000 27 | 28 | 29 | 0x1000 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /Xbox Toolbox/Form1.Designer.cs: -------------------------------------------------------------------------------- 1 | namespace Xbox_Toolbox { 2 | partial class Form1 { 3 | /// 4 | /// Required designer variable. 5 | /// 6 | private System.ComponentModel.IContainer components = null; 7 | 8 | /// 9 | /// Clean up any resources being used. 10 | /// 11 | /// true if managed resources should be disposed; otherwise, false. 12 | protected override void Dispose(bool disposing) { 13 | if (disposing && (components != null)) { 14 | components.Dispose(); 15 | } 16 | base.Dispose(disposing); 17 | } 18 | 19 | #region Windows Form Designer generated code 20 | 21 | /// 22 | /// Required method for Designer support - do not modify 23 | /// the contents of this method with the code editor. 24 | /// 25 | private void InitializeComponent() { 26 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1)); 27 | this.ConnectButton = new System.Windows.Forms.Button(); 28 | this.RebootButton = new System.Windows.Forms.Button(); 29 | this.SourceLinkLabel = new System.Windows.Forms.LinkLabel(); 30 | this.MainTabControl = new System.Windows.Forms.TabControl(); 31 | this.ModuleTab = new System.Windows.Forms.TabPage(); 32 | this.RefreshModulesButton = new System.Windows.Forms.Button(); 33 | this.LoadModuleButton = new System.Windows.Forms.Button(); 34 | this.ModulePathTextBox = new System.Windows.Forms.TextBox(); 35 | this.dataGridView1 = new System.Windows.Forms.DataGridView(); 36 | this.ModuleColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); 37 | this.BaseAddressColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); 38 | this.SizeColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); 39 | this.UnloadColumn = new System.Windows.Forms.DataGridViewButtonColumn(); 40 | this.FunctionsTab = new System.Windows.Forms.TabPage(); 41 | this.groupBox2 = new System.Windows.Forms.GroupBox(); 42 | this.CallAddressReturnTextBox = new System.Windows.Forms.TextBox(); 43 | this.CallFunctionButton = new System.Windows.Forms.Button(); 44 | this.CallByAddressReturnType = new System.Windows.Forms.ComboBox(); 45 | this.label2 = new System.Windows.Forms.Label(); 46 | this.CallAddressTextBox = new System.Windows.Forms.TextBox(); 47 | this.label1 = new System.Windows.Forms.Label(); 48 | this.groupBox1 = new System.Windows.Forms.GroupBox(); 49 | this.ByOridinalReturnValueTextBox = new System.Windows.Forms.TextBox(); 50 | this.CallByOrdinalButton = new System.Windows.Forms.Button(); 51 | this.CallByOrdinalReturnTypeComboBox = new System.Windows.Forms.ComboBox(); 52 | this.ByOrdinalReturnLabel = new System.Windows.Forms.Label(); 53 | this.OrdinalLabel = new System.Windows.Forms.Label(); 54 | this.ModuleNameLabel = new System.Windows.Forms.Label(); 55 | this.OrdinalTextBox = new System.Windows.Forms.TextBox(); 56 | this.ModuleNameTextBox = new System.Windows.Forms.TextBox(); 57 | this.Param8CheckBox = new System.Windows.Forms.CheckBox(); 58 | this.Param7CheckBox = new System.Windows.Forms.CheckBox(); 59 | this.Param6CheckBox = new System.Windows.Forms.CheckBox(); 60 | this.Param5CheckBox = new System.Windows.Forms.CheckBox(); 61 | this.Param4CheckBox = new System.Windows.Forms.CheckBox(); 62 | this.Param3CheckBox = new System.Windows.Forms.CheckBox(); 63 | this.Param2CheckBox = new System.Windows.Forms.CheckBox(); 64 | this.Param1CheckBox = new System.Windows.Forms.CheckBox(); 65 | this.Param8ComboBox = new System.Windows.Forms.ComboBox(); 66 | this.Param7ComboBox = new System.Windows.Forms.ComboBox(); 67 | this.Param6ComboBox = new System.Windows.Forms.ComboBox(); 68 | this.Param5ComboBox = new System.Windows.Forms.ComboBox(); 69 | this.Param4ComboBox = new System.Windows.Forms.ComboBox(); 70 | this.Param3ComboBox = new System.Windows.Forms.ComboBox(); 71 | this.Param2ComboBox = new System.Windows.Forms.ComboBox(); 72 | this.Param1ComboBox = new System.Windows.Forms.ComboBox(); 73 | this.Param8TextBox = new System.Windows.Forms.TextBox(); 74 | this.Param7TextBox = new System.Windows.Forms.TextBox(); 75 | this.Param6TextBox = new System.Windows.Forms.TextBox(); 76 | this.Param5TextBox = new System.Windows.Forms.TextBox(); 77 | this.Param4TextBox = new System.Windows.Forms.TextBox(); 78 | this.Param3TextBox = new System.Windows.Forms.TextBox(); 79 | this.Param2TextBox = new System.Windows.Forms.TextBox(); 80 | this.Param1TextBox = new System.Windows.Forms.TextBox(); 81 | this.PPCTab = new System.Windows.Forms.TabPage(); 82 | this.InjectionAddressTextBox = new System.Windows.Forms.TextBox(); 83 | this.InjectCodeButton = new System.Windows.Forms.Button(); 84 | this.CompileInstructionsButton = new System.Windows.Forms.Button(); 85 | this.BinaryTextBox = new System.Windows.Forms.RichTextBox(); 86 | this.InstructionsTextBox = new System.Windows.Forms.RichTextBox(); 87 | this.MemoryTab = new System.Windows.Forms.TabPage(); 88 | this.CPUKeyLabel = new System.Windows.Forms.Label(); 89 | this.TitleIDLabel = new System.Windows.Forms.Label(); 90 | this.CPUKeyHeaderLabel = new System.Windows.Forms.Label(); 91 | this.ConnectionStatusLabel = new System.Windows.Forms.Label(); 92 | this.ConsoleDebugIPLabel = new System.Windows.Forms.Label(); 93 | this.MemoryViewHexBox = new Be.Windows.Forms.HexBox(); 94 | this.MemoryAddressTextBox = new System.Windows.Forms.TextBox(); 95 | this.MemoryAddressLabel = new System.Windows.Forms.Label(); 96 | this.MemorySizeLabel = new System.Windows.Forms.Label(); 97 | this.MemorySizeTextBox = new System.Windows.Forms.TextBox(); 98 | this.PeekMemoryButton = new System.Windows.Forms.Button(); 99 | this.PokeMemoryButton = new System.Windows.Forms.Button(); 100 | this.MainTabControl.SuspendLayout(); 101 | this.ModuleTab.SuspendLayout(); 102 | ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).BeginInit(); 103 | this.FunctionsTab.SuspendLayout(); 104 | this.groupBox2.SuspendLayout(); 105 | this.groupBox1.SuspendLayout(); 106 | this.PPCTab.SuspendLayout(); 107 | this.MemoryTab.SuspendLayout(); 108 | this.SuspendLayout(); 109 | // 110 | // ConnectButton 111 | // 112 | this.ConnectButton.Location = new System.Drawing.Point(21, 12); 113 | this.ConnectButton.Name = "ConnectButton"; 114 | this.ConnectButton.Size = new System.Drawing.Size(346, 58); 115 | this.ConnectButton.TabIndex = 0; 116 | this.ConnectButton.Text = "Connect"; 117 | this.ConnectButton.UseVisualStyleBackColor = true; 118 | this.ConnectButton.Click += new System.EventHandler(this.ConnectButton_Click); 119 | // 120 | // RebootButton 121 | // 122 | this.RebootButton.Location = new System.Drawing.Point(374, 12); 123 | this.RebootButton.Name = "RebootButton"; 124 | this.RebootButton.Size = new System.Drawing.Size(339, 58); 125 | this.RebootButton.TabIndex = 1; 126 | this.RebootButton.Text = "Reboot"; 127 | this.RebootButton.UseVisualStyleBackColor = true; 128 | this.RebootButton.Click += new System.EventHandler(this.RebootButton_Click); 129 | // 130 | // SourceLinkLabel 131 | // 132 | this.SourceLinkLabel.AutoSize = true; 133 | this.SourceLinkLabel.Location = new System.Drawing.Point(765, 31); 134 | this.SourceLinkLabel.Name = "SourceLinkLabel"; 135 | this.SourceLinkLabel.Size = new System.Drawing.Size(60, 20); 136 | this.SourceLinkLabel.TabIndex = 3; 137 | this.SourceLinkLabel.TabStop = true; 138 | this.SourceLinkLabel.Text = "Source"; 139 | // 140 | // MainTabControl 141 | // 142 | this.MainTabControl.Controls.Add(this.ModuleTab); 143 | this.MainTabControl.Controls.Add(this.FunctionsTab); 144 | this.MainTabControl.Controls.Add(this.PPCTab); 145 | this.MainTabControl.Controls.Add(this.MemoryTab); 146 | this.MainTabControl.Location = new System.Drawing.Point(14, 132); 147 | this.MainTabControl.Name = "MainTabControl"; 148 | this.MainTabControl.SelectedIndex = 0; 149 | this.MainTabControl.Size = new System.Drawing.Size(868, 628); 150 | this.MainTabControl.TabIndex = 4; 151 | this.MainTabControl.KeyDown += new System.Windows.Forms.KeyEventHandler(this.MainTabControl_KeyDown); 152 | // 153 | // ModuleTab 154 | // 155 | this.ModuleTab.Controls.Add(this.RefreshModulesButton); 156 | this.ModuleTab.Controls.Add(this.LoadModuleButton); 157 | this.ModuleTab.Controls.Add(this.ModulePathTextBox); 158 | this.ModuleTab.Controls.Add(this.dataGridView1); 159 | this.ModuleTab.Location = new System.Drawing.Point(4, 29); 160 | this.ModuleTab.Name = "ModuleTab"; 161 | this.ModuleTab.Padding = new System.Windows.Forms.Padding(3); 162 | this.ModuleTab.Size = new System.Drawing.Size(860, 595); 163 | this.ModuleTab.TabIndex = 0; 164 | this.ModuleTab.Text = "Modules"; 165 | this.ModuleTab.UseVisualStyleBackColor = true; 166 | // 167 | // RefreshModulesButton 168 | // 169 | this.RefreshModulesButton.Location = new System.Drawing.Point(594, 552); 170 | this.RefreshModulesButton.Name = "RefreshModulesButton"; 171 | this.RefreshModulesButton.Size = new System.Drawing.Size(260, 34); 172 | this.RefreshModulesButton.TabIndex = 3; 173 | this.RefreshModulesButton.Text = "Refresh Module List"; 174 | this.RefreshModulesButton.UseVisualStyleBackColor = true; 175 | this.RefreshModulesButton.Click += new System.EventHandler(this.RefreshModulesButton_Click); 176 | // 177 | // LoadModuleButton 178 | // 179 | this.LoadModuleButton.Location = new System.Drawing.Point(328, 552); 180 | this.LoadModuleButton.Name = "LoadModuleButton"; 181 | this.LoadModuleButton.Size = new System.Drawing.Size(260, 34); 182 | this.LoadModuleButton.TabIndex = 2; 183 | this.LoadModuleButton.Text = "Load Module"; 184 | this.LoadModuleButton.UseVisualStyleBackColor = true; 185 | this.LoadModuleButton.Click += new System.EventHandler(this.LoadModuleButton_Click); 186 | // 187 | // ModulePathTextBox 188 | // 189 | this.ModulePathTextBox.Location = new System.Drawing.Point(8, 554); 190 | this.ModulePathTextBox.Name = "ModulePathTextBox"; 191 | this.ModulePathTextBox.Size = new System.Drawing.Size(314, 26); 192 | this.ModulePathTextBox.TabIndex = 1; 193 | // 194 | // dataGridView1 195 | // 196 | this.dataGridView1.AllowUserToAddRows = false; 197 | this.dataGridView1.AllowUserToDeleteRows = false; 198 | this.dataGridView1.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; 199 | this.dataGridView1.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { 200 | this.ModuleColumn, 201 | this.BaseAddressColumn, 202 | this.SizeColumn, 203 | this.UnloadColumn}); 204 | this.dataGridView1.Location = new System.Drawing.Point(8, 8); 205 | this.dataGridView1.Name = "dataGridView1"; 206 | this.dataGridView1.ReadOnly = true; 207 | this.dataGridView1.RowHeadersVisible = false; 208 | this.dataGridView1.RowTemplate.Height = 28; 209 | this.dataGridView1.Size = new System.Drawing.Size(848, 535); 210 | this.dataGridView1.TabIndex = 0; 211 | this.dataGridView1.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView1_CellContentClick); 212 | // 213 | // ModuleColumn 214 | // 215 | this.ModuleColumn.HeaderText = "Module Name"; 216 | this.ModuleColumn.Name = "ModuleColumn"; 217 | this.ModuleColumn.ReadOnly = true; 218 | this.ModuleColumn.Width = 205; 219 | // 220 | // BaseAddressColumn 221 | // 222 | this.BaseAddressColumn.HeaderText = "Base Address"; 223 | this.BaseAddressColumn.Name = "BaseAddressColumn"; 224 | this.BaseAddressColumn.ReadOnly = true; 225 | this.BaseAddressColumn.Width = 150; 226 | // 227 | // SizeColumn 228 | // 229 | this.SizeColumn.HeaderText = "Size"; 230 | this.SizeColumn.Name = "SizeColumn"; 231 | this.SizeColumn.ReadOnly = true; 232 | // 233 | // UnloadColumn 234 | // 235 | this.UnloadColumn.HeaderText = "Unload"; 236 | this.UnloadColumn.Name = "UnloadColumn"; 237 | this.UnloadColumn.ReadOnly = true; 238 | // 239 | // FunctionsTab 240 | // 241 | this.FunctionsTab.Controls.Add(this.groupBox2); 242 | this.FunctionsTab.Controls.Add(this.groupBox1); 243 | this.FunctionsTab.Controls.Add(this.Param8CheckBox); 244 | this.FunctionsTab.Controls.Add(this.Param7CheckBox); 245 | this.FunctionsTab.Controls.Add(this.Param6CheckBox); 246 | this.FunctionsTab.Controls.Add(this.Param5CheckBox); 247 | this.FunctionsTab.Controls.Add(this.Param4CheckBox); 248 | this.FunctionsTab.Controls.Add(this.Param3CheckBox); 249 | this.FunctionsTab.Controls.Add(this.Param2CheckBox); 250 | this.FunctionsTab.Controls.Add(this.Param1CheckBox); 251 | this.FunctionsTab.Controls.Add(this.Param8ComboBox); 252 | this.FunctionsTab.Controls.Add(this.Param7ComboBox); 253 | this.FunctionsTab.Controls.Add(this.Param6ComboBox); 254 | this.FunctionsTab.Controls.Add(this.Param5ComboBox); 255 | this.FunctionsTab.Controls.Add(this.Param4ComboBox); 256 | this.FunctionsTab.Controls.Add(this.Param3ComboBox); 257 | this.FunctionsTab.Controls.Add(this.Param2ComboBox); 258 | this.FunctionsTab.Controls.Add(this.Param1ComboBox); 259 | this.FunctionsTab.Controls.Add(this.Param8TextBox); 260 | this.FunctionsTab.Controls.Add(this.Param7TextBox); 261 | this.FunctionsTab.Controls.Add(this.Param6TextBox); 262 | this.FunctionsTab.Controls.Add(this.Param5TextBox); 263 | this.FunctionsTab.Controls.Add(this.Param4TextBox); 264 | this.FunctionsTab.Controls.Add(this.Param3TextBox); 265 | this.FunctionsTab.Controls.Add(this.Param2TextBox); 266 | this.FunctionsTab.Controls.Add(this.Param1TextBox); 267 | this.FunctionsTab.Location = new System.Drawing.Point(4, 29); 268 | this.FunctionsTab.Name = "FunctionsTab"; 269 | this.FunctionsTab.Padding = new System.Windows.Forms.Padding(3); 270 | this.FunctionsTab.Size = new System.Drawing.Size(860, 595); 271 | this.FunctionsTab.TabIndex = 1; 272 | this.FunctionsTab.Text = "Functions"; 273 | this.FunctionsTab.UseVisualStyleBackColor = true; 274 | // 275 | // groupBox2 276 | // 277 | this.groupBox2.Controls.Add(this.CallAddressReturnTextBox); 278 | this.groupBox2.Controls.Add(this.CallFunctionButton); 279 | this.groupBox2.Controls.Add(this.CallByAddressReturnType); 280 | this.groupBox2.Controls.Add(this.label2); 281 | this.groupBox2.Controls.Add(this.CallAddressTextBox); 282 | this.groupBox2.Controls.Add(this.label1); 283 | this.groupBox2.Location = new System.Drawing.Point(446, 345); 284 | this.groupBox2.Name = "groupBox2"; 285 | this.groupBox2.Size = new System.Drawing.Size(408, 206); 286 | this.groupBox2.TabIndex = 25; 287 | this.groupBox2.TabStop = false; 288 | this.groupBox2.Text = "Call By Address"; 289 | // 290 | // CallAddressReturnTextBox 291 | // 292 | this.CallAddressReturnTextBox.Location = new System.Drawing.Point(8, 160); 293 | this.CallAddressReturnTextBox.Name = "CallAddressReturnTextBox"; 294 | this.CallAddressReturnTextBox.Size = new System.Drawing.Size(392, 26); 295 | this.CallAddressReturnTextBox.TabIndex = 11; 296 | // 297 | // CallFunctionButton 298 | // 299 | this.CallFunctionButton.Location = new System.Drawing.Point(6, 109); 300 | this.CallFunctionButton.Name = "CallFunctionButton"; 301 | this.CallFunctionButton.Size = new System.Drawing.Size(396, 32); 302 | this.CallFunctionButton.TabIndex = 10; 303 | this.CallFunctionButton.Text = "Call Function"; 304 | this.CallFunctionButton.UseVisualStyleBackColor = true; 305 | this.CallFunctionButton.Click += new System.EventHandler(this.CallFunctionButton_Click); 306 | // 307 | // CallByAddressReturnType 308 | // 309 | this.CallByAddressReturnType.FormattingEnabled = true; 310 | this.CallByAddressReturnType.Items.AddRange(new object[] { 311 | "void", 312 | "long", 313 | "string", 314 | "float"}); 315 | this.CallByAddressReturnType.Location = new System.Drawing.Point(130, 67); 316 | this.CallByAddressReturnType.Name = "CallByAddressReturnType"; 317 | this.CallByAddressReturnType.Size = new System.Drawing.Size(270, 28); 318 | this.CallByAddressReturnType.TabIndex = 9; 319 | // 320 | // label2 321 | // 322 | this.label2.AutoSize = true; 323 | this.label2.Location = new System.Drawing.Point(10, 70); 324 | this.label2.Name = "label2"; 325 | this.label2.Size = new System.Drawing.Size(96, 20); 326 | this.label2.TabIndex = 8; 327 | this.label2.Text = "Return Type"; 328 | // 329 | // CallAddressTextBox 330 | // 331 | this.CallAddressTextBox.Location = new System.Drawing.Point(130, 25); 332 | this.CallAddressTextBox.Name = "CallAddressTextBox"; 333 | this.CallAddressTextBox.Size = new System.Drawing.Size(270, 26); 334 | this.CallAddressTextBox.TabIndex = 1; 335 | // 336 | // label1 337 | // 338 | this.label1.AutoSize = true; 339 | this.label1.Location = new System.Drawing.Point(10, 29); 340 | this.label1.Name = "label1"; 341 | this.label1.Size = new System.Drawing.Size(68, 20); 342 | this.label1.TabIndex = 0; 343 | this.label1.Text = "Address"; 344 | // 345 | // groupBox1 346 | // 347 | this.groupBox1.Controls.Add(this.ByOridinalReturnValueTextBox); 348 | this.groupBox1.Controls.Add(this.CallByOrdinalButton); 349 | this.groupBox1.Controls.Add(this.CallByOrdinalReturnTypeComboBox); 350 | this.groupBox1.Controls.Add(this.ByOrdinalReturnLabel); 351 | this.groupBox1.Controls.Add(this.OrdinalLabel); 352 | this.groupBox1.Controls.Add(this.ModuleNameLabel); 353 | this.groupBox1.Controls.Add(this.OrdinalTextBox); 354 | this.groupBox1.Controls.Add(this.ModuleNameTextBox); 355 | this.groupBox1.Location = new System.Drawing.Point(6, 342); 356 | this.groupBox1.Name = "groupBox1"; 357 | this.groupBox1.Size = new System.Drawing.Size(408, 248); 358 | this.groupBox1.TabIndex = 24; 359 | this.groupBox1.TabStop = false; 360 | this.groupBox1.Text = "Call By Ordinal"; 361 | // 362 | // ByOridinalReturnValueTextBox 363 | // 364 | this.ByOridinalReturnValueTextBox.Location = new System.Drawing.Point(8, 202); 365 | this.ByOridinalReturnValueTextBox.Name = "ByOridinalReturnValueTextBox"; 366 | this.ByOridinalReturnValueTextBox.Size = new System.Drawing.Size(392, 26); 367 | this.ByOridinalReturnValueTextBox.TabIndex = 7; 368 | // 369 | // CallByOrdinalButton 370 | // 371 | this.CallByOrdinalButton.Location = new System.Drawing.Point(6, 151); 372 | this.CallByOrdinalButton.Name = "CallByOrdinalButton"; 373 | this.CallByOrdinalButton.Size = new System.Drawing.Size(396, 32); 374 | this.CallByOrdinalButton.TabIndex = 6; 375 | this.CallByOrdinalButton.Text = "Call Function"; 376 | this.CallByOrdinalButton.UseVisualStyleBackColor = true; 377 | this.CallByOrdinalButton.Click += new System.EventHandler(this.CallByOrdinalButton_Click); 378 | // 379 | // CallByOrdinalReturnTypeComboBox 380 | // 381 | this.CallByOrdinalReturnTypeComboBox.FormattingEnabled = true; 382 | this.CallByOrdinalReturnTypeComboBox.Items.AddRange(new object[] { 383 | "void", 384 | "long", 385 | "string", 386 | "float"}); 387 | this.CallByOrdinalReturnTypeComboBox.Location = new System.Drawing.Point(136, 109); 388 | this.CallByOrdinalReturnTypeComboBox.Name = "CallByOrdinalReturnTypeComboBox"; 389 | this.CallByOrdinalReturnTypeComboBox.Size = new System.Drawing.Size(264, 28); 390 | this.CallByOrdinalReturnTypeComboBox.TabIndex = 5; 391 | // 392 | // ByOrdinalReturnLabel 393 | // 394 | this.ByOrdinalReturnLabel.AutoSize = true; 395 | this.ByOrdinalReturnLabel.Location = new System.Drawing.Point(10, 112); 396 | this.ByOrdinalReturnLabel.Name = "ByOrdinalReturnLabel"; 397 | this.ByOrdinalReturnLabel.Size = new System.Drawing.Size(96, 20); 398 | this.ByOrdinalReturnLabel.TabIndex = 4; 399 | this.ByOrdinalReturnLabel.Text = "Return Type"; 400 | // 401 | // OrdinalLabel 402 | // 403 | this.OrdinalLabel.AutoSize = true; 404 | this.OrdinalLabel.Location = new System.Drawing.Point(8, 69); 405 | this.OrdinalLabel.Name = "OrdinalLabel"; 406 | this.OrdinalLabel.Size = new System.Drawing.Size(59, 20); 407 | this.OrdinalLabel.TabIndex = 3; 408 | this.OrdinalLabel.Text = "Ordinal"; 409 | // 410 | // ModuleNameLabel 411 | // 412 | this.ModuleNameLabel.AutoSize = true; 413 | this.ModuleNameLabel.Location = new System.Drawing.Point(8, 31); 414 | this.ModuleNameLabel.Name = "ModuleNameLabel"; 415 | this.ModuleNameLabel.Size = new System.Drawing.Size(107, 20); 416 | this.ModuleNameLabel.TabIndex = 2; 417 | this.ModuleNameLabel.Text = "Module Name"; 418 | // 419 | // OrdinalTextBox 420 | // 421 | this.OrdinalTextBox.Location = new System.Drawing.Point(136, 66); 422 | this.OrdinalTextBox.Name = "OrdinalTextBox"; 423 | this.OrdinalTextBox.Size = new System.Drawing.Size(264, 26); 424 | this.OrdinalTextBox.TabIndex = 1; 425 | // 426 | // ModuleNameTextBox 427 | // 428 | this.ModuleNameTextBox.Location = new System.Drawing.Point(136, 26); 429 | this.ModuleNameTextBox.Name = "ModuleNameTextBox"; 430 | this.ModuleNameTextBox.Size = new System.Drawing.Size(264, 26); 431 | this.ModuleNameTextBox.TabIndex = 0; 432 | // 433 | // Param8CheckBox 434 | // 435 | this.Param8CheckBox.AutoSize = true; 436 | this.Param8CheckBox.Location = new System.Drawing.Point(704, 292); 437 | this.Param8CheckBox.Name = "Param8CheckBox"; 438 | this.Param8CheckBox.Size = new System.Drawing.Size(151, 24); 439 | this.Param8CheckBox.TabIndex = 23; 440 | this.Param8CheckBox.Text = "Send Parameter"; 441 | this.Param8CheckBox.UseVisualStyleBackColor = true; 442 | // 443 | // Param7CheckBox 444 | // 445 | this.Param7CheckBox.AutoSize = true; 446 | this.Param7CheckBox.Location = new System.Drawing.Point(704, 252); 447 | this.Param7CheckBox.Name = "Param7CheckBox"; 448 | this.Param7CheckBox.Size = new System.Drawing.Size(151, 24); 449 | this.Param7CheckBox.TabIndex = 22; 450 | this.Param7CheckBox.Text = "Send Parameter"; 451 | this.Param7CheckBox.UseVisualStyleBackColor = true; 452 | // 453 | // Param6CheckBox 454 | // 455 | this.Param6CheckBox.AutoSize = true; 456 | this.Param6CheckBox.Location = new System.Drawing.Point(704, 212); 457 | this.Param6CheckBox.Name = "Param6CheckBox"; 458 | this.Param6CheckBox.Size = new System.Drawing.Size(151, 24); 459 | this.Param6CheckBox.TabIndex = 21; 460 | this.Param6CheckBox.Text = "Send Parameter"; 461 | this.Param6CheckBox.UseVisualStyleBackColor = true; 462 | // 463 | // Param5CheckBox 464 | // 465 | this.Param5CheckBox.AutoSize = true; 466 | this.Param5CheckBox.Location = new System.Drawing.Point(704, 172); 467 | this.Param5CheckBox.Name = "Param5CheckBox"; 468 | this.Param5CheckBox.Size = new System.Drawing.Size(151, 24); 469 | this.Param5CheckBox.TabIndex = 20; 470 | this.Param5CheckBox.Text = "Send Parameter"; 471 | this.Param5CheckBox.UseVisualStyleBackColor = true; 472 | // 473 | // Param4CheckBox 474 | // 475 | this.Param4CheckBox.AutoSize = true; 476 | this.Param4CheckBox.Location = new System.Drawing.Point(704, 132); 477 | this.Param4CheckBox.Name = "Param4CheckBox"; 478 | this.Param4CheckBox.Size = new System.Drawing.Size(151, 24); 479 | this.Param4CheckBox.TabIndex = 19; 480 | this.Param4CheckBox.Text = "Send Parameter"; 481 | this.Param4CheckBox.UseVisualStyleBackColor = true; 482 | // 483 | // Param3CheckBox 484 | // 485 | this.Param3CheckBox.AutoSize = true; 486 | this.Param3CheckBox.Location = new System.Drawing.Point(704, 92); 487 | this.Param3CheckBox.Name = "Param3CheckBox"; 488 | this.Param3CheckBox.Size = new System.Drawing.Size(151, 24); 489 | this.Param3CheckBox.TabIndex = 18; 490 | this.Param3CheckBox.Text = "Send Parameter"; 491 | this.Param3CheckBox.UseVisualStyleBackColor = true; 492 | // 493 | // Param2CheckBox 494 | // 495 | this.Param2CheckBox.AutoSize = true; 496 | this.Param2CheckBox.Location = new System.Drawing.Point(704, 52); 497 | this.Param2CheckBox.Name = "Param2CheckBox"; 498 | this.Param2CheckBox.Size = new System.Drawing.Size(151, 24); 499 | this.Param2CheckBox.TabIndex = 17; 500 | this.Param2CheckBox.Text = "Send Parameter"; 501 | this.Param2CheckBox.UseVisualStyleBackColor = true; 502 | // 503 | // Param1CheckBox 504 | // 505 | this.Param1CheckBox.AutoSize = true; 506 | this.Param1CheckBox.Location = new System.Drawing.Point(704, 12); 507 | this.Param1CheckBox.Name = "Param1CheckBox"; 508 | this.Param1CheckBox.Size = new System.Drawing.Size(151, 24); 509 | this.Param1CheckBox.TabIndex = 16; 510 | this.Param1CheckBox.Text = "Send Parameter"; 511 | this.Param1CheckBox.UseVisualStyleBackColor = true; 512 | // 513 | // Param8ComboBox 514 | // 515 | this.Param8ComboBox.FormattingEnabled = true; 516 | this.Param8ComboBox.Items.AddRange(new object[] { 517 | "long", 518 | "string", 519 | "float"}); 520 | this.Param8ComboBox.Location = new System.Drawing.Point(489, 289); 521 | this.Param8ComboBox.Name = "Param8ComboBox"; 522 | this.Param8ComboBox.Size = new System.Drawing.Size(206, 28); 523 | this.Param8ComboBox.TabIndex = 15; 524 | // 525 | // Param7ComboBox 526 | // 527 | this.Param7ComboBox.FormattingEnabled = true; 528 | this.Param7ComboBox.Items.AddRange(new object[] { 529 | "long", 530 | "string", 531 | "float"}); 532 | this.Param7ComboBox.Location = new System.Drawing.Point(489, 249); 533 | this.Param7ComboBox.Name = "Param7ComboBox"; 534 | this.Param7ComboBox.Size = new System.Drawing.Size(206, 28); 535 | this.Param7ComboBox.TabIndex = 14; 536 | // 537 | // Param6ComboBox 538 | // 539 | this.Param6ComboBox.FormattingEnabled = true; 540 | this.Param6ComboBox.Items.AddRange(new object[] { 541 | "long", 542 | "string", 543 | "float"}); 544 | this.Param6ComboBox.Location = new System.Drawing.Point(489, 209); 545 | this.Param6ComboBox.Name = "Param6ComboBox"; 546 | this.Param6ComboBox.Size = new System.Drawing.Size(206, 28); 547 | this.Param6ComboBox.TabIndex = 13; 548 | // 549 | // Param5ComboBox 550 | // 551 | this.Param5ComboBox.FormattingEnabled = true; 552 | this.Param5ComboBox.Items.AddRange(new object[] { 553 | "long", 554 | "string", 555 | "float"}); 556 | this.Param5ComboBox.Location = new System.Drawing.Point(489, 169); 557 | this.Param5ComboBox.Name = "Param5ComboBox"; 558 | this.Param5ComboBox.Size = new System.Drawing.Size(206, 28); 559 | this.Param5ComboBox.TabIndex = 12; 560 | // 561 | // Param4ComboBox 562 | // 563 | this.Param4ComboBox.FormattingEnabled = true; 564 | this.Param4ComboBox.Items.AddRange(new object[] { 565 | "long", 566 | "string", 567 | "float"}); 568 | this.Param4ComboBox.Location = new System.Drawing.Point(489, 129); 569 | this.Param4ComboBox.Name = "Param4ComboBox"; 570 | this.Param4ComboBox.Size = new System.Drawing.Size(206, 28); 571 | this.Param4ComboBox.TabIndex = 11; 572 | // 573 | // Param3ComboBox 574 | // 575 | this.Param3ComboBox.FormattingEnabled = true; 576 | this.Param3ComboBox.Items.AddRange(new object[] { 577 | "long", 578 | "string", 579 | "float"}); 580 | this.Param3ComboBox.Location = new System.Drawing.Point(489, 89); 581 | this.Param3ComboBox.Name = "Param3ComboBox"; 582 | this.Param3ComboBox.Size = new System.Drawing.Size(206, 28); 583 | this.Param3ComboBox.TabIndex = 10; 584 | // 585 | // Param2ComboBox 586 | // 587 | this.Param2ComboBox.FormattingEnabled = true; 588 | this.Param2ComboBox.Items.AddRange(new object[] { 589 | "long", 590 | "string", 591 | "float"}); 592 | this.Param2ComboBox.Location = new System.Drawing.Point(489, 49); 593 | this.Param2ComboBox.Name = "Param2ComboBox"; 594 | this.Param2ComboBox.Size = new System.Drawing.Size(206, 28); 595 | this.Param2ComboBox.TabIndex = 9; 596 | // 597 | // Param1ComboBox 598 | // 599 | this.Param1ComboBox.FormattingEnabled = true; 600 | this.Param1ComboBox.Items.AddRange(new object[] { 601 | "long", 602 | "string", 603 | "float"}); 604 | this.Param1ComboBox.Location = new System.Drawing.Point(489, 9); 605 | this.Param1ComboBox.Name = "Param1ComboBox"; 606 | this.Param1ComboBox.Size = new System.Drawing.Size(206, 28); 607 | this.Param1ComboBox.TabIndex = 8; 608 | // 609 | // Param8TextBox 610 | // 611 | this.Param8TextBox.Location = new System.Drawing.Point(6, 289); 612 | this.Param8TextBox.Name = "Param8TextBox"; 613 | this.Param8TextBox.Size = new System.Drawing.Size(476, 26); 614 | this.Param8TextBox.TabIndex = 7; 615 | // 616 | // Param7TextBox 617 | // 618 | this.Param7TextBox.Location = new System.Drawing.Point(6, 249); 619 | this.Param7TextBox.Name = "Param7TextBox"; 620 | this.Param7TextBox.Size = new System.Drawing.Size(476, 26); 621 | this.Param7TextBox.TabIndex = 6; 622 | // 623 | // Param6TextBox 624 | // 625 | this.Param6TextBox.Location = new System.Drawing.Point(6, 209); 626 | this.Param6TextBox.Name = "Param6TextBox"; 627 | this.Param6TextBox.Size = new System.Drawing.Size(476, 26); 628 | this.Param6TextBox.TabIndex = 5; 629 | // 630 | // Param5TextBox 631 | // 632 | this.Param5TextBox.Location = new System.Drawing.Point(6, 169); 633 | this.Param5TextBox.Name = "Param5TextBox"; 634 | this.Param5TextBox.Size = new System.Drawing.Size(476, 26); 635 | this.Param5TextBox.TabIndex = 4; 636 | // 637 | // Param4TextBox 638 | // 639 | this.Param4TextBox.Location = new System.Drawing.Point(6, 129); 640 | this.Param4TextBox.Name = "Param4TextBox"; 641 | this.Param4TextBox.Size = new System.Drawing.Size(476, 26); 642 | this.Param4TextBox.TabIndex = 3; 643 | // 644 | // Param3TextBox 645 | // 646 | this.Param3TextBox.Location = new System.Drawing.Point(6, 89); 647 | this.Param3TextBox.Name = "Param3TextBox"; 648 | this.Param3TextBox.Size = new System.Drawing.Size(476, 26); 649 | this.Param3TextBox.TabIndex = 2; 650 | // 651 | // Param2TextBox 652 | // 653 | this.Param2TextBox.Location = new System.Drawing.Point(6, 49); 654 | this.Param2TextBox.Name = "Param2TextBox"; 655 | this.Param2TextBox.Size = new System.Drawing.Size(476, 26); 656 | this.Param2TextBox.TabIndex = 1; 657 | // 658 | // Param1TextBox 659 | // 660 | this.Param1TextBox.Location = new System.Drawing.Point(6, 9); 661 | this.Param1TextBox.Name = "Param1TextBox"; 662 | this.Param1TextBox.Size = new System.Drawing.Size(476, 26); 663 | this.Param1TextBox.TabIndex = 0; 664 | // 665 | // PPCTab 666 | // 667 | this.PPCTab.Controls.Add(this.InjectionAddressTextBox); 668 | this.PPCTab.Controls.Add(this.InjectCodeButton); 669 | this.PPCTab.Controls.Add(this.CompileInstructionsButton); 670 | this.PPCTab.Controls.Add(this.BinaryTextBox); 671 | this.PPCTab.Controls.Add(this.InstructionsTextBox); 672 | this.PPCTab.Location = new System.Drawing.Point(4, 29); 673 | this.PPCTab.Name = "PPCTab"; 674 | this.PPCTab.Padding = new System.Windows.Forms.Padding(3); 675 | this.PPCTab.Size = new System.Drawing.Size(860, 595); 676 | this.PPCTab.TabIndex = 2; 677 | this.PPCTab.Text = "PowerPC"; 678 | this.PPCTab.UseVisualStyleBackColor = true; 679 | // 680 | // InjectionAddressTextBox 681 | // 682 | this.InjectionAddressTextBox.Location = new System.Drawing.Point(394, 511); 683 | this.InjectionAddressTextBox.Name = "InjectionAddressTextBox"; 684 | this.InjectionAddressTextBox.Size = new System.Drawing.Size(450, 26); 685 | this.InjectionAddressTextBox.TabIndex = 4; 686 | this.InjectionAddressTextBox.Text = "0x0"; 687 | // 688 | // InjectCodeButton 689 | // 690 | this.InjectCodeButton.Location = new System.Drawing.Point(394, 552); 691 | this.InjectCodeButton.Name = "InjectCodeButton"; 692 | this.InjectCodeButton.Size = new System.Drawing.Size(450, 35); 693 | this.InjectCodeButton.TabIndex = 3; 694 | this.InjectCodeButton.Text = "Inject PPC"; 695 | this.InjectCodeButton.UseVisualStyleBackColor = true; 696 | this.InjectCodeButton.Click += new System.EventHandler(this.InjectCodeButton_Click); 697 | // 698 | // CompileInstructionsButton 699 | // 700 | this.CompileInstructionsButton.Location = new System.Drawing.Point(15, 552); 701 | this.CompileInstructionsButton.Name = "CompileInstructionsButton"; 702 | this.CompileInstructionsButton.Size = new System.Drawing.Size(364, 35); 703 | this.CompileInstructionsButton.TabIndex = 2; 704 | this.CompileInstructionsButton.Text = "Compile"; 705 | this.CompileInstructionsButton.UseVisualStyleBackColor = true; 706 | this.CompileInstructionsButton.Click += new System.EventHandler(this.CompileInstructionsButton_Click); 707 | // 708 | // BinaryTextBox 709 | // 710 | this.BinaryTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 711 | this.BinaryTextBox.Location = new System.Drawing.Point(394, 15); 712 | this.BinaryTextBox.Name = "BinaryTextBox"; 713 | this.BinaryTextBox.Size = new System.Drawing.Size(450, 478); 714 | this.BinaryTextBox.TabIndex = 1; 715 | this.BinaryTextBox.Text = ""; 716 | // 717 | // InstructionsTextBox 718 | // 719 | this.InstructionsTextBox.Font = new System.Drawing.Font("Microsoft Sans Serif", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 720 | this.InstructionsTextBox.Location = new System.Drawing.Point(15, 15); 721 | this.InstructionsTextBox.Name = "InstructionsTextBox"; 722 | this.InstructionsTextBox.Size = new System.Drawing.Size(364, 532); 723 | this.InstructionsTextBox.TabIndex = 0; 724 | this.InstructionsTextBox.Text = ""; 725 | // 726 | // MemoryTab 727 | // 728 | this.MemoryTab.Controls.Add(this.PokeMemoryButton); 729 | this.MemoryTab.Controls.Add(this.PeekMemoryButton); 730 | this.MemoryTab.Controls.Add(this.MemorySizeLabel); 731 | this.MemoryTab.Controls.Add(this.MemorySizeTextBox); 732 | this.MemoryTab.Controls.Add(this.MemoryAddressLabel); 733 | this.MemoryTab.Controls.Add(this.MemoryAddressTextBox); 734 | this.MemoryTab.Controls.Add(this.MemoryViewHexBox); 735 | this.MemoryTab.Location = new System.Drawing.Point(4, 29); 736 | this.MemoryTab.Name = "MemoryTab"; 737 | this.MemoryTab.Padding = new System.Windows.Forms.Padding(3); 738 | this.MemoryTab.Size = new System.Drawing.Size(860, 595); 739 | this.MemoryTab.TabIndex = 3; 740 | this.MemoryTab.Text = "Memory"; 741 | this.MemoryTab.UseVisualStyleBackColor = true; 742 | // 743 | // CPUKeyLabel 744 | // 745 | this.CPUKeyLabel.AutoSize = true; 746 | this.CPUKeyLabel.Location = new System.Drawing.Point(99, 109); 747 | this.CPUKeyLabel.Name = "CPUKeyLabel"; 748 | this.CPUKeyLabel.Size = new System.Drawing.Size(297, 20); 749 | this.CPUKeyLabel.TabIndex = 5; 750 | this.CPUKeyLabel.Text = "00000000000000000000000000000000"; 751 | this.CPUKeyLabel.Click += new System.EventHandler(this.CPUKeyLabel_Click); 752 | // 753 | // TitleIDLabel 754 | // 755 | this.TitleIDLabel.Location = new System.Drawing.Point(537, 78); 756 | this.TitleIDLabel.Name = "TitleIDLabel"; 757 | this.TitleIDLabel.Size = new System.Drawing.Size(340, 20); 758 | this.TitleIDLabel.TabIndex = 6; 759 | this.TitleIDLabel.Text = "Current Title ID: 0x00000000"; 760 | this.TitleIDLabel.TextAlign = System.Drawing.ContentAlignment.TopRight; 761 | // 762 | // CPUKeyHeaderLabel 763 | // 764 | this.CPUKeyHeaderLabel.AutoSize = true; 765 | this.CPUKeyHeaderLabel.Location = new System.Drawing.Point(16, 108); 766 | this.CPUKeyHeaderLabel.Name = "CPUKeyHeaderLabel"; 767 | this.CPUKeyHeaderLabel.Size = new System.Drawing.Size(76, 20); 768 | this.CPUKeyHeaderLabel.TabIndex = 7; 769 | this.CPUKeyHeaderLabel.Text = "CPU Key:"; 770 | // 771 | // ConnectionStatusLabel 772 | // 773 | this.ConnectionStatusLabel.AutoSize = true; 774 | this.ConnectionStatusLabel.Location = new System.Drawing.Point(16, 78); 775 | this.ConnectionStatusLabel.Name = "ConnectionStatusLabel"; 776 | this.ConnectionStatusLabel.Size = new System.Drawing.Size(116, 20); 777 | this.ConnectionStatusLabel.TabIndex = 8; 778 | this.ConnectionStatusLabel.Text = "Not Connected"; 779 | // 780 | // ConsoleDebugIPLabel 781 | // 782 | this.ConsoleDebugIPLabel.Location = new System.Drawing.Point(498, 108); 783 | this.ConsoleDebugIPLabel.Name = "ConsoleDebugIPLabel"; 784 | this.ConsoleDebugIPLabel.Size = new System.Drawing.Size(380, 22); 785 | this.ConsoleDebugIPLabel.TabIndex = 9; 786 | this.ConsoleDebugIPLabel.Text = "Console Debug IP: 192.168.1.1"; 787 | this.ConsoleDebugIPLabel.TextAlign = System.Drawing.ContentAlignment.TopRight; 788 | // 789 | // MemoryViewHexBox 790 | // 791 | this.MemoryViewHexBox.ColumnInfoVisible = true; 792 | this.MemoryViewHexBox.Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); 793 | this.MemoryViewHexBox.LineInfoVisible = true; 794 | this.MemoryViewHexBox.Location = new System.Drawing.Point(10, 10); 795 | this.MemoryViewHexBox.Name = "MemoryViewHexBox"; 796 | this.MemoryViewHexBox.ShadowSelectionColor = System.Drawing.Color.FromArgb(((int)(((byte)(100)))), ((int)(((byte)(60)))), ((int)(((byte)(188)))), ((int)(((byte)(255))))); 797 | this.MemoryViewHexBox.Size = new System.Drawing.Size(837, 540); 798 | this.MemoryViewHexBox.StringViewVisible = true; 799 | this.MemoryViewHexBox.TabIndex = 0; 800 | this.MemoryViewHexBox.UseFixedBytesPerLine = true; 801 | this.MemoryViewHexBox.VScrollBarVisible = true; 802 | // 803 | // MemoryAddressTextBox 804 | // 805 | this.MemoryAddressTextBox.Location = new System.Drawing.Point(125, 554); 806 | this.MemoryAddressTextBox.Name = "MemoryAddressTextBox"; 807 | this.MemoryAddressTextBox.Size = new System.Drawing.Size(205, 26); 808 | this.MemoryAddressTextBox.TabIndex = 1; 809 | // 810 | // MemoryAddressLabel 811 | // 812 | this.MemoryAddressLabel.AutoSize = true; 813 | this.MemoryAddressLabel.Location = new System.Drawing.Point(32, 558); 814 | this.MemoryAddressLabel.Name = "MemoryAddressLabel"; 815 | this.MemoryAddressLabel.Size = new System.Drawing.Size(68, 20); 816 | this.MemoryAddressLabel.TabIndex = 2; 817 | this.MemoryAddressLabel.Text = "Address"; 818 | // 819 | // MemorySizeLabel 820 | // 821 | this.MemorySizeLabel.AutoSize = true; 822 | this.MemorySizeLabel.Location = new System.Drawing.Point(355, 558); 823 | this.MemorySizeLabel.Name = "MemorySizeLabel"; 824 | this.MemorySizeLabel.Size = new System.Drawing.Size(40, 20); 825 | this.MemorySizeLabel.TabIndex = 4; 826 | this.MemorySizeLabel.Text = "Size"; 827 | // 828 | // MemorySizeTextBox 829 | // 830 | this.MemorySizeTextBox.Location = new System.Drawing.Point(403, 554); 831 | this.MemorySizeTextBox.Name = "MemorySizeTextBox"; 832 | this.MemorySizeTextBox.Size = new System.Drawing.Size(130, 26); 833 | this.MemorySizeTextBox.TabIndex = 3; 834 | // 835 | // PeekMemoryButton 836 | // 837 | this.PeekMemoryButton.Location = new System.Drawing.Point(563, 553); 838 | this.PeekMemoryButton.Name = "PeekMemoryButton"; 839 | this.PeekMemoryButton.Size = new System.Drawing.Size(129, 34); 840 | this.PeekMemoryButton.TabIndex = 5; 841 | this.PeekMemoryButton.Text = "Peek"; 842 | this.PeekMemoryButton.UseVisualStyleBackColor = true; 843 | this.PeekMemoryButton.Click += new System.EventHandler(this.PeekMemoryButton_Click); 844 | // 845 | // PokeMemoryButton 846 | // 847 | this.PokeMemoryButton.Location = new System.Drawing.Point(713, 553); 848 | this.PokeMemoryButton.Name = "PokeMemoryButton"; 849 | this.PokeMemoryButton.Size = new System.Drawing.Size(129, 34); 850 | this.PokeMemoryButton.TabIndex = 6; 851 | this.PokeMemoryButton.Text = "Poke"; 852 | this.PokeMemoryButton.UseVisualStyleBackColor = true; 853 | this.PokeMemoryButton.Click += new System.EventHandler(this.PokeMemoryButton_Click); 854 | // 855 | // Form1 856 | // 857 | this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); 858 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; 859 | this.ClientSize = new System.Drawing.Size(892, 772); 860 | this.Controls.Add(this.ConsoleDebugIPLabel); 861 | this.Controls.Add(this.ConnectionStatusLabel); 862 | this.Controls.Add(this.CPUKeyHeaderLabel); 863 | this.Controls.Add(this.TitleIDLabel); 864 | this.Controls.Add(this.CPUKeyLabel); 865 | this.Controls.Add(this.MainTabControl); 866 | this.Controls.Add(this.SourceLinkLabel); 867 | this.Controls.Add(this.RebootButton); 868 | this.Controls.Add(this.ConnectButton); 869 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); 870 | this.Name = "Form1"; 871 | this.Text = "Xbox 360 Toolbox by Matrix"; 872 | this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); 873 | this.MainTabControl.ResumeLayout(false); 874 | this.ModuleTab.ResumeLayout(false); 875 | this.ModuleTab.PerformLayout(); 876 | ((System.ComponentModel.ISupportInitialize)(this.dataGridView1)).EndInit(); 877 | this.FunctionsTab.ResumeLayout(false); 878 | this.FunctionsTab.PerformLayout(); 879 | this.groupBox2.ResumeLayout(false); 880 | this.groupBox2.PerformLayout(); 881 | this.groupBox1.ResumeLayout(false); 882 | this.groupBox1.PerformLayout(); 883 | this.PPCTab.ResumeLayout(false); 884 | this.PPCTab.PerformLayout(); 885 | this.MemoryTab.ResumeLayout(false); 886 | this.MemoryTab.PerformLayout(); 887 | this.ResumeLayout(false); 888 | this.PerformLayout(); 889 | 890 | } 891 | 892 | #endregion 893 | 894 | private System.Windows.Forms.Button ConnectButton; 895 | private System.Windows.Forms.Button RebootButton; 896 | private System.Windows.Forms.LinkLabel SourceLinkLabel; 897 | private System.Windows.Forms.TabControl MainTabControl; 898 | private System.Windows.Forms.TabPage ModuleTab; 899 | private System.Windows.Forms.TabPage FunctionsTab; 900 | private System.Windows.Forms.Label CPUKeyLabel; 901 | private System.Windows.Forms.Label TitleIDLabel; 902 | private System.Windows.Forms.TabPage PPCTab; 903 | private System.Windows.Forms.TabPage MemoryTab; 904 | private System.Windows.Forms.DataGridView dataGridView1; 905 | private System.Windows.Forms.Button LoadModuleButton; 906 | private System.Windows.Forms.TextBox ModulePathTextBox; 907 | private System.Windows.Forms.Button RefreshModulesButton; 908 | private System.Windows.Forms.Label CPUKeyHeaderLabel; 909 | private System.Windows.Forms.DataGridViewTextBoxColumn ModuleColumn; 910 | private System.Windows.Forms.DataGridViewTextBoxColumn BaseAddressColumn; 911 | private System.Windows.Forms.DataGridViewTextBoxColumn SizeColumn; 912 | private System.Windows.Forms.DataGridViewButtonColumn UnloadColumn; 913 | private System.Windows.Forms.Label ConnectionStatusLabel; 914 | private System.Windows.Forms.Label ConsoleDebugIPLabel; 915 | private System.Windows.Forms.RichTextBox BinaryTextBox; 916 | private System.Windows.Forms.RichTextBox InstructionsTextBox; 917 | private System.Windows.Forms.TextBox InjectionAddressTextBox; 918 | private System.Windows.Forms.Button InjectCodeButton; 919 | private System.Windows.Forms.Button CompileInstructionsButton; 920 | private System.Windows.Forms.ComboBox Param8ComboBox; 921 | private System.Windows.Forms.ComboBox Param7ComboBox; 922 | private System.Windows.Forms.ComboBox Param6ComboBox; 923 | private System.Windows.Forms.ComboBox Param5ComboBox; 924 | private System.Windows.Forms.ComboBox Param4ComboBox; 925 | private System.Windows.Forms.ComboBox Param3ComboBox; 926 | private System.Windows.Forms.ComboBox Param2ComboBox; 927 | private System.Windows.Forms.ComboBox Param1ComboBox; 928 | private System.Windows.Forms.TextBox Param8TextBox; 929 | private System.Windows.Forms.TextBox Param7TextBox; 930 | private System.Windows.Forms.TextBox Param6TextBox; 931 | private System.Windows.Forms.TextBox Param5TextBox; 932 | private System.Windows.Forms.TextBox Param4TextBox; 933 | private System.Windows.Forms.TextBox Param3TextBox; 934 | private System.Windows.Forms.TextBox Param2TextBox; 935 | private System.Windows.Forms.TextBox Param1TextBox; 936 | private System.Windows.Forms.CheckBox Param8CheckBox; 937 | private System.Windows.Forms.CheckBox Param7CheckBox; 938 | private System.Windows.Forms.CheckBox Param6CheckBox; 939 | private System.Windows.Forms.CheckBox Param5CheckBox; 940 | private System.Windows.Forms.CheckBox Param4CheckBox; 941 | private System.Windows.Forms.CheckBox Param3CheckBox; 942 | private System.Windows.Forms.CheckBox Param2CheckBox; 943 | private System.Windows.Forms.CheckBox Param1CheckBox; 944 | private System.Windows.Forms.GroupBox groupBox2; 945 | private System.Windows.Forms.GroupBox groupBox1; 946 | private System.Windows.Forms.TextBox ModuleNameTextBox; 947 | private System.Windows.Forms.Label ModuleNameLabel; 948 | private System.Windows.Forms.TextBox OrdinalTextBox; 949 | private System.Windows.Forms.Label OrdinalLabel; 950 | private System.Windows.Forms.TextBox ByOridinalReturnValueTextBox; 951 | private System.Windows.Forms.Button CallByOrdinalButton; 952 | private System.Windows.Forms.ComboBox CallByOrdinalReturnTypeComboBox; 953 | private System.Windows.Forms.Label ByOrdinalReturnLabel; 954 | private System.Windows.Forms.TextBox CallAddressTextBox; 955 | private System.Windows.Forms.Label label1; 956 | private System.Windows.Forms.TextBox CallAddressReturnTextBox; 957 | private System.Windows.Forms.Button CallFunctionButton; 958 | private System.Windows.Forms.ComboBox CallByAddressReturnType; 959 | private System.Windows.Forms.Label label2; 960 | private Be.Windows.Forms.HexBox MemoryViewHexBox; 961 | private System.Windows.Forms.Label MemorySizeLabel; 962 | private System.Windows.Forms.TextBox MemorySizeTextBox; 963 | private System.Windows.Forms.Label MemoryAddressLabel; 964 | private System.Windows.Forms.TextBox MemoryAddressTextBox; 965 | private System.Windows.Forms.Button PokeMemoryButton; 966 | private System.Windows.Forms.Button PeekMemoryButton; 967 | } 968 | } 969 | 970 | -------------------------------------------------------------------------------- /Xbox Toolbox/Form1.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.IO; 3 | using System.Linq; 4 | using System.Diagnostics; 5 | using System.Windows.Forms; 6 | 7 | using XDevkit; 8 | using Be.Windows.Forms; 9 | using Microsoft.Test.Xbox.XDRPC; 10 | 11 | namespace Xbox_Toolbox { 12 | public partial class Form1 : Form { 13 | public IXboxManager xbManager = null; 14 | public IXboxConsole xbCon = null; 15 | 16 | public bool activeConnection = false; 17 | public uint xboxConnection = 0; 18 | 19 | private string debuggerName = null; 20 | private string userName = null; 21 | 22 | public uint outBytes = 0; 23 | 24 | private static byte[] MemoryData = null; 25 | 26 | public Form1() { 27 | InitializeComponent(); 28 | 29 | ModulePathTextBox.Text = Properties.Settings.Default.ModulePath; 30 | InstructionsTextBox.Text = Properties.Settings.Default.PPC; 31 | BinaryTextBox.Text = Properties.Settings.Default.OpCodes; 32 | InjectionAddressTextBox.Text = Properties.Settings.Default.InjectAddress; 33 | MemoryAddressTextBox.Text = Properties.Settings.Default.MemAddress; 34 | MemorySizeTextBox.Text = Properties.Settings.Default.MemSize; 35 | 36 | MemoryViewHexBox.ByteProvider = new DynamicByteProvider(new byte[0x1000]); 37 | } 38 | 39 | private void Form1_FormClosing(object sender, FormClosingEventArgs e) { 40 | Properties.Settings.Default.ModulePath = ModulePathTextBox.Text; 41 | Properties.Settings.Default.PPC = InstructionsTextBox.Text; 42 | Properties.Settings.Default.OpCodes = BinaryTextBox.Text; 43 | Properties.Settings.Default.InjectAddress = InjectionAddressTextBox.Text; 44 | Properties.Settings.Default.MemAddress = MemoryAddressTextBox.Text; 45 | Properties.Settings.Default.MemSize = MemorySizeTextBox.Text; 46 | Properties.Settings.Default.Save(); 47 | } 48 | 49 | private void CPUKeyLabel_Click(object sender, EventArgs e) { 50 | CPUKeyLabel.Focus(); 51 | } 52 | 53 | private void MainTabControl_KeyDown(object sender, KeyEventArgs e) { 54 | if (CPUKeyLabel.ContainsFocus && e.Control && e.KeyCode == Keys.C) 55 | Clipboard.SetText(CPUKeyLabel.Text); 56 | } 57 | 58 | public bool ConnectToConsole() { 59 | if (!this.activeConnection) { 60 | this.xbManager = new XboxManager(); 61 | this.xbCon = this.xbManager.OpenConsole(this.xbManager.DefaultConsole); 62 | 63 | try { 64 | this.xboxConnection = this.xbCon.OpenConnection(null); 65 | } 66 | catch (Exception) { 67 | ConnectionStatusLabel.Text = "Could not connect to console: " + this.xbManager.DefaultConsole; 68 | return false; 69 | } 70 | if (this.xbCon.DebugTarget.IsDebuggerConnected(out this.debuggerName, out this.userName)) { 71 | this.activeConnection = true; 72 | ConnectionStatusLabel.Text = "Connection to " + xbCon.Name + " established!"; 73 | return true; 74 | } 75 | else { 76 | this.xbCon.DebugTarget.ConnectAsDebugger("Xbox Toolbox", XboxDebugConnectFlags.Force); 77 | if (!this.xbCon.DebugTarget.IsDebuggerConnected(out this.debuggerName, out this.userName)) { 78 | ConnectionStatusLabel.Text = "Attempted to connect to console: " + xbCon.Name + " but failed"; 79 | return false; 80 | } 81 | else { 82 | this.activeConnection = true; 83 | ConnectionStatusLabel.Text = "Connection to " + xbCon.Name + " established!"; 84 | return true; 85 | } 86 | } 87 | } 88 | else if (this.xbCon.DebugTarget.IsDebuggerConnected(out this.debuggerName, out this.userName)) { 89 | ConnectionStatusLabel.Text = "Connection to " + xbCon.Name + " already established!"; 90 | return true; 91 | } 92 | else { 93 | this.activeConnection = false; 94 | return ConnectToConsole(); 95 | } 96 | } 97 | 98 | private void ConnectButton_Click(object sender, EventArgs e) { 99 | if(ConnectToConsole()) { 100 | CPUKeyLabel.Text = xbCon.GetCPUKey(); 101 | TitleIDLabel.Text = String.Format("Current Title ID: 0x{0}", xbCon.GetCurrentTitleId().ToString("X")); 102 | ConsoleDebugIPLabel.Text = String.Format("Console Debug IP: {0}", xbCon.GetConsoleIP()); 103 | 104 | //XBOX_AUTOMATION_GAMEPAD gPad = new XBOX_AUTOMATION_GAMEPAD(); 105 | //gPad.Buttons = XboxAutomationButtonFlags.Xbox360_Button; 106 | // 107 | //xbCon.XboxAutomation.SetGamepadState(0, ref gPad); 108 | // 109 | //gPad.Buttons = 0; 110 | //xbCon.XboxAutomation.SetGamepadState(0, ref gPad); 111 | } 112 | else { 113 | CPUKeyLabel.Text = "00000000000000000000000000000000"; 114 | TitleIDLabel.Text = "Current Title ID: 0x00000000"; 115 | ConsoleDebugIPLabel.Text = "Console Debug IP: 192.168.1.1"; 116 | } 117 | } 118 | 119 | private void RebootButton_Click(object sender, EventArgs e) { 120 | try { 121 | xbCon.Reboot(); 122 | } 123 | catch { 124 | ConnectionStatusLabel.Text = "Unable to reach console"; 125 | } 126 | } 127 | 128 | private void RefreshModulesButton_Click(object sender, EventArgs e) { 129 | dataGridView1.Rows.Clear(); 130 | 131 | foreach(IXboxModule module in xbCon.DebugTarget.Modules) { 132 | string name = module.ModuleInfo.Name; 133 | string addr = "0x" + module.ModuleInfo.BaseAddress.ToString("X"); 134 | string size = "0x" + module.ModuleInfo.Size.ToString("X"); 135 | 136 | dataGridView1.Rows.Add(name, addr, size, null); 137 | } 138 | 139 | dataGridView1.Sort(dataGridView1.Columns[1], System.ComponentModel.ListSortDirection.Ascending); 140 | } 141 | 142 | private void LoadModuleButton_Click(object sender, EventArgs e) { 143 | xbCon.LoadModule(ModulePathTextBox.Text); 144 | 145 | RefreshModulesButton_Click(sender, e); 146 | } 147 | 148 | private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { 149 | var senderGrid = (DataGridView)sender; 150 | if (senderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0) { 151 | string module = senderGrid.Rows[e.RowIndex].Cells[0].Value.ToString(); 152 | xbCon.UnloadModule(module); 153 | 154 | RefreshModulesButton_Click(sender, null); 155 | } 156 | } 157 | 158 | private string[] CleanInstructions(string[] lines) { 159 | for (int i = 0; i < lines.Length; i++) { 160 | string line = lines[i]; 161 | if (line.EndsWith(";", StringComparison.CurrentCultureIgnoreCase)) 162 | line = line.Substring(0, line.IndexOf(";", StringComparison.CurrentCultureIgnoreCase)); 163 | 164 | if (line.StartsWith("//")) 165 | line = string.Empty; 166 | 167 | lines[i] = line; 168 | } 169 | 170 | return lines; 171 | } 172 | 173 | private void CompileInstructionsButton_Click(object sender, EventArgs e) { 174 | string[] instructions = CleanInstructions(InstructionsTextBox.Lines); 175 | 176 | File.WriteAllLines(@"PPC/assembly.s", instructions); 177 | 178 | Process process = Process.Start(new ProcessStartInfo(@"PPC\\\\buildppc.bat") { 179 | WindowStyle = ProcessWindowStyle.Hidden, 180 | CreateNoWindow = true 181 | }); 182 | process.WaitForExit(); 183 | 184 | File.WriteAllText(@"PPC/assembly.s", InstructionsTextBox.Text); 185 | File.Delete(@"PPC/assembly.bin"); 186 | File.Move(@"a.out", @"PPC/assembly.bin"); 187 | 188 | BinaryTextBox.Text = BitConverter.ToString(File.ReadAllBytes(@"PPC/assembly.bin")).Replace('-', ' '); 189 | } 190 | 191 | public static byte[] StringToByteArray(string hex) { 192 | return (from x in Enumerable.Range(0, hex.Length) where x % 2 == 0 193 | select Convert.ToByte(hex.Substring(x, 2), 16)).ToArray(); 194 | } 195 | 196 | private void InjectCodeButton_Click(object sender, EventArgs e) { 197 | uint offset = Convert.ToUInt32(InjectionAddressTextBox.Text.StartsWith("0x", StringComparison.CurrentCultureIgnoreCase) ? InjectionAddressTextBox.Text.Substring(2) : InjectionAddressTextBox.Text, 16); 198 | byte[] buffer = StringToByteArray(BinaryTextBox.Text.Replace(" ", "")); 199 | xbCon.WriteBytes(offset, buffer); 200 | } 201 | 202 | private object[] GetParameters() { 203 | object[] parameters = new object[8]; 204 | for (int i = 0; i < parameters.Length; i++) 205 | parameters[i] = 0; 206 | 207 | if(Param1CheckBox.Checked) 208 | parameters[0] = Param1ComboBox.SelectedIndex == 0 ? Convert.ToUInt64(Param1ComboBox.Text) : Param1ComboBox.SelectedIndex == 1 ? Param1ComboBox.Text : (object)Convert.ToSingle(Param1ComboBox.Text); 209 | if (Param2CheckBox.Checked) 210 | parameters[1] = Param2ComboBox.SelectedIndex == 0 ? Convert.ToUInt64(Param2ComboBox.Text) : Param2ComboBox.SelectedIndex == 1 ? Param2ComboBox.Text : (object)Convert.ToSingle(Param2ComboBox.Text); 211 | if (Param3CheckBox.Checked) 212 | parameters[2] = Param3ComboBox.SelectedIndex == 0 ? Convert.ToUInt64(Param3ComboBox.Text) : Param3ComboBox.SelectedIndex == 1 ? Param3ComboBox.Text : (object)Convert.ToSingle(Param3ComboBox.Text); 213 | if (Param4CheckBox.Checked) 214 | parameters[3] = Param4ComboBox.SelectedIndex == 0 ? Convert.ToUInt64(Param4ComboBox.Text) : Param4ComboBox.SelectedIndex == 1 ? Param4ComboBox.Text : (object)Convert.ToSingle(Param4ComboBox.Text); 215 | if (Param5CheckBox.Checked) 216 | parameters[4] = Param5ComboBox.SelectedIndex == 0 ? Convert.ToUInt64(Param5ComboBox.Text) : Param5ComboBox.SelectedIndex == 1 ? Param5ComboBox.Text : (object)Convert.ToSingle(Param5ComboBox.Text); 217 | if (Param6CheckBox.Checked) 218 | parameters[5] = Param6ComboBox.SelectedIndex == 0 ? Convert.ToUInt64(Param6ComboBox.Text) : Param6ComboBox.SelectedIndex == 1 ? Param6ComboBox.Text : (object)Convert.ToSingle(Param6ComboBox.Text); 219 | if (Param7CheckBox.Checked) 220 | parameters[6] = Param7ComboBox.SelectedIndex == 0 ? Convert.ToUInt64(Param7ComboBox.Text) : Param7ComboBox.SelectedIndex == 1 ? Param7ComboBox.Text : (object)Convert.ToSingle(Param7ComboBox.Text); 221 | if (Param8CheckBox.Checked) 222 | parameters[7] = Param8ComboBox.SelectedIndex == 0 ? Convert.ToUInt64(Param8ComboBox.Text) : Param8ComboBox.SelectedIndex == 1 ? Param8ComboBox.Text : (object)Convert.ToSingle(Param8ComboBox.Text); 223 | 224 | return parameters; 225 | } 226 | 227 | private void CallByOrdinalButton_Click(object sender, EventArgs e) { 228 | if(ModuleNameTextBox.Text.Equals(string.Empty) || OrdinalTextBox.Text.Equals(string.Empty)) { 229 | MessageBox.Show("Error", "Please enter a module name and ordinal value!"); 230 | return; 231 | } 232 | 233 | string moduleName = ModuleNameTextBox.Text; 234 | int ordinalNumber = OrdinalTextBox.Text.Contains("0x") ? Convert.ToInt32(OrdinalTextBox.Text, 16) : Convert.ToInt32(OrdinalTextBox.Text, 10); 235 | 236 | if(CallByOrdinalReturnTypeComboBox.Text.Equals(string.Empty)) { 237 | MessageBox.Show("Error", "Please select a return type before calling the function!"); 238 | return; 239 | } 240 | 241 | try { 242 | if (CallByOrdinalReturnTypeComboBox.SelectedIndex == 0) { 243 | xbCon.ExecuteRPC(XDRPCMode.System, moduleName, ordinalNumber, GetParameters()); 244 | ByOridinalReturnValueTextBox.Text = "No Return"; 245 | } 246 | else if (CallByOrdinalReturnTypeComboBox.SelectedIndex == 1) { 247 | Int64 returnVal = xbCon.ExecuteRPC(XDRPCMode.System, moduleName, ordinalNumber, GetParameters()); 248 | ByOridinalReturnValueTextBox.Text = "0x" + returnVal.ToString("X"); 249 | } 250 | else if (CallByOrdinalReturnTypeComboBox.SelectedIndex == 2) { 251 | string returnVal = xbCon.CallString(moduleName, ordinalNumber, GetParameters()); 252 | ByOridinalReturnValueTextBox.Text = returnVal; 253 | } 254 | else if (CallByOrdinalReturnTypeComboBox.SelectedIndex == 3) { 255 | float returnVal = xbCon.ExecuteRPC(XDRPCMode.System, moduleName, ordinalNumber, GetParameters()); 256 | ByOridinalReturnValueTextBox.Text = returnVal.ToString(); 257 | } 258 | } 259 | catch { 260 | MessageBox.Show("Error", "Make sure you have set values and types for all parameters being used!"); 261 | } 262 | } 263 | 264 | private void CallFunctionButton_Click(object sender, EventArgs e) { 265 | if (CallAddressTextBox.Text.Equals(string.Empty)) { 266 | MessageBox.Show("Error", "Please enter the address of the function to call!"); 267 | return; 268 | } 269 | 270 | UInt32 CallAddress = Convert.ToUInt32(CallAddressTextBox.Text, 16); 271 | 272 | if (CallByAddressReturnType.Text.Equals(string.Empty)) { 273 | MessageBox.Show("Error", "Please select a return type before calling the function!"); 274 | return; 275 | } 276 | 277 | try { 278 | if(CallByAddressReturnType.SelectedIndex == 0) { 279 | xbCon.ExecuteRPC(new XDRPCExecutionOptions(XDRPCMode.Title, CallAddress), GetParameters()); 280 | CallAddressReturnTextBox.Text = "No Return"; 281 | } 282 | else if (CallByAddressReturnType.SelectedIndex == 1) { 283 | Int64 returnVal = xbCon.ExecuteRPC(new XDRPCExecutionOptions(XDRPCMode.Title, CallAddress), GetParameters()); 284 | CallAddressReturnTextBox.Text = "0x" + returnVal.ToString("X"); 285 | } 286 | else if (CallByAddressReturnType.SelectedIndex == 2) { 287 | string returnVal = xbCon.CallString(CallAddress, GetParameters()); 288 | CallAddressReturnTextBox.Text = returnVal; 289 | } 290 | else if (CallByAddressReturnType.SelectedIndex == 3) { 291 | float returnVal = xbCon.ExecuteRPC(new XDRPCExecutionOptions(XDRPCMode.Title, CallAddress), GetParameters()); 292 | CallAddressReturnTextBox.Text = returnVal.ToString(); 293 | } 294 | } 295 | catch { 296 | MessageBox.Show("Error", "Make sure you have set values and types for all parameters being used!"); 297 | } 298 | } 299 | 300 | private void PeekMemoryButton_Click(object sender, EventArgs e) { 301 | if(MemoryAddressTextBox.Text.Equals(string.Empty) || MemorySizeTextBox.Text.Equals(string.Empty)) { 302 | MessageBox.Show("Error", "Please enter an address and size of memory to peek!"); 303 | return; 304 | } 305 | 306 | UInt32 Address = Convert.ToUInt32(MemoryAddressTextBox.Text, 16); 307 | UInt32 Size = MemorySizeTextBox.Text.Contains("0x") ? Convert.ToUInt32(MemorySizeTextBox.Text, 16) : Convert.ToUInt32(MemorySizeTextBox.Text, 10); 308 | 309 | MemoryData = xbCon.ReadBytes(Address, Size); 310 | MemoryStream stream = new MemoryStream(MemoryData); 311 | DynamicFileByteProvider byteProvider = new DynamicFileByteProvider(stream); 312 | MemoryViewHexBox.ByteProvider = byteProvider; 313 | } 314 | 315 | private void PokeMemoryButton_Click(object sender, EventArgs e) { 316 | if (MemoryAddressTextBox.Text.Equals(string.Empty)) { 317 | MessageBox.Show("Error", "Please enter an address of memory to poke!"); 318 | return; 319 | } 320 | 321 | DynamicFileByteProvider dynamicFileByteProvider = MemoryViewHexBox.ByteProvider as DynamicFileByteProvider; 322 | dynamicFileByteProvider.ApplyChanges(); 323 | 324 | UInt32 Address = Convert.ToUInt32(MemoryAddressTextBox.Text, 16); 325 | xbCon.WriteBytes(Address, MemoryData); 326 | } 327 | } 328 | } 329 | -------------------------------------------------------------------------------- /Xbox Toolbox/Form1.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | text/microsoft-resx 110 | 111 | 112 | 2.0 113 | 114 | 115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | 118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 119 | 120 | 121 | True 122 | 123 | 124 | True 125 | 126 | 127 | True 128 | 129 | 130 | True 131 | 132 | 133 | 134 | 135 | AAABAAUAEBAAAAEAIABoBAAAVgAAABgYAAABACAAiAkAAL4EAAAgIAAAAQAgAKgQAABGDgAAMDAAAAEA 136 | IACoJQAA7h4AAAAAAAABACAARhwAAJZEAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAA 137 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAABKAAAAiwAAAK4AAACuAAAAiwAAAEoAAAAOAAAAAAAA 138 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAD4AAAC1AAAA8gAAAP8AAAD/AAAA/wAAAP8AAADyAAAAtQAA 139 | AD4AAAABAAAAAAAAAAAAAAAAAAAAAAAAAFYAAADnAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 140 | AP8AAADnAAAAVgAAAAAAAAAAAAAAAAAAABgAAACAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 141 | AP8AAAD/AAAA/wAAAIwAAAAYAAAAAAAAABEAAACOAAAAOAAAAMYAAAD/AAAA/wAAAP8AAAD/AAAA/wAA 142 | AP8AAAD/AAAA/wAAANMAAABEAAAAjQAAABEAAABLAAAA6AAAAEcAAABDAAAA6gAAAP8AAAD/AAAA/wAA 143 | AP8AAAD/AAAA/wAAAO0AAABOAAAASAAAAOgAAABLAAAAigAAAP8AAACeAAAABgAAAG0AAAD2AAAA/wAA 144 | AP8AAAD/AAAA/wAAAPUAAABtAAAABgAAAJ4AAAD/AAAAigAAAK0AAAD/AAAA7QAAAEEAAAAEAAAAgwAA 145 | APkAAAD/AAAA/wAAAPcAAAB7AAAAAwAAAEEAAADtAAAA/wAAAK0AAACtAAAA/wAAAP8AAAC6AAAAEwAA 146 | AAkAAACHAAAA+QAAAPcAAAB+AAAABgAAABMAAAC6AAAA/wAAAP8AAACtAAAAigAAAP8AAAD/AAAA/QAA 147 | AIcAAAAEAAAACQAAAHgAAAB0AAAABwAAAAQAAACHAAAA/QAAAP8AAAD/AAAAigAAAEoAAADxAAAA/wAA 148 | AP8AAADzAAAAZwAAAAIAAAADAAAAAwAAAAIAAABnAAAA8wAAAP8AAAD/AAAA8QAAAEoAAAAOAAAAtAAA 149 | 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 191 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHAAAAH4AAADQAAAA8gAAAPwAAAD/AAAA/wAA 192 | APwAAADyAAAA0AAAAH4AAAAcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 193 | AAAAAAAAAAAAAAAAAAEAAAAXAAAAQgAAAGoAAACCAAAAggAAAGoAAABCAAAAFwAAAAEAAAAAAAAAAAAA 194 | AAAAAAAAAAAAAAAAAAAAAAAA/gB/APgAHwDwAA8A4AAHAOAABwCAAAEAgAABAIAAAQAIABAABAAgAAQA 195 | IAACAEAAAQCAAAGBgAAAwwAAAGYAAIA8AQCAPAEAwH4DAMDDAwDhAIcA9AAvAPwAPwD+AH8AKAAAACAA 196 | AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 197 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAABEAAAAtAAAARwAAAFcAAABXAAAARwAAAC0AAAARAAAAAQAA 198 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 199 | AAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAEgAAACQAAAAxwAAAOUAAADyAAAA+AAAAPgAAADyAAAA5QAA 200 | AMcAAACQAAAASAAAAA4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 201 | AAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAFUAAAC9AAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 202 | AP8AAAD/AAAA/wAAAP8AAAD1AAAAvQAAAFUAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 203 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQAAAChAAAA9QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 204 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA9QAAAKEAAAAkAAAAAAAAAAAAAAAAAAAAAAAA 205 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAywAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 206 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAMsAAAA5AAAAAAAA 207 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAANcAAAD/AAAA/wAAAP8AAAD/AAAA/wAA 208 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 209 | ANcAAAAyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABIAAAA8wAAAP8AAAD/AAAA/wAA 210 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 211 | AP8AAAD/AAAA+QAAAFIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANAAAAVAAAABAAAACoAAAA/wAA 212 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 213 | AP8AAAD/AAAA/wAAAP8AAADIAAAAHQAAAFMAAAANAAAAAAAAAAAAAAAAAAAAAAAAAFkAAAC5AAAACgAA 214 | ADYAAADkAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 215 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA9gAAAFoAAAAKAAAAuQAAAFkAAAAAAAAAAAAAAAAAAAAOAAAAvgAA 216 | AOQAAAAiAAAAAAAAAHcAAAD8AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 217 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAACbAAAABgAAACIAAADkAAAAvgAAAA4AAAAAAAAAAAAA 218 | AEgAAAD1AAAA+gAAAFMAAAAAAAAAEQAAALAAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 219 | 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 247 | ALwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA9QAAAFUAAAAAAAAAAAAAAAAAAAAAAAAACQAA 248 | AKEAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAC2AAAAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 249 | AAAAAAAAAAAAIgAAALYAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAChAAAACQAAAAAAAAAAAAAAAAAA 250 | AAAAAAAAAAAAJAAAAMsAAAD/AAAA/wAAAP8AAAD6AAAAoAAAABoAAAAAAAAAAAAAAAAAAAAAAAAACAAA 251 | AAgAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAKAAAAD6AAAA/wAAAP8AAAD/AAAAywAAACQAAAAAAAAAAAAA 252 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAANcAAAD/AAAA5AAAAHMAAAANAAAAAAAAAAAAAAAAAAAAAgAA 253 | ADIAAACkAAAApQAAADIAAAACAAAAAAAAAAAAAAAAAAAADQAAAHMAAADkAAAA/wAAANcAAAA5AAAAAAAA 254 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOgAAAIUAAAAyAAAAAgAAAAAAAAAAAAAAAgAA 255 | ACUAAACEAAAA4wAAAP8AAAD/AAAA4wAAAIMAAAAkAAAAAQAAAAAAAAAAAAAAAgAAADIAAACFAAAAOgAA 256 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAGgAA 257 | AEAAAACMAAAA3QAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/gAAAN0AAACNAAAAQQAAABsAAAAIAAAAAAAA 258 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 259 | ACIAAACSAAAA6QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADpAAAAlAAA 260 | ACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 261 | AAAAAAAAAAAAAAAAABEAAABIAAAAkAAAAMcAAADlAAAA8gAAAPgAAAD4AAAA8gAAAOUAAADHAAAAkAAA 262 | AEgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 263 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAEQAAAC0AAABHAAAAVwAAAFcAAABHAAAALQAA 264 | ABEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4Af//4AB//4A 265 | AH/8AAA/+AAAH/AAAA/gAAAPwAAAA8AAAAOEAAABhAAAIYIAAEEDAADAAwAAwAGAAYAAwAMAAOAHAABw 266 | DgAAOBwAABw4AIAeeAGAD/ABgAfgAcAH4APAD/AD4B54B/A4HA/4YAYf/wAA//8AAP//gAH//+AH/ygA 267 | AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 268 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 269 | AAEAAAAIAAAAEgAAABgAAAAYAAAAEgAAAAgAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 270 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 271 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAA 272 | ABsAAABFAAAAcwAAAJoAAAC1AAAAyAAAANAAAADQAAAAyAAAALUAAACaAAAAcwAAAEUAAAAbAAAAAwAA 273 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 274 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 275 | ABEAAABNAAAAmwAAANcAAAD2AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 276 | APYAAADXAAAAmwAAAE0AAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 277 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 278 | AAAAAAAQAAAAXwAAAMEAAAD2AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 279 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPYAAADBAAAAXwAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 280 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 281 | AAAAAAAAAAAAAwAAAEIAAAC5AAAA+QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 282 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+QAAALkAAABCAAAAAwAA 283 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 284 | AAAAAAAAAAAAAAAAAAAAAAAQAAAAfQAAAOsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 285 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 286 | AP8AAADrAAAAfQAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 287 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAACnAAAA+wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 288 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 289 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA+wAAAKcAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 290 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJAAAALoAAAD/AAAA/wAAAP8AAAD/AAAA/wAA 291 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 292 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAC6AAAAJAAAAAAAAAAAAAAAAAAA 293 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAuAAAAP8AAAD/AAAA/wAA 294 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 295 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAtwAA 296 | ABYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAA2AAA 297 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 298 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 299 | AP8AAAD/AAAA4AAAACMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAA 300 | ACIAAAAAAAAAeQAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 301 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 302 | AP8AAAD/AAAA/wAAAP8AAAD/AAAAowAAAAYAAAAhAAAABgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 303 | AAAAAAAAAAAARwAAAIEAAAAAAAAAHAAAAMwAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 304 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 305 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADvAAAARAAAAAAAAACBAAAARwAAAAAAAAAAAAAAAAAA 306 | AAAAAAAAAAAAAAAAAAAAAAAQAAAAvAAAAKsAAAADAAAAAAAAAFsAAAD2AAAA/wAAAP8AAAD/AAAA/wAA 307 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 308 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAACZAAAABgAAAAMAAACrAAAAvAAA 309 | ABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfAAAA/AAAAMgAAAAPAAAAAAAAAAoAAACjAAAA/wAA 310 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 311 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANUAAAAnAAAAAAAA 312 | AA8AAADIAAAA/AAAAF8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAADAAAAA/wAAAOcAAAAsAAAAAAAA 313 | AAAAAAAsAAAA2AAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 314 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAA 315 | AFgAAAAAAAAAAAAAACwAAADnAAAA/wAAAMAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAE0AAAD2AAAA/wAA 316 | AP0AAABgAAAAAAAAAAAAAAAAAAAAXQAAAPQAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 317 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 318 | AP8AAAD9AAAAiQAAAAUAAAAAAAAAAAAAAGAAAAD9AAAA/wAAAPYAAABNAAAAAAAAAAAAAAAAAAAAAgAA 319 | AJsAAAD/AAAA/wAAAP8AAAClAAAABQAAAAAAAAAAAAAABwAAAJEAAAD+AAAA/wAAAP8AAAD/AAAA/wAA 320 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 321 | AP8AAAD/AAAA/wAAAP8AAACvAAAAEwAAAAAAAAAAAAAABQAAAKUAAAD/AAAA/wAAAP8AAACbAAAAAgAA 322 | AAAAAAAAAAAAGwAAANcAAAD/AAAA/wAAAP8AAADjAAAAKgAAAAAAAAAAAAAAAAAAABkAAAC7AAAA/wAA 323 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 324 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAMoAAAAmAAAAAAAAAAAAAAAAAAAAKgAAAOMAAAD/AAAA/wAA 325 | AP8AAADXAAAAGwAAAAAAAAAAAAAARQAAAPUAAAD/AAAA/wAAAP8AAAD/AAAAeQAAAAAAAAAAAAAAAAAA 326 | AAAAAAAyAAAA1wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 327 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA3AAAADsAAAAAAAAAAAAAAAAAAAAAAAAAeQAA 328 | AP8AAAD/AAAA/wAAAP8AAAD1AAAARQAAAAAAAAAAAAAAcwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA0AAA 329 | ABsAAAAAAAAAAAAAAAAAAAAAAAAATQAAAOkAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 330 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADnAAAATgAAAAAAAAAAAAAAAAAA 331 | AAAAAAAbAAAA0AAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAcwAAAAAAAAAAAAAAmgAAAP8AAAD/AAAA/wAA 332 | AP8AAAD/AAAA/QAAAG8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAGcAAADzAAAA/wAAAP8AAAD/AAAA/wAA 333 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAO4AAABfAAAAAQAA 334 | AAAAAAAAAAAAAAAAAAAAAABvAAAA/QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAmgAAAAAAAAAIAAAAtQAA 335 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAANIAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAB8AAAA+AAA 336 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8gAA 337 | AGwAAAADAAAAAAAAAAAAAAAAAAAAAAAAACAAAADSAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAtQAA 338 | AAgAAAASAAAAyAAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAACDAAAAAQAAAAAAAAAAAAAAAAAA 339 | AAAAAAAKAAAAjAAAAPsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 340 | AP8AAAD1AAAAdQAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAIMAAAD/AAAA/wAAAP8AAAD/AAAA/wAA 341 | AP8AAAD/AAAAyAAAABIAAAAYAAAA0AAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADmAAAAOQAA 342 | AAAAAAAAAAAAAAAAAAAAAAAAAAAADgAAAJUAAAD8AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 343 | AP8AAAD/AAAA/wAAAPYAAAB6AAAABwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOQAAAOYAAAD/AAAA/wAA 344 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA0AAAABgAAAAYAAAA0AAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 345 | AP8AAAD/AAAAsAAAAA8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACZAAAA/AAAAP8AAAD/AAAA/wAA 346 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA9gAAAH0AAAAHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPAAAAsAAA 347 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA0AAAABgAAAASAAAAyAAAAP8AAAD/AAAA/wAA 348 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA+gAAAHEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARAAAAmAAA 349 | APsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD1AAAAfAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 350 | AAAAAABwAAAA+gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAyAAAABIAAAAIAAAAtQAA 351 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAOMAAAA8AAAAAAAAAAAAAAAAAAAAAAAA 352 | AAAAAAAAAAAADwAAAJEAAAD6AAAA/wAAAP8AAAD/AAAA/wAAAPQAAAB4AAAABwAAAAAAAAAAAAAAAAAA 353 | AAAAAAAAAAAAAAAAADsAAADjAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAtQAA 354 | AAgAAAAAAAAAmgAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAC/AAAAGgAA 355 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAAACFAAAA9gAAAP8AAAD/AAAA8QAAAHIAAAAGAAAAAAAA 356 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAGgAAAL8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 357 | AP8AAAD/AAAAmgAAAAAAAAAAAAAAcwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 358 | AP8AAAD+AAAAlAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAdQAAAPEAAADuAAAAaQAA 359 | AAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAlAAAAP4AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 360 | AP8AAAD/AAAA/wAAAP8AAAD/AAAAcwAAAAAAAAAAAAAARQAAAPUAAAD/AAAA/wAAAP8AAAD/AAAA/wAA 361 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA9gAAAGwAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQAA 362 | AFsAAABYAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAABsAAAA9gAAAP8AAAD/AAAA/wAA 363 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD1AAAARQAAAAAAAAAAAAAAGwAAANcAAAD/AAAA/wAA 364 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAOkAAABNAAAAAAAAAAAAAAAAAAAAAAAA 365 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE0AAADpAAAA/wAA 366 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADXAAAAGwAAAAAAAAAAAAAAAgAA 367 | AJsAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADYAAAANgAA 368 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANgAA 369 | ANgAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAACbAAAAAgAA 370 | AAAAAAAAAAAAAAAAAE0AAAD2AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 371 | AP8AAAD/AAAAxwAAACYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 372 | AAAAAAAmAAAAxwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 373 | APYAAABNAAAAAAAAAAAAAAAAAAAAAAAAABEAAADAAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 374 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAALgAAAAeAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 375 | AAAAAAAAAAAAAAAAAB4AAAC4AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 376 | AP8AAAD/AAAA/wAAAMAAAAARAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABfAAAA+QAAAP8AAAD/AAAA/wAA 377 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPYAAABZAAAAAAAAAAAAAAAAAAAAAAAA 378 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkAAAD2AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 379 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA+QAAAF8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAuAAA 380 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+QAAAIkAAAALAAAAAAAA 381 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAAACJAAAA+QAAAP8AAAD/AAAA/wAA 382 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAuAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 383 | AAAAAAAAAAAAQwAAAOoAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD3AAAAhgAA 384 | AAsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALAAAAhgAA 385 | APcAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADqAAAAQwAAAAAAAAAAAAAAAAAA 386 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAH0AAAD7AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 387 | APAAAAB3AAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 388 | AAAAAAAAAAAACQAAAHcAAADwAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPsAAAB9AAAAAgAA 389 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAACmAAAA/wAAAP8AAAD/AAAA/wAA 390 | AP8AAAD/AAAA4QAAAF0AAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkAAAAJAAAAAAAA 391 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAABdAAAA4QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 392 | AKYAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAeAAAAuQAA 393 | AP8AAAD/AAAA/wAAAPwAAAC9AAAAOgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAMQAA 394 | AKUAAACmAAAAMgAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAOgAAAL0AAAD8AAAA/wAA 395 | AP8AAAD/AAAAuQAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 396 | AAAAAAAAAAAAJAAAALoAAAD/AAAA4AAAAHwAAAAWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 397 | ABsAAAB7AAAA4QAAAP8AAAD/AAAA4QAAAHsAAAAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 398 | ABYAAAB8AAAA4AAAAP8AAAC6AAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 399 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABpAAAALAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 400 | AAAAAAAXAAAAaAAAAM0AAAD9AAAA/wAAAP8AAAD/AAAA/wAAAPwAAADNAAAAZwAAABYAAAAAAAAAAAAA 401 | AAAAAAAAAAAAAAAAAAAAAAACAAAALAAAAGkAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 402 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 403 | AAAAAAAFAAAAJwAAAHMAAADLAAAA+gAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA+gAA 404 | AMsAAABzAAAAKQAAAAYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 405 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 406 | AAAAAAAUAAAASgAAAHQAAACqAAAA4gAAAP0AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 407 | AP8AAAD/AAAA/wAAAP8AAAD9AAAA4wAAAK0AAAB4AAAASwAAABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 408 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 409 | AAAAAAAAAAAAAAAAAAAAAAAMAAAAWgAAAMIAAAD5AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA 410 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPkAAADDAAAAWgAAAAwAAAAAAAAAAAAA 411 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 412 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAABNAAAAmwAAANcAAAD2AAAA/wAA 413 | AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAPYAAADXAAAAmwAAAE0AAAARAAAAAAAA 414 | AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 415 | 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 548 | Uqht9AAAAABJRU5ErkJggg== 549 | 550 | 551 | -------------------------------------------------------------------------------- /Xbox Toolbox/PPC/buildppc.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | ppu-lv2-as.exe PPC\\\\assembly.s 3 | ppu-lv2-objcopy.exe -O binary a.out -------------------------------------------------------------------------------- /Xbox Toolbox/PPC/spu-lv2-as.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skiff/Xbox-Toolbox/5801adfc76e2e453d3a5f4427e01bd9f9a3770f9/Xbox Toolbox/PPC/spu-lv2-as.exe -------------------------------------------------------------------------------- /Xbox Toolbox/PPC/spu-lv2-objcopy.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skiff/Xbox-Toolbox/5801adfc76e2e453d3a5f4427e01bd9f9a3770f9/Xbox Toolbox/PPC/spu-lv2-objcopy.exe -------------------------------------------------------------------------------- /Xbox Toolbox/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Threading.Tasks; 5 | using System.Windows.Forms; 6 | 7 | namespace Xbox_Toolbox { 8 | static class Program { 9 | /// 10 | /// The main entry point for the application. 11 | /// 12 | [STAThread] 13 | static void Main() { 14 | Application.EnableVisualStyles(); 15 | Application.SetCompatibleTextRenderingDefault(false); 16 | Application.Run(new Form1()); 17 | } 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /Xbox Toolbox/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("Xbox Toolbox")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("Xbox Toolbox")] 13 | [assembly: AssemblyCopyright("Copyright © 2019")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("dc37ff7e-4ad5-4f0e-8bba-4154648996ea")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /Xbox Toolbox/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Xbox_Toolbox.Properties { 12 | 13 | 14 | /// 15 | /// A strongly-typed resource class, for looking up localized strings, etc. 16 | /// 17 | // This class was auto-generated by the StronglyTypedResourceBuilder 18 | // class via a tool like ResGen or Visual Studio. 19 | // To add or remove a member, edit your .ResX file then rerun ResGen 20 | // with the /str option, or rebuild your VS project. 21 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 22 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 23 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 24 | internal class Resources { 25 | 26 | private static global::System.Resources.ResourceManager resourceMan; 27 | 28 | private static global::System.Globalization.CultureInfo resourceCulture; 29 | 30 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 31 | internal Resources() { 32 | } 33 | 34 | /// 35 | /// Returns the cached ResourceManager instance used by this class. 36 | /// 37 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 38 | internal static global::System.Resources.ResourceManager ResourceManager { 39 | get { 40 | if ((resourceMan == null)) { 41 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Xbox_Toolbox.Properties.Resources", typeof(Resources).Assembly); 42 | resourceMan = temp; 43 | } 44 | return resourceMan; 45 | } 46 | } 47 | 48 | /// 49 | /// Overrides the current thread's CurrentUICulture property for all 50 | /// resource lookups using this strongly typed resource class. 51 | /// 52 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 53 | internal static global::System.Globalization.CultureInfo Culture { 54 | get { 55 | return resourceCulture; 56 | } 57 | set { 58 | resourceCulture = value; 59 | } 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /Xbox Toolbox/Properties/Resources.resx: -------------------------------------------------------------------------------- 1 |  2 | 3 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | text/microsoft-resx 107 | 108 | 109 | 2.0 110 | 111 | 112 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 113 | 114 | 115 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 116 | 117 | -------------------------------------------------------------------------------- /Xbox Toolbox/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.42000 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace Xbox_Toolbox.Properties { 12 | 13 | 14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.3.0.0")] 16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 | 18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 19 | 20 | public static Settings Default { 21 | get { 22 | return defaultInstance; 23 | } 24 | } 25 | 26 | [global::System.Configuration.UserScopedSettingAttribute()] 27 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 28 | [global::System.Configuration.DefaultSettingValueAttribute("")] 29 | public string ModulePath { 30 | get { 31 | return ((string)(this["ModulePath"])); 32 | } 33 | set { 34 | this["ModulePath"] = value; 35 | } 36 | } 37 | 38 | [global::System.Configuration.UserScopedSettingAttribute()] 39 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 40 | [global::System.Configuration.DefaultSettingValueAttribute("")] 41 | public string PPC { 42 | get { 43 | return ((string)(this["PPC"])); 44 | } 45 | set { 46 | this["PPC"] = value; 47 | } 48 | } 49 | 50 | [global::System.Configuration.UserScopedSettingAttribute()] 51 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 52 | [global::System.Configuration.DefaultSettingValueAttribute("")] 53 | public string OpCodes { 54 | get { 55 | return ((string)(this["OpCodes"])); 56 | } 57 | set { 58 | this["OpCodes"] = value; 59 | } 60 | } 61 | 62 | [global::System.Configuration.UserScopedSettingAttribute()] 63 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 64 | [global::System.Configuration.DefaultSettingValueAttribute("0x0")] 65 | public string InjectAddress { 66 | get { 67 | return ((string)(this["InjectAddress"])); 68 | } 69 | set { 70 | this["InjectAddress"] = value; 71 | } 72 | } 73 | 74 | [global::System.Configuration.UserScopedSettingAttribute()] 75 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 76 | [global::System.Configuration.DefaultSettingValueAttribute("0x82000000")] 77 | public string MemAddress { 78 | get { 79 | return ((string)(this["MemAddress"])); 80 | } 81 | set { 82 | this["MemAddress"] = value; 83 | } 84 | } 85 | 86 | [global::System.Configuration.UserScopedSettingAttribute()] 87 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 88 | [global::System.Configuration.DefaultSettingValueAttribute("0x1000")] 89 | public string MemSize { 90 | get { 91 | return ((string)(this["MemSize"])); 92 | } 93 | set { 94 | this["MemSize"] = value; 95 | } 96 | } 97 | } 98 | } 99 | -------------------------------------------------------------------------------- /Xbox Toolbox/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 0x0 16 | 17 | 18 | 0x82000000 19 | 20 | 21 | 0x1000 22 | 23 | 24 | -------------------------------------------------------------------------------- /Xbox Toolbox/XDRPCPlusPlus.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Text; 3 | 4 | using XDevkit; 5 | using Microsoft.Test.Xbox.XDRPC; 6 | 7 | namespace Xbox_Toolbox { 8 | static class XDRPCPlusPlus { 9 | private static byte[] memoryBuffer = new byte[32]; 10 | private static uint outInt = 0; 11 | public static string CallString(this IXboxConsole xbc, uint offset, params object[] args) { 12 | uint address = XDRPCMarshaler.ExecuteRPC(xbc, new XDRPCExecutionOptions(XDRPCMode.Title, offset), args); 13 | return ReadString(xbc, address); 14 | } 15 | 16 | public static string CallString(this IXboxConsole xbc, string moduleName, int ordinal, params object[] args) { 17 | uint address = XDRPCMarshaler.ExecuteRPC(xbc, XDRPCMode.System, moduleName, ordinal, args); 18 | return ReadString(xbc, address); 19 | } 20 | 21 | public static byte[] ReadBytes(this IXboxConsole xbCon, uint offset, uint size) { 22 | byte[] temp = new byte[size]; 23 | xbCon.DebugTarget.GetMemory(offset, size, temp, out outInt); 24 | xbCon.DebugTarget.InvalidateMemoryCache(true, offset, size); 25 | return temp; 26 | } 27 | 28 | public static sbyte ReadSByte(this IXboxConsole xbCon, uint offset) { 29 | xbCon.DebugTarget.GetMemory(offset, 1, memoryBuffer, out outInt); 30 | xbCon.DebugTarget.InvalidateMemoryCache(true, offset, 1); 31 | return (sbyte)memoryBuffer[0]; 32 | } 33 | public static bool ReadBool(this IXboxConsole xbCon, uint offset) { 34 | xbCon.DebugTarget.GetMemory(offset, 1, memoryBuffer, out outInt); 35 | xbCon.DebugTarget.InvalidateMemoryCache(true, offset, 1); 36 | return memoryBuffer[0] != 0; 37 | } 38 | public static short ReadInt16(this IXboxConsole xbCon, uint offset) { 39 | xbCon.DebugTarget.GetMemory(offset, 2, memoryBuffer, out outInt); 40 | xbCon.DebugTarget.InvalidateMemoryCache(true, offset, 2); 41 | Array.Reverse(memoryBuffer, 0, 2); 42 | return BitConverter.ToInt16(memoryBuffer, 0); 43 | } 44 | public static int ReadInt32(this IXboxConsole xbCon, uint offset) { 45 | xbCon.DebugTarget.GetMemory(offset, 4, memoryBuffer, out outInt); 46 | xbCon.DebugTarget.InvalidateMemoryCache(true, offset, 4); 47 | Array.Reverse(memoryBuffer, 0, 4); 48 | return BitConverter.ToInt32(memoryBuffer, 0); 49 | } 50 | public static long ReadInt64(this IXboxConsole xbCon, uint offset) { 51 | xbCon.DebugTarget.GetMemory(offset, 8, memoryBuffer, out outInt); 52 | xbCon.DebugTarget.InvalidateMemoryCache(true, offset, 8); 53 | Array.Reverse(memoryBuffer, 0, 8); 54 | return BitConverter.ToInt64(memoryBuffer, 0); 55 | } 56 | public static byte ReadByte(this IXboxConsole xbCon, uint offset) { 57 | xbCon.DebugTarget.GetMemory(offset, 1, memoryBuffer, out outInt); 58 | xbCon.DebugTarget.InvalidateMemoryCache(true, offset, 1); 59 | return memoryBuffer[0]; 60 | } 61 | public static ushort ReadUInt16(this IXboxConsole xbCon, uint offset) { 62 | xbCon.DebugTarget.GetMemory(offset, 2, memoryBuffer, out outInt); 63 | xbCon.DebugTarget.InvalidateMemoryCache(true, offset, 2); 64 | Array.Reverse(memoryBuffer, 0, 2); 65 | return BitConverter.ToUInt16(memoryBuffer, 0); 66 | } 67 | public static uint ReadUInt32(this IXboxConsole xbCon, uint offset) { 68 | xbCon.DebugTarget.GetMemory(offset, 4, memoryBuffer, out outInt); 69 | xbCon.DebugTarget.InvalidateMemoryCache(true, offset, 4); 70 | Array.Reverse(memoryBuffer, 0, 4); 71 | return BitConverter.ToUInt32(memoryBuffer, 0); 72 | } 73 | public static ulong ReadUInt64(this IXboxConsole xbCon, uint offset) { 74 | xbCon.DebugTarget.GetMemory(offset, 8, memoryBuffer, out outInt); 75 | xbCon.DebugTarget.InvalidateMemoryCache(true, offset, 8); 76 | Array.Reverse(memoryBuffer, 0, 8); 77 | return BitConverter.ToUInt64(memoryBuffer, 0); 78 | } 79 | public static float ReadFloat(this IXboxConsole xbCon, uint offset) { 80 | xbCon.DebugTarget.GetMemory(offset, 4, memoryBuffer, out outInt); 81 | xbCon.DebugTarget.InvalidateMemoryCache(true, offset, 4); 82 | Array.Reverse(memoryBuffer, 0, 4); 83 | return BitConverter.ToSingle(memoryBuffer, 0); 84 | } 85 | public static string ReadString(this IXboxConsole xbCon, uint offset, byte[] readBuffer) { 86 | xbCon.DebugTarget.GetMemory(offset, (uint)readBuffer.Length, readBuffer, out outInt); 87 | xbCon.DebugTarget.InvalidateMemoryCache(true, offset, (uint)readBuffer.Length); 88 | string stringValue = new string(Encoding.ASCII.GetChars(readBuffer)); 89 | char[] separator = new char[1]; 90 | return stringValue.Split(separator)[0]; 91 | } 92 | public static string ReadString(this IXboxConsole xbCon, uint offset) { 93 | return ReadString(xbCon, offset, memoryBuffer); 94 | } 95 | public static void WriteSByte(this IXboxConsole xbCon, uint offset, sbyte input) { 96 | memoryBuffer[0] = (byte)input; 97 | xbCon.DebugTarget.SetMemory(offset, 1, memoryBuffer, out outInt); 98 | } 99 | 100 | public static void WriteInt16(this IXboxConsole xbCon, uint offset, short input) { 101 | BitConverter.GetBytes(input).CopyTo(memoryBuffer, 0); 102 | Array.Reverse(memoryBuffer, 0, 2); 103 | xbCon.DebugTarget.SetMemory(offset, 2, memoryBuffer, out outInt); 104 | } 105 | public static void WriteInt32(this IXboxConsole xbCon, uint offset, int input) { 106 | BitConverter.GetBytes(input).CopyTo(memoryBuffer, 0); 107 | Array.Reverse(memoryBuffer, 0, 4); 108 | xbCon.DebugTarget.SetMemory(offset, 4, memoryBuffer, out outInt); 109 | } 110 | public static void WriteInt64(this IXboxConsole xbCon, uint offset, long input) { 111 | BitConverter.GetBytes(input).CopyTo(memoryBuffer, 0); 112 | Array.Reverse(memoryBuffer, 0, 8); 113 | xbCon.DebugTarget.SetMemory(offset, 8, memoryBuffer, out outInt); 114 | } 115 | public static void WriteByte(this IXboxConsole xbCon, uint offset, byte input) { 116 | memoryBuffer[0] = input; 117 | xbCon.DebugTarget.SetMemory(offset, 1, memoryBuffer, out outInt); 118 | } 119 | public static void WriteUInt16(this IXboxConsole xbCon, uint offset, ushort input) { 120 | BitConverter.GetBytes(input).CopyTo(memoryBuffer, 0); 121 | Array.Reverse(memoryBuffer, 0, 2); 122 | xbCon.DebugTarget.SetMemory(offset, 2, memoryBuffer, out outInt); 123 | } 124 | public static void WriteUInt32(this IXboxConsole xbCon, uint offset, uint input) { 125 | BitConverter.GetBytes(input).CopyTo(memoryBuffer, 0); 126 | Array.Reverse(memoryBuffer, 0, 4); 127 | xbCon.DebugTarget.SetMemory(offset, 4, memoryBuffer, out outInt); 128 | } 129 | public static void WriteUInt64(this IXboxConsole xbCon, uint offset, ulong input) { 130 | BitConverter.GetBytes(input).CopyTo(memoryBuffer, 0); 131 | Array.Reverse(memoryBuffer, 0, 8); 132 | xbCon.DebugTarget.SetMemory(offset, 8, memoryBuffer, out outInt); 133 | } 134 | public static void WriteFloat(this IXboxConsole xbCon, uint offset, float input) { 135 | BitConverter.GetBytes(input).CopyTo(memoryBuffer, 0); 136 | Array.Reverse(memoryBuffer, 0, 4); 137 | xbCon.DebugTarget.SetMemory(offset, 4, memoryBuffer, out outInt); 138 | } 139 | 140 | public static void Push(this byte[] InArray, out byte[] OutArray, byte Value) { 141 | OutArray = new byte[InArray.Length + 1]; 142 | InArray.CopyTo(OutArray, 0); 143 | OutArray[InArray.Length] = Value; 144 | } 145 | 146 | public static void WriteString(this IXboxConsole xbCon, uint Address, string String) { 147 | byte[] array = new byte[0]; 148 | for (int i = 0; i < String.Length; i++) { 149 | byte value = (byte)String[i]; 150 | array.Push(out array, value); 151 | } 152 | array.Push(out array, 0); 153 | xbCon.DebugTarget.SetMemory(Address, (uint)array.Length, array, out outInt); 154 | } 155 | 156 | public static void WriteBytes(this IXboxConsole xbCon, uint offset, byte[] memory) { 157 | xbCon.DebugTarget.SetMemory(offset, (uint)memory.Length, memory, out outInt); 158 | } 159 | 160 | public static void Reboot(this IXboxConsole xbCon) { 161 | xbCon.Reboot(null, null, null, XboxRebootFlags.Cold); 162 | } 163 | 164 | public static void Shutdown(this IXboxConsole xbCon) { 165 | xbCon.ExecuteRPC(XDRPCMode.System, "xboxkrnl.exe", 40, new object[] { 0x7 }); 166 | } 167 | 168 | public static string GetCPUKey(this IXboxConsole xbCon) { 169 | byte[] RPC = new byte[] { 0x38, 0x00, 0x00, 0x71, 0x44, 0x00, 0x00, 0x02, 0x4E, 0x80, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00 }; 170 | 171 | xbCon.DebugTarget.SetMemory(0x81B44688, 16, RPC, out outInt); 172 | UInt64 CPU1 = xbCon.ExecuteRPC(new XDRPCExecutionOptions(XDRPCMode.Title, 0x81B44688), new object[] { 0x48565050, 3, 0x8000020000020600 }); 173 | UInt64 CPU2 = xbCon.ExecuteRPC(new XDRPCExecutionOptions(XDRPCMode.Title, 0x81B44688), new object[] { 0x48565050, 3, 0x8000020000020800 }); 174 | UInt64 CPU3 = xbCon.ExecuteRPC(new XDRPCExecutionOptions(XDRPCMode.Title, 0x81B44688), new object[] { 0x48565050, 3, 0x8000020000020A00 }); 175 | UInt64 CPU4 = xbCon.ExecuteRPC(new XDRPCExecutionOptions(XDRPCMode.Title, 0x81B44688), new object[] { 0x48565050, 3, 0x8000020000020C00 }); 176 | xbCon.DebugTarget.SetMemory(0x81B44688, 16, new byte[16], out outInt); 177 | 178 | return String.Format("{0}{1}", (CPU1 | CPU2).ToString("X8"), (CPU3 | CPU4).ToString("X8")); 179 | } 180 | 181 | public static uint GetCurrentTitleId(this IXboxConsole xbCon) { 182 | return xbCon.ExecuteRPC(XDRPCMode.System, "xam.xex", 463, new object[] { }); 183 | } 184 | 185 | public static string GetConsoleIP(this IXboxConsole xbCon) { 186 | return new System.Net.IPAddress(xbCon.IPAddress).ToString(); 187 | } 188 | 189 | public static void LoadModule(this IXboxConsole xbCon, string module) { 190 | if (module.Contains("\\") == false) 191 | module = "Hdd:\\" + module; 192 | 193 | xbCon.ExecuteRPC(XDRPCMode.System, "xboxkrnl.exe", 409, new object[] { module, 8, 0, 0 }); 194 | } 195 | 196 | public static void UnloadModule(this IXboxConsole xbCon, string module) { 197 | uint handle = xbCon.ExecuteRPC(XDRPCMode.System, "xam.xex", 1102, new object[] { module }); 198 | if(handle != 0u) { 199 | xbCon.WriteInt16(handle + 0x40, 1); 200 | xbCon.ExecuteRPC(XDRPCMode.System, "xboxkrnl.exe", 417, new object[] { handle }); 201 | } 202 | } 203 | } 204 | } -------------------------------------------------------------------------------- /Xbox Toolbox/Xbox Toolbox.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {DC37FF7E-4AD5-4F0E-8BBA-4154648996EA} 8 | WinExe 9 | Xbox_Toolbox 10 | Xbox Toolbox 11 | v4.6.1 12 | 512 13 | true 14 | 15 | 16 | AnyCPU 17 | true 18 | full 19 | false 20 | bin\Debug\ 21 | DEBUG;TRACE 22 | prompt 23 | 4 24 | 25 | 26 | AnyCPU 27 | pdbonly 28 | true 29 | bin\Release\ 30 | TRACE 31 | prompt 32 | 4 33 | 34 | 35 | icon.ico 36 | 37 | 38 | 39 | ..\..\..\..\Documents\Visual Studio References\Be.Windows.Forms.HexBox.dll 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | ..\..\..\..\..\..\Program Files (x86)\Microsoft Xbox 360 SDK\bin\win32\xdevkit.dll 54 | True 55 | 56 | 57 | ..\..\..\..\..\..\Program Files (x86)\Microsoft Xbox 360 SDK\bin\win32\xdrpc.dll 58 | 59 | 60 | 61 | 62 | Form 63 | 64 | 65 | Form1.cs 66 | 67 | 68 | 69 | 70 | 71 | Form1.cs 72 | 73 | 74 | ResXFileCodeGenerator 75 | Resources.Designer.cs 76 | Designer 77 | 78 | 79 | True 80 | Resources.resx 81 | 82 | 83 | Always 84 | 85 | 86 | SettingsSingleFileGenerator 87 | Settings.Designer.cs 88 | 89 | 90 | True 91 | Settings.settings 92 | True 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | Always 102 | 103 | 104 | Always 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /Xbox Toolbox/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skiff/Xbox-Toolbox/5801adfc76e2e453d3a5f4427e01bd9f9a3770f9/Xbox Toolbox/icon.ico --------------------------------------------------------------------------------