├── .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 | 
22 | 
23 | 
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
--------------------------------------------------------------------------------