Gecko dotNET Bugs and Requests

Started by Mal1t1a, January 19, 2010, 12:08:54 AM

Previous topic - Next topic

Bully@Wiiplaza

#525
Quote from: dcx2 on July 26, 2011, 01:35:06 PM
EDIT:
If you unplug the USB from the PC, it should instantly time out instead of slowly timing out.
k that seems reasonable and I can remember that plugging off the cord instantly times out.
I think it´s more useful to auto-disconnect from the game, if it crashed (but after it switched to breakpoints tab and the crash bp automatically hit).

Good luck with the gamecube mem90 prevention then...
However.... do you *ever* need mem90 on the disassembly?

But since you fixed address remembering on disassembly...
My Wii hacking site...
http://bullywiihacks.com/

My youtube account with a lot of hacking videos...
http://www.youtube.com/user/BullyWiiPlaza

~Bully

dcx2

I really don't like the idea of auto-disconnect.  Now the breakpoint handler is installed on connection (previously, you had to set a breakpoint for it to be installed, so if you didn't set a breakpoint before you crashed you couldn't recover).  You should always be able to diagnose and recover from a crashed game.

I have uncrashed games dozens of times, although some crashes are harder to fix than others.  Set SRR0 helps a lot here; you can SSR0 on the function epilogue to walk the stack while avoiding any processing that might cause more crashes.  I've even used the information from the crash dump to make a few anti-freeze codes which prevent the crashes from happening in the first place.

---

GCN MEM2 protection shouldn't be too hard.  Link laid the framework for limiting the range of MEM2 (because IOS protects stuff from about 93400000 to 94000000).  If I limit MEM2 to nothing, it should hopefully prevent GCN crashing.

---

The disasm was actually using the last MemView address for some strange reason.  Must have been a copy/paste bug.

I've never used disasm on MEM2, however VC games store the ROM there.  VC ASM hacks will therefore patch MEM2.  I did have some plans to make the disasm tab show results from e.g. Tracer, but that ended up being more difficult than it was worth.

Stuff

When I load a saved search I get:
[spoiler="unhandled exception"]See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.NullReferenceException: Object reference not set to an instance of an object.
   at GeckoApp.MemSearch.PrintPageAlt()
   at GeckoApp.MemSearch.UpdateGridViewPage(Boolean ResizeGridView)
   at GeckoApp.MainForm.numericUpDownNewSearchIndex_ValueChanged(Object sender, EventArgs e)
   at System.Windows.Forms.NumericUpDown.OnValueChanged(EventArgs e)
   at System.Windows.Forms.NumericUpDown.set_Value(Decimal value)
   at GeckoApp.MainForm.buttonLoadSearch_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
Gecko dNet
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///D:/wiisd%20root/Gecko.Net/Gecko%20dNet.exe
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
    CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
[/spoiler]

Quote from: Sharkbyte on July 26, 2011, 11:52:43 PM

Quote from: James0x57
32 bit search for: ?A?A?A00
returns results like: 1A2A7A00, 0A0A0A00,AAAAAA00
and so forth.
This would be great!

Is it possible to have the option to turn on specific lines of a code to test without deleting the whole line itself, then having to put the line back? (Wiird had this option.)

Quote from: James0x57Oh, Request: When you double click on a value in mem view, it will go to it if it's an address. Could you please add a "go back" to the right-click context menu? If it's not a big pain, maybe even a small, 4 or 5 history stack? :3

still hasn't been added ^

Quote from: Mathew_Wi
Bug: Multi Poke
It works fine at first, then I switch to, say, 8 bit search, I do a multi poke and the poke box says some random number. So, start with 32 bit, multi poke works.
Switch to 8 bit, multi poke says random crap.

I noticed this too. I made a mention in the first part of my post.

Quote from: James0x57Hex to Ascii converter and a calculator in the gui, ready to use! (Same as decimal to hex and so on!)
You guys already made the notepat feature, which is a great idea! Why not more of this hacking related useful stuff? :)

Not a bad idea. Don't know why that hasn't been made yet.
Oh yes. Those are great ideas. And if I could add a few, a +/-XXXXXXXX to the address for memview to reduce the copy and pasting. Well anywhere there's an address box. Also, can it show more addresses if I expand the window? It was a very funny futile attempt when I hit maximize. XD.
[spoiler][/spoiler]
I know you can "copy all cells" but it's hard to ask for a memview snapshot feature. I like to illustrate what I'm saying with images. But that's not all that important. Copy all cells is convenient enough. That's all the bugs/requests for now.
.make Stuff happen.
Dropbox. If you don't have one, get it NOW! +250MB free if you follow my link :p.

Mod code Generator ~50% complete but very usable:
http://dl.dropbox.com/u/24514984/modcodes/modcodes.htm

dcx2

@Sharkbyte :eek:  Wow, that's quite a list there.  Thanks for all of the feedback.  Taking it from the top...

1) 16-bit poke.  It should take the existing value.  At least, 32-bit pokes will do that.  I'm not exactly sure what a 16-bit poke will do, so I will look into it.  Honestly, I use MemView poke more than Search poke, since MemView poke supports operations beside write.  Search poke does have Multi-Poke and Serial-Poke support, though.

2) Search Ranges.  I'm not sure precisely what you mean here, because you use value and address.  Fortunately, Gecko.NET can do both.  For Address ranges, look at the Memory Range groupbox at the top-left of the Search tab.  Here, you can specify start and end addresses.  The "end address" is one byte AFTER the last byte to dump (i.e. 81800000 means the last dumped byte is 817FFFFF).

For value ranges, you will need to use the Search Groups.  First, create a Search Condition "Specific Value" "Greater or equal" "3F800000".  Then go to Search Groups and click Add.  You will see Search Groups (2), and the spinner will increment to 2.  Now change Search Condition to "Less or equal" "3FC00000".  Click the spinner up and down and you should see your two search conditions.  Since this is obviously a float, you should also change View Mode to Single.  Also, since you're doing floats, you will be interested in the value textbox context menu.  Right click a value textbox (like the Search Condition Value) and you can use that menu to convert to/from hex/dec/float/ASCII.

3) "Cheats Sent!" dialog.  I'm not sure why this bothers everyone.  Assuming your one hand is still near the keyboard, just hit the space bar.  I will consider moving this to the status bar at the bottom.

4) The 0-fill in GCT codes.  There's not much I can do about this.  Codes are not stored as text, but instead they're stored as two sets of 8 hex digits (with a few bookkeeping bools).  If you don't provide a valid code line, it fills it with 0's until the line is valid.  It needs to do this; imagine if you tried to Send Codes with half a code line...what should happen?  What if your code had non-hex digits, or symbols, how should Gecko.NET format the codes before sending to the game?  There is also error checking to prevent invalid codes from being saved.  I can't do much about that, because codes need to be valid before they can be sent or saved.  My only suggestion is that if you're building a code, make it in Notepad first and then copy/paste the final result into the GCT tab.

5) >32-bit searches in the Search tab.  Probably not happening, too many major changes required, not the least of which would require major modifications to how searching is done so it supports something like arrays of bytes.  Your best bet is to use MemView Hex Search.

6) Not sure about wiiztec's text search page-up/down.  I'll have to try to replicate the issue.

7) 0x100 byte alignment in MemView.  One of the things I specifically *hate* was this forced alignment.  I can't tell you how many times I was looking at memory and I had to keep switching pages up and down just to see the last row of one page and the first row of the next.  Instead, Gecko.NET centers the selected MemView address when you use shortcuts like the Search result context menu.  This way you can see all around the value of interest.

This is why it might look "random"...don't put too much focus on the Address groupbox at the top left of MemView, which denotes the beginning of the currently visible chunk in MemView.  The Value Poke groupbox's addresstextbox is probably what you're really looking for, because it corresponds to the selected cell's address.

As far as jumping back to old addresses when you switch tabs...now that you mention it, I think I've seen that behavior a few times.  I have replicated the behavior and I'll try to fix it.

8) Is this...undo multi-poke?

9) You can't do straight to text, but you can dump raw binary using the Tools tab.  There is also Copy All Cells in the MemView DataGridView's context menu.  I can look into supporting other types of dumping besides raw binary files on the Tools tab.  I can even try to one-up that by not only printing the hex and ASCII, but also the float and ASM.  It would be quite wide.

10) 2-seconds to pause.  I do not experience that issue.  When I press Pause, it happens instantly.  Although you're probably using Gecko OS Mod, which means your code handler is old and won't  have the debugger patches.  This means breakpoints can "miss" (among other unrelated issues).  If BPNext somehow "missed", it could take a few seconds until it tries again.  You could try unchecking BPNext on the About tab so it uses old-style pausing, although I would verify that you're having the 2-second pause problems in Gecko OS 1.9.3.x first.

11) James' idea for search masks.  I've been trying to consider this, but I can't think of a reasonable approach.  ?'s would have 4-bit granularity, which I don't think is good enough.  I'd like to somehow add another value textbox that allows you to specify a bitmask.

12) Disabling code lines.  Prefix -- and the code line will be disabled.

BTW, there is also GCT Code Undo; prefix a line with ##, then give a full address (not 04 code!) and a 32-bit poke value, and the address will be poked for GCT Undo.  You can also double-click any 00/02/04/C2 code word (just the first word), and then press ctrl-u and it will automatically create an undo line with the current value of the address with ba=80000000 (this means you should do it before applying any codes!  Ideally, restart the game so everything is "unhacked")

13) Double-click MemView remember old address.  To an extent, you can do this, though it might be a bit odd at first.  Every addresstextbox has a built-in history function.  When the text caret (the blinkie | thinger) leaves an addresstextbox, the contents will automatically be added to the history.  To remember an address, then, all you need to do is click in the addresstextbox once; when you click on something else (like a pointer you want to follow) it will automatically add the last address to the history.  When you want to come back, double-click the addresstextbox to see the history dropdown.  Select the address you want, and then press Update.

14) I think multi-poke must be 32-bit.  I'm not sure.  I'll look around at this a bit.

15) All value textboxes have a context menu that can do hex/dec/float/ASCII conversions.  I just use Windows calc in scientific mode...no need to reinvent the wheel.  For ASCII conversions >4 chars, I've been thinking about re-using the MemView Search textbox.

16) 30-second "ding" when connected but not booted.  ...I'm not really sure what you're talking about, honestly.  My sound is always muted so I wouldn't hear a ding.  Is that the message prompting you to auto-boot the game?

17) Tab Order.  I tried to put these into the order of more frequent use coming first.  The Search/MemView/BP/Disasm tab order is non-negotiable, as these are my most common tabs.  The rest I'm more flexible on, if you'd like to try again.  Though I'd prefer some reasoning behind the order.

18) Dr. Pepper's pointer search app supports 3 separate dumps, to help eliminate false positives.

19) Lag closing.  not really sure.  Other people report some zombie Task Manager killing.  I'm beginning to think it's a debug/release problem...I always run from source, so I'm in Debug mode.  When I close Gecko.NET, I never get zombies.  I'll try some release testing.  Making sure I got this right...load Gecko.NET with a USB Gecko connected but no game loaded, and then exit?

20) Changing Search memory range while searching is a bad idea, that's why I froze it during searches.  If you want to narrow down the results, sort by address, and then highlight results that you don't want and press delete.

---

@Stuff

1) Can you somehow send me the save you tried to load?  Was it an srh file?  Or a zip?

2) See my comments to Sharkbyte above

3) Adding offsets to addresses.  Right-click any addresstextbox or any datagridcell in MemView.  "Add Offset".  Give it a hex address without 0x, prefix with - if you want to subtract.  How I normally use this: right-click, "o", "800", "enter".  This will add 0x800 to the address.

4) Show more MemView data.  I was thinking about making it longer vertically, but I doubt I would make it wider.  There are a lot of assumptions based on a 256-byte window.

5) I've been considering a full MemView history, like there's a Search history and GCT history now.  It could remember everything, kinda like unlimited snapshots.

Stuff

oh. I never new about add offset XD. wow. That's so handy.
The longer memview, I'm just saying to make it longer vertically. It'll be weird if you made it wider. I guess you can do a ascii column if you want, but we already have ascii view.
.make Stuff happen.
Dropbox. If you don't have one, get it NOW! +250MB free if you follow my link :p.

Mod code Generator ~50% complete but very usable:
http://dl.dropbox.com/u/24514984/modcodes/modcodes.htm

dcx2

Yeah, try to right-click any and everything you possibly can.  A lot of functionality is in the context menus.

I've been thinking about adding another column for the simultaneous ASCII view if you want to expand out that far.  That seems like the typical thing that hex viewers do.

Stuff

Well the context menu doesn't really always work. Paste from the context menu is bootleg, while ctrl+V works as expected. I tried convert ascii->hex in the search box and nothing happened. I'll still right click everything I can to see what I find. And then report some weird stuff like paste. 

Quote from: Sharkbyte on July 27, 2011, 04:51:22 AM
Quote from: dcx212) Disabling code lines. Prefix -- and the code line will be disabled.
What?
XD
Also, the way wiird had that asterisk for on was pretty cool. But then deleting lines was awkward. If you can do that "check for on" without doing that grid thing it had, great. Otherwise, I'm good with --.
.make Stuff happen.
Dropbox. If you don't have one, get it NOW! +250MB free if you follow my link :p.

Mod code Generator ~50% complete but very usable:
http://dl.dropbox.com/u/24514984/modcodes/modcodes.htm

Bully@Wiiplaza

wow, complete page got filled.

1.) Let´s clarify the "specific lines enabled" thing.

Put it into the GCT tab like this:

-- 0453453A 60000000
0453453A 38000000

Send codes and it will then apply the second line, but not the first one.

2.) How the zombie process occures is described by me above somewhere:
Crash the game, close gecko.NET voila, you got the zombie process that makes you hear the "bling" sound every few seconds until it was completely closed with task manager

3.) Please include the "Cheats sent!" into the status bar

4.) "Want to automatically boot a game?" dialog that pops up when using Gecko OS does nothing when Yes was pressed.
WiiRd really launches the game, but Gecko.NET doesn´t

5.) Adding support for multipoke "poke every address´ previous value" and fixing the general "8bit/16bit previous value poke" would be awesome!

6.) Resizing the window to get an overwhelming mem. viewer address view would be nice, I agree
My Wii hacking site...
http://bullywiihacks.com/

My youtube account with a lot of hacking videos...
http://www.youtube.com/user/BullyWiiPlaza

~Bully

dcx2

@Sharkbyte

I suppose I should be a bit more clear.  While I'm quite willing to take suggestions for new features, they are subject to my own whims.  I use a complicated metric to determine whether and when new features are added, weighing factors like how useful it is to me, or others, how long it will take to implement, and any significant modifications that need made to the "engine" behind all the tabs.  Sometimes I won't do stuff yet, but I usually weigh what someone asks for pretty well.

- Value range searching.  While a different set of controls may be more intuitive, they will also be inherently less flexible than the existing controls.  For instance, you can currently do a search condition that is less than the previous value, not equal to the specific value 0, and different from the first value by less than 3, all at the same time.  I'm not convinced that making something easier is worth reducing its utility.

Now, what I might consider is a "search wizard" kinda like the GCT Wizard and perhaps it could have these more intuitive controls, and you could use it to set the base controls.  This is a maybe sooner or later.

- 0-filling; I'm not sure what version of WiiRDGUI you were using, but it also enforces the rule about how codes are stored and just flat out refuses to save a partially completed code line.  Maybe you mean the textbox at the top that lets you write one code line at a time before you add it to the list?

-
QuoteNo, I am saying that I would like to do an unknown search with various values and have the multipoke option still work for every value, even though every address is pretty much a different value the new multipoke option (if added) would make it so I can poke the old value of whatever value was at the address at the time of the search.

Uhm...can you or Bully give me an example of where this feature might have helped you make a hack?  I hardly use multi-poke so I'm not sure why this would be useful.

- 9) You can't do straight to text, but you can dump raw binary using the Tools tab.  ...  I can look into supporting other types of dumping besides raw binary files on the Tools tab.

It's not a matter of "it can't do it ever".  It's a matter of "it can't do it yet, so I'll add it to my list of things to do".

- It is a big deal if pausing doesn't happen instantly.  You say this is on Windows 7?  Are you sure you're using the latest driver from the manufacturer?  32-bit windows or 64-bit windows.  I think I'll put a check in Gecko.NET that makes it easier to find drivers.

- Bully got it right, put -- in front of a code line to disable it.  I brought up GCT Code Undo as a side-thing.  Imagine you make a code that nops the stw.  You send cheats.  Then you don't want the code anymore.  So you uncheck the code and send cheats again, but the stw is still nopped!  GCT Code Undo allows you to tell Gecko.NET what the original value of an address was, and it can use this info to disable cheats.  This can also be used to unhook C2 branches in 1.9.3.1 handlers.

- multi-poke, "I hope not, cause that will suck not having support for 8bit and 16bit."

I'm pretty sure you can still 8- and 16-bit poke.  I'm just not sure if multi-poke supports it.  Like I said, I'll take a look.

- tab order, not sure what you mean by "seems to change with every release".  The only time it changed was when the Pointer tab was added.

- Changing search address range.  I know you mean once dumping is over, but I can't let you change the start or end addresstextboxes once searching has begun.  They're frozen for a good reason.  The engine relies on those values staying the same once you start searching.  It's not worth the time to implement such changes when you can prune search results by deleting the addresses you don't want, or setting the range before you do the first search

---

@Stuff - what textbox were you trying?  Paste worked for me, but ASCII did not.

@Bully - >.>  er...auto-boot works for me.

Bully@Wiiplaza

#534
Quote from: dcx2 on July 28, 2011, 05:56:39 AM
Uhm...can you or Bully give me an example of where this feature might have helped you make a hack?  I hardly use multi-poke so I'm not sure why this would be useful.
Uhm... pretty often.
I tried to make a "gun modifier" and used unknown value searches.
I got like 20 results left. So I went to multipoke and wanted to poke the previous value to check if any of those gives back the old gun.
I did one by one and finally found it... Since poking 10 suspected addresses at the same time is more effective than 1, it´s useful to use that feature.
Same for almost any other unknown value code. Value changed, you want to poke back the previous value from multiple address to see if any of them does what you wanted.

Poking one value to *all* the selected adresses often fucks everything up, as you can imagine O0
But still, there should be *both* "previous value poke" and "specific value poke for all of them"

In my opinion, it is definetely one of the best new feature suggestions...
My Wii hacking site...
http://bullywiihacks.com/

My youtube account with a lot of hacking videos...
http://www.youtube.com/user/BullyWiiPlaza

~Bully

Bully@Wiiplaza

Pointer Dumps do not remember directory.
They are always in the default folder again.
My Wii hacking site...
http://bullywiihacks.com/

My youtube account with a lot of hacking videos...
http://www.youtube.com/user/BullyWiiPlaza

~Bully

Stuff

Not like it bothered me, but the cheats sent msg box was still showing up for me.
QuoteMemView now shows ASCII for selected cell below the float value
Also didn't happen. I was looking at my character's name. Just a floating point value.
And now the memview font is weird. Only sometimes though. o.O

[spoiler][/spoiler]
I think it has to do with starting gecko.net with no game connected.
.make Stuff happen.
Dropbox. If you don't have one, get it NOW! +250MB free if you follow my link :p.

Mod code Generator ~50% complete but very usable:
http://dl.dropbox.com/u/24514984/modcodes/modcodes.htm

dcx2

Check the About box, I don't think you're using 0.66.2.

Bully@Wiiplaza

#538
Quote from: dcx2 on August 01, 2011, 06:12:34 AM
Check the About box, I don't think you're using 0.66.2.
true.
His font is bigger, it must be version > 0.66.1. since it changed on 0.66.1.

But....

Quote from: dcx2 on August 01, 2011, 12:45:45 AM
Gecko.NET 0.66.2

http://geckowii.googlecode.com/files/Gecko dNet 0.66.2.zip
it says version 0.66.1 on the abouts tab.
My Wii hacking site...
http://bullywiihacks.com/

My youtube account with a lot of hacking videos...
http://www.youtube.com/user/BullyWiiPlaza

~Bully

Stuff

yeah it says 0.66.1 :/ Must've been that link >.<
.make Stuff happen.
Dropbox. If you don't have one, get it NOW! +250MB free if you follow my link :p.

Mod code Generator ~50% complete but very usable:
http://dl.dropbox.com/u/24514984/modcodes/modcodes.htm