I was trying to add a null byte eraser method and after exiting the default plugin dialog, Eraser crashed. I was simply adding a single constant (hexadecimal) pass method. Also the passes list isn't updated correctly... when I change from Random to Hexadecimal, it still says Random in the list above. Only when I hit OK and go back to the "Add Mehtod" sub-dialog, the pass is named correctly ("Constant (1 byte)"), it makes editing passes very tricky, because you don't really know if Eraser saves the bytes you have typed in correctly. Also "00", becomes "0" in the Hexadecimal view for some odd reason, so when adding "00000000", going back it becomes " 0 0 0 0", then saving and coming back it's as if I have typed half the zeros and then there is " 0 0"... and so on.
But anyway the crash also happens when I type other figures into the box, like "afaf".
PS: Important! I just found out how to exactly reproduce the bug.
Oh, there's another thing I've noticed... once I have added a custom method and then selected it for normal and free space erasure and then hit "Save settings", it vanished from the list of custom methods. So I'm unable to edit or remove this new method anymore! It's in the drop-down list of available methods, but it's not a custom method anymore...
But anyway the crash also happens when I type other figures into the box, like "afaf".
Code:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.ArgumentException: The GUID of the erasure method to remove refers to an invalid erasure method.
at Eraser.Manager.ErasureMethodManager.Unregister(Guid value)
at Eraser.DefaultPlugins.SettingsForm.okBtn_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.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.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.4927 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
Eraser
Assembly Version: 6.0.6.1376
Win32 Version: 6.0.6.1376
CodeBase: file:///C:/Program%20Files/Eraser/Eraser.exe
----------------------------------------
Eraser.Manager
Assembly Version: 6.0.6.1376
Win32 Version: 6.0.6.1376
CodeBase: file:///C:/Program%20Files/Eraser/Eraser.Manager.DLL
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
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.4927 (NetFXspW7.050727-4900)
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.4927 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Microsoft.VisualBasic
Assembly Version: 8.0.0.0
Win32 Version: 8.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
Eraser.Util
Assembly Version: 6.0.6.1376
Win32 Version: 6.0.6.1376
CodeBase: file:///C:/Program%20Files/Eraser/Eraser.Util.DLL
----------------------------------------
Eraser.DefaultPlugins
Assembly Version: 6.0.6.1376
Win32 Version: 6.0.6.1376
CodeBase: file:///C:/Program%20Files/Eraser/Plugins/Eraser.DefaultPlugins.dll
----------------------------------------
System.Core
Assembly Version: 3.5.0.0
Win32 Version: 3.5.30729.4926 built by: NetFXw7
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
Eraser.resources
Assembly Version: 6.0.6.1376
Win32 Version: 6.0.6.1376
CodeBase: file:///C:/Program%20Files/Eraser/en/Eraser.resources.DLL
----------------------------------------
Eraser.Manager.resources
Assembly Version: 6.0.6.1376
Win32 Version: 6.0.6.1376
CodeBase: file:///C:/Program%20Files/Eraser/en/Eraser.Manager.resources.DLL
----------------------------------------
BevelLine
Assembly Version: 1.0.3589.29437
Win32 Version: 1.0.0.0
CodeBase: file:///C:/Program%20Files/Eraser/BevelLine.DLL
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Accessibility
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.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.
PS: Important! I just found out how to exactly reproduce the bug.
- The problem is that Eraser crashes, because it wants to remove a custom method from an empty list of methods! So it won't crash unless there is no other method in your list of custom methods. It might
- There's one case (this is another bug), where a newly created or and edited method will be removed automatically, because of the 0x00 bug I mentioned above ("00" becomes "0" in the Hexadecimal view). If the only pass of a method is a Constant Byte write and this byte is entered as "0", not "00" but "0" then this pass is automatically removed by Eraser, and if this is the only pass in the method, then the whole method is removed automatically, too. And, you see what happens next, if the last method is automatically removed from the list of custom methods, Eraser crashes.
Oh, there's another thing I've noticed... once I have added a custom method and then selected it for normal and free space erasure and then hit "Save settings", it vanished from the list of custom methods. So I'm unable to edit or remove this new method anymore! It's in the drop-down list of available methods, but it's not a custom method anymore...