wxHexEditor official GIT repo For info : http://www.wxhexeditor.org
Just launch make
!
- wxgtk;
wxHexEditor official GIT repo
Home Page: http://www.wxhexeditor.org
License: GNU General Public License v2.0
wxHexEditor official GIT repo For info : http://www.wxhexeditor.org
Just launch make
!
The link to the bug tracker on the homepage is broken - it should now point to http://sourceforge.net/p/wxhexeditor/_list/tickets
But maybe it should be pointing here rather than the sourceforge tracker, anyway...
Hello!
[1] Nowadays, when user marks some fragment with tag and then wants to modify it, he chooses tag, pushes Edit Tag on right-click menu. Then, if user wants to cancel its editing for some reason, he\she will intuitively push 'Remove' button, because pushing [X] is not what user will do on his first step. User sees buttons at the first place. So, the idea is to add 'Cancel' button on Tag Dialog window and 'Remove' button to rename on 'Remove Tag'. Yes, it makes button-sign a little bit longer, but much more human-readable.
So, 'Save' - 'Remove' raw will be 'Save' - 'Remove Tag' - 'Cancel'
[2] Nowadays on right-click menu we have three tag items: Quick Tag
, New Tag
, Tag Edit
.
I offer to add also Remove Tag
, which will open the tags-list, and user can be able to remove selected tag(s) or all tag entirely. See schematic picture:
If you use Find All for a hex value that only exists once in a file two offsets are displayed in the search results panel. This is a minor cosmetic issue as both displayed offsets are true.
Hello!
Anyway, user can try 'strings' command to get string data from target file, but it'll be convenient, if wxHE has such functionality too. Of course, with 'Find/Find All' sub-command to search needed strings.
Thanks!
Disassembler wxTextCtrl m_dasmCtrl does not resize with the Disassembler panel. This makes it essentially impossible to use. While I'm new to wxWidgets, changing line 683
of HexEditorGui.cpp
to be the following appears to fix the problem.
mainSizer->Add( m_dasmCtrl, 1, wxALIGN_CENTER_HORIZONTAL| wxBOTTOM | wxRIGHT | wxLEFT | wxEXPAND, 5 );
I am running Fedora fc22.x86_64 with version 2.8.12 of wxWidgets.
wxHexEditor version 0.24 Beta Development.
Hello!
version: 0.24 on openSUSE.
Got a 'Failed to terminate a thread' error message on closing wxHE after having manipulations with the second file.
Steps-to-reproduce algo: https://www.youtube.com/watch?v=Lb1mnX_0_0k
Hello!
Not sure, if wxH is the the culprit in current test-case, but will put core-dump info here. Possibly, @plater can help here.
Version to reproduce: 0.23+git20170223-44.1
Test file is attached: test.txt
Steps-to-reproduce algo:
Text
search-mode and all options are OFF, besides 'Wrap on', which should be ON.=
character as the search query and push 'Find' button.BackTrace info:
coredump_segv_11_backtrace_0.23+git20170223-44.1.txt
Hello!
Version to reproduce: 0.23+git20170224-50.1
Test files: test.txt and test_1.txt
Steps-to-reproduce algo:
Visualization: https://www.youtube.com/watch?v=Ce2Zw4Os8Jc
http://wiki.wxhexeditor.org/index.php5/TAGs
Is there any hotkeys for these?
wxHexEditor version: v0.24 (rev 3b3e32d)
Also happens when using wxHexEditor (0.22+repack-2.2) from the debian repository
Distribution: Debian
Version: 8 (debian version: 8.2
Support Lifecycle: N\A
Codename: 8 (jessie)
Fullname: Debian GNU/Linux 8 (jessie)
Kernel Name: Linux
Kernel Release: 3.16.0-4-amd64
Kernel Version: #1 SMP Debian 3.16.7-ckt11-1+deb8u3 (2015-08-04)
Machine Architecture: x86_64
Error Message:
00:23:30: Cannot set locale to language "English".
00:23:30: locale 'en_GB' cannot be set.
00:23:30: This language is not supported by the system.
-- why is it using en_GB instead of en_US for the English language?
Should there not be a language option for 'English (GB)' / 'English (US)'
Steps to reproduce:
Assert<<
If you need more info please let me know!
Environment:
wxhexeditor-git-r537.6613dc6-1
Arch Linux 64-bit
ASSERT INFO:
/usr/include/wx-3.0/wx/strvararg.h(456): assert "(argtype & (wxFormatStringSpecifier::value)) == argtype" failed in wxArgNormalizer(): format specifier doesn't match argument type
BACKTRACE:
[1] std::ctype::do_widen(char) const
[2] std::ctype::do_widen(char) const
[3] wxAppConsoleBase::CallEventHandler(wxEvtHandler_, wxEventFunctor&, wxEvent&) const
[4] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler_, wxEvent&)
[5] wxEvtHandler::SearchDynamicEventTable(wxEvent&)
[6] wxEvtHandler::TryHereOnly(wxEvent&)
[7] wxEvtHandler::ProcessEventLocally(wxEvent&)
[8] wxEvtHandler::ProcessEvent(wxEvent&)
[9] wxEvtHandler::SafelyProcessEvent(wxEvent&)
[10] g_signal_emit_valist
[11] g_signal_emit
[12] g_signal_emit_valist
[13] g_signal_emit
[14] g_closure_invoke
[15] g_signal_emit_valist
[16] g_signal_emit
[17] gtk_propagate_event
[18] gtk_main_do_event
[19] g_main_context_dispatch
[20] g_main_loop_run
[21] gtk_main
[22] wxGUIEventLoop::DoRun()
[23] wxEventLoopBase::Run()
[24] wxDialog::ShowModal()
[25] std::ctype::do_widen(char) const
[26] std::ctype::do_widen(char) const
[27] wxAppConsoleBase::CallEventHandler(wxEvtHandler_, wxEventFunctor&, wxEvent&) const
[28] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler_, wxEvent&)
[29] wxEvtHandler::SearchDynamicEventTable(wxEvent&)
[30] wxEvtHandler::TryHereOnly(wxEvent&)
[31] wxEvtHandler::DoTryChain(wxEvent&)
[32] wxEvtHandler::ProcessEvent(wxEvent&)
[33] wxWindowBase::TryAfter(wxEvent&)
[34] wxEvtHandler::SafelyProcessEvent(wxEvent&)
[35] wxMenuBase::SendEvent(int, int)
[36] g_closure_invoke
[37] g_signal_emit_valist
[38] g_signal_emit
[39] g_closure_invoke
[40] g_signal_emit_valist
[41] g_signal_emit
[42] gtk_accel_group_activate
[43] gtk_accel_groups_activate
[44] gtk_window_activate_key
[45] g_closure_invoke
[46] g_signal_emit_valist
[47] g_signal_emit
[48] gtk_propagate_event
[49] gtk_main_do_event
[50] g_main_context_dispatch
[51] g_main_loop_run
[52] gtk_main
[53] wxGUIEventLoop::DoRun()
[54] wxEventLoopBase::Run()
[55] wxAppConsoleBase::MainLoop()
[56] wxEntry(int&, wchar_t**)
[57] __libc_start_main
It seems that this github repository is more up to date than the svn from sourceforge.
Perhaps it would be better to link the repository here, than on sourceforge?
According to #2, you said it seems better to point to the svn for now, but why is that?
Happened after I opened a file and double clicked an address. Can't seem to get it to do it again at the moment, but I thought I'd share a bug report anyways in case it pops back up.
./src/common/wincmn.cpp(3300): assert "Assert failure" failed in ReleaseMouse(): Releasing mouse in 0x3101d082820(wxScrolledWindow) but it is not captured
ASSERT INFO:
./src/common/wincmn.cpp(3300): assert "Assert failure" failed in ReleaseMouse(): Releasing mouse in 0x3101d082820(wxScrolledWindow) but it is not captured
BACKTRACE:
[1] wxWindowBase::ReleaseMouse()
[2] wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const
[3] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
[4] wxEvtHandler::SearchDynamicEventTable(wxEvent&)
[5] wxEvtHandler::TryHereOnly(wxEvent&)
[6] wxEvtHandler::ProcessEventLocally(wxEvent&)
[7] wxEvtHandler::ProcessEvent(wxEvent&)
[8] wxScrollHelperEvtHandler::ProcessEvent(wxEvent&)
[9] wxEvtHandler::SafelyProcessEvent(wxEvent&)
[10] g_closure_invoke
[11] g_signal_emit_valist
[12] g_signal_emit
[13] gtk_propagate_event
[14] gtk_main_do_event
[15] g_main_context_dispatch
[16] g_main_loop_run
[17] gtk_main
[18] wxGUIEventLoop::DoRun()
[19] wxEventLoopBase::Run()
[20] wxAppConsoleBase::MainLoop()
[21] wxEntry(int&, wchar_t**)
[22] __libc_start_main
~ > uname -srv
Linux 4.1.6.201508230818-1-grsec #1 SMP PREEMPT Sun Aug 23 12:49:40 EDT 2015
~ > pacman -Qm wxhexeditor-git
wxhexeditor-git v0.23.r30.g3b3e32d-1
~ > wxHexEditor
13:12:47: Warning: Mismatch between the program and library build versions detected.
The library used 3.0 (wchar_t,compiler with C++ ABI 1008,wx containers,compatible with 2.8),
and your program used 3.0 (wchar_t,compiler with C++ ABI 1009,wx containers,compatible with 2.8).
01:12:48 PM: Debug: Failed to connect to session manager: SESSION_MANAGER environment variable not defined
OnMenuEvent: 5000
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: IA__gdk_drawable_get_size: assertion 'GDK_IS_DRAWABLE (drawable)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: IA__gdk_drawable_get_size: assertion 'GDK_IS_DRAWABLE (drawable)' failed
Rahman ve Rahim olan Allah'ın adıyla.
Send UpdateUI Event
Send UpdateUI Event
./src/common/wincmn.cpp(3300): assert "Assert failure" failed in ReleaseMouse(): Releasing mouse in 0x3101d082820(wxScrolledWindow) but it is not captured
./src/gtk/window.cpp(4704): assert "g_captureWindow" failed in DoReleaseMouse(): can't release mouse - not captured
./src/common/wincmn.cpp(3319): assert "!wxMouseCapture::stack.empty()" failed in ReleaseMouse(): Releasing mouse capture but capture stack empty?
Send UpdateUI Event
Send UpdateUI Event
Send UpdateUI Event
Send UpdateUI Event
Send UpdateUI Event
Send UpdateUI Event
OnMenuEvent: 1000
OnMenuEvent: 5000
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: IA__gdk_drawable_get_size: assertion 'GDK_IS_DRAWABLE (drawable)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: IA__gdk_drawable_get_size: assertion 'GDK_IS_DRAWABLE (drawable)' failed
Rahman ve Rahim olan Allah'ın adıyla.
Send UpdateUI Event
./src/common/wincmn.cpp(3300): assert "Assert failure" failed in ReleaseMouse(): Releasing mouse in 0x3101d0a3e40(wxScrolledWindow) but it is not captured
./src/gtk/window.cpp(4704): assert "g_captureWindow" failed in DoReleaseMouse(): can't release mouse - not captured
./src/common/wincmn.cpp(3319): assert "!wxMouseCapture::stack.empty()" failed in ReleaseMouse(): Releasing mouse capture but capture stack empty?
Send UpdateUI Event
Send UpdateUI Event
Send UpdateUI Event
Send UpdateUI Event
OnMenuEvent: 5000
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: IA__gdk_drawable_get_size: assertion 'GDK_IS_DRAWABLE (drawable)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: IA__gdk_drawable_get_size: assertion 'GDK_IS_DRAWABLE (drawable)' failed
Rahman ve Rahim olan Allah'ın adıyla.
Send UpdateUI Event
Send UpdateUI Event
Send UpdateUI Event
Send UpdateUI Event
OnMenuEvent: 1000
OnMenuEvent: 1000
01:20:29 PM: Debug: The thread 0x3101c838700 is being destroyed although it is still running! The application may crash.
OnMenuEvent: 5000
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: IA__gdk_drawable_get_size: assertion 'GDK_IS_DRAWABLE (drawable)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: _gdk_pixmap_new: assertion '(width != 0) && (height != 0)' failed
(wxHexEditor:15198): Gdk-CRITICAL **: IA__gdk_drawable_get_size: assertion 'GDK_IS_DRAWABLE (drawable)' failed
Rahman ve Rahim olan Allah'ın adıyla.
Send UpdateUI Event
Send UpdateUI Event
wxStaticBoxSizer* sbSizerSearchOptions;
sbSizerSearchOptions = new wxStaticBoxSizer( new wxStaticBox( this, wxID_ANY, _("Options") ), wxVERTICAL );
chkMatchCase = new wxCheckBox( this, wxID_ANY, _("Match Case"), wxDefaultPosition, wxDefaultSize, 0 );
In wxWidgets 2.9.1 and above, elements that are visually going inside the staticbox also need the staticbox, not this
, as parent:
auto sbSizerSearchOptions = new wxStaticBoxSizer(wxVERTICAL, this, _("Options"));
auto sb = sbSizerSearchOptions->GetStaticBox();
chkMatchCase = new wxCheckBox(sb, wxID_ANY, _("Match Case"), ...);
in file udis86/scripts/ud_opcode.py for FC23 nedd add line at begin:
from future import print_function
for construction: print(("%s |-<%s>" % ( pfxs, idx )), end="", flush=True)
(Python 2.7.1)
Occurs with V0.24 (rev 3b3e32d)
Happens when opening: Options -> Preferences (then either click the save or cancel button)
EDIT: only seems to happen if a file has not been opened.
ASSERT INFO:
../src/aui/auibook.cpp(2270): assert "page_idx < m_tabs.GetPageCount()" failed in GetPage().
BACKTRACE:
[1] wxAuiNotebook::GetPage(unsigned long) const
[2] HexEditorFrame::GetActiveHexEditor()
[3] HexEditorFrame::OnOptionsMenu(wxCommandEvent&)
[4] wxAppConsoleBase::CallEventHandler(wxEvtHandler_, wxEventFunctor&, wxEvent&) const
[5] wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler_, wxEvent&)
[6] wxEvtHandler::SearchDynamicEventTable(wxEvent&)
[7] wxEvtHandler::TryHereOnly(wxEvent&)
[8] wxEvtHandler::DoTryChain(wxEvent&)
[9] wxEvtHandler::ProcessEvent(wxEvent&)
[10] wxWindowBase::TryAfter(wxEvent&)
[11] wxEvtHandler::SafelyProcessEvent(wxEvent&)
[12] wxMenuBase::SendEvent(int, int)
[13] g_closure_invoke
[14] g_signal_emit_valist
[15] g_signal_emit
[16] gtk_widget_activate
[17] gtk_menu_shell_activate_item
[18] g_closure_invoke
[19] g_signal_emit_valist
[20] g_signal_emit
[21] gtk_propagate_event
[22] gtk_main_do_event
[23] g_main_context_dispatch
[24] g_main_loop_run
[25] gtk_main
[26] wxGUIEventLoop::DoRun()
[27] wxEventLoopBase::Run()
[28] wxAppConsoleBase::MainLoop()
[29] wxEntry(int&, wchar_t**)
[30] main
[31] __libc_start_main
[32] _start
Following situation:
using current git snapshot via the archilinux x64 aur package.
Original Request: https://sourceforge.net/p/wxhexeditor/feature-requests/41/
I planned a feature that easy to implement. Something like FindAll feature for "Find Some Bytes" function. Or in short "Analyze for Free" button that analyzes whole file and create TAGS for non-empty sections.
Might be useful to work with really BIG files.
Tags are handy, working with binary files, there's some feature I think would be very nice to have in the editor (ordered by my idea of importance):
How do you think? I may take a look at the sources and work at it in a (hopefully not too far) future but sadly not yet.
Cheers
(I'm using version 0.23+repack-2+b1 from debian/sid)
v0.22a imports and updates tags fine.
v0.23 imports tags too, but then if you try to create a new tag or delete one it won't update the hex display window as if you did nothing.
wxHexEditor versions were downloaded from sourceforge:
http://sourceforge.net/projects/wxhexeditor/files/wxHexEditor/
If there wree close button on tabs, someone would no need to click middle button or move to toolbar and click close button any more. I think its a wonderful feature.
Thanks
There appears to be a mixture of both single and double byte characters shown.
This problem exists on both Windows/Ubuntu in the latest official binaries.
Edit:
Happy to see that this has been partially fixed in 0.24 beta wtih 3be1e8e, just need to show all the characters in double-byte representation (or monospace) for ascii mode
Would be great to have the support of file templates/structure like :
This by making wxHexEditor
able to read .bt
or/and .osd
files.
Good Feature to enable after debugging.
Hello!
It seems to be an interesting idea to check file-status on VirusTotal ( [1] https://www.virustotal.com/) directly from wxH. E.g. 'Tools' -> 'Check on VirusTotal'. Of course, this is suitable only if network connection is on.
VT provides public API for such functionality:
[2] https://www.virustotal.com/en/documentation/public-api/
In particular - 'Retrieving file scan reports' paragraph: [3] https://www.virustotal.com/en/documentation/public-api/#getting-file-scans
Edited with CODE tag @EUA
#Hello!
[1] k_mikhail@linux-mk500:~> wxHexEditor --version
Ошибка сегментирования (core dumped)
[2] k_mikhail@linux-mk500:~> coredumpctl gdb 21188
PID: 21188 (wxHexEditor)
UID: 1000 (k_mikhail)
GID: 100 (users)
Signal: 11 (SEGV)
Timestamp: Птн 2017-02-17 12:44:52 EET (3min 6s ago)
Command Line: wxHexEditor --version
Executable: /usr/bin/wxHexEditor
Control Group: /user.slice/user-1000.slice/session-2.scope
Unit: session-2.scope
Slice: user-1000.slice
Session: 2
Owner UID: 1000 (k_mikhail)
Boot ID: 1ce14bb138ad4e279a2e2d33226baf0c
Machine ID: 4664bc7cba6aee90fe1efc7f571cbf28
Hostname: linux-mk500
Coredump: /var/lib/systemd/coredump/core.wxHexEditor.1000.1ce14bb138ad4e279a2e2d33226baf0c.21188.1487328292000000.xz
Message: Process 21188 (wxHexEditor) of user 1000 dumped core.
GNU gdb (GDB; openSUSE Leap 42.2) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/wxHexEditor...Reading symbols from /usr/lib/debug/usr/bin/wxHexEditor.debug...done.
done.
[New LWP 21188]
[New LWP 21260]
[New LWP 21262]
[New LWP 21261]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `wxHexEditor --version'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x000000000049a92a in HexEditorFrame::CreateFileWatcher (this=0x12b9700)
at src/HexEditorFrame.cpp:1131
1131 for( unsigned i = 0 ; i<MyNotebook->GetPageCount() ; i++ ){
[Current thread is 1 (Thread 0x7fd32614aa80 (LWP 21188))]
[3] (gdb) bt
#0 0x000000000049a92a in HexEditorFrame::CreateFileWatcher() (this=0x12b9700)
at src/HexEditorFrame.cpp:1131
#1 0x00007fd3247d3a71 in wxEventLoopBase::Run() (this=<synthetic pointer>, __in_chrg=<optimized out>) at include/wx/evtloop.h:398
#2 0x00007fd3247d3a71 in wxEventLoopBase::Run() (this=0x16df7c0)
at src/common/evtloopcmn.cpp:78
#3 0x00007fd3247a3bad in wxAppConsoleBase::MainLoop() (this=0x11f7090)
at src/common/appbase.cpp:334
#4 0x00007fd32481cb1d in wxEntry(int&, wchar_t**) (argc=@0x7fd324b6e5f0: 2, argv=<optimized out>) at src/common/init.cpp:495
#5 0x00007fd32481cbb2 in wxEntry(int&, char**) (argc=@0x7ffdce0ffc6c: 2,
argc@entry=@0x7ffdce0ffc6c: <optimized out>, argv=<optimized out>)
at src/common/init.cpp:507
#6 0x000000000041bf82 in main(int, char**) (argc=2, argv=<optimized out>)
at src/HexEditorApp.cpp:42
(gdb)
Tested with 0.23 and 0.24
Entering wxHexEditor --help or any non file related character on the command line results in a segmentation fault and core dump.
This issue is found in revision#ec653348e2f59f374a0a0e71e4ea6d97faa6a990
It brings up a message box and if you close the message box and exit immediately the seg fault happens. However if you load a file wxHexEditor functions as expected.
Hello!
Can't reproduce this again, because I even don't understand how I got this segv. But, possibly, backtrace can help to get the nature.
k_mikhail@linux-mk500:~> coredumpctl gdb 604
PID: 604 (wxHexEditor)
UID: 1000 (k_mikhail)
GID: 100 (users)
Signal: 11 (SEGV)
Timestamp: Вто 2017-02-21 16:16:37 EET (1h 50min ago)
Command Line: wxHexEditor
Executable: /usr/bin/wxHexEditor
Control Group: /user.slice/user-1000.slice/session-2.scope
Unit: session-2.scope
Slice: user-1000.slice
Session: 2
Owner UID: 1000 (k_mikhail)
Boot ID: 1ce14bb138ad4e279a2e2d33226baf0c
Machine ID: 4664bc7cba6aee90fe1efc7f571cbf28
Hostname: linux-mk500
Coredump: /var/lib/systemd/coredump/core.wxHexEditor.1000.1ce14bb138ad4e279a2e2d33226baf0c.604.1487686597000000.xz
Message: Process 604 (wxHexEditor) of user 1000 dumped core.
GNU gdb (GDB; openSUSE Leap 42.2) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/wxHexEditor...
warning: the debug information found in "/usr/lib/debug//usr/bin/wxHexEditor.debug" does not match "/usr/bin/wxHexEditor" (CRC mismatch).
(no debugging symbols found)...done.
[New LWP 604]
[New LWP 677]
[New LWP 678]
[New LWP 679]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `wxHexEditor'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x000000000049ca09 in ?? ()
[Current thread is 1 (Thread 0x7f6533e6ea80 (LWP 604))]
Missing separate debuginfos, use: zypper install wxhexeditor-debuginfo-0.23+git20170218-31.2.x86_64
(gdb) bt
#0 0x000000000049ca09 in ()
#1 0x00007f65324f7a71 in wxEventLoopBase::Run() ()
at /usr/lib64/libwx_baseu-suse.so.3
#2 0x00007f65324c7bad in wxAppConsoleBase::MainLoop() ()
at /usr/lib64/libwx_baseu-suse.so.3
#3 0x00007f6532540b1d in wxEntry(int&, wchar_t**) ()
at /usr/lib64/libwx_baseu-suse.so.3
#4 0x000000000041a702 in ()
#5 0x00007f653138d6e5 in __libc_start_main (main=
0x41a6f0, argc=1, argv=0x7ffc6e867308, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffc6e8672f8) at libc-start.c:289
#6 0x000000000041acd9 in ()
(gdb)
See left side.
Platform: Windows 7 x64
Version: 0.23 beta
Steps I used:
1.unzip wxHexEditor-v0.23-Win32.zip
2.run wxHexEditor, it will use system language (my case: simplified chinese), with some panel enabled
3.choose a different language (for exsample: english), then restart wxHexEditor
4.Most UI component changed into new language (english), except the title of panel (still simplified chinese)
Please confirm, thank you.
Add a process selector dialog instead of just entering PID by hand.
Easy on linux, /proc/*/status first line has process name.
Probably same for OSX.
Research need for MSW.
Also might add "When editing process memory, allow other process to continue" request at
https://sourceforge.net/p/wxhexeditor/feature-requests/40/
What do you think about letting the user insert newlines in the Hex/Ascii display ?
It would allow "logical" separation between binary headers, binary data and CRC for example.
It would have been super useful in a recent reverse-engineering of a binary thrift message. If I could have aligned my data visually, it would have been easier to understand.
Hello!
Version to reproduce: 0.23+git201702024-50.1
Test file: 123.txt
BackTrace: coredump_segv_11_023+git20170224-50.1_del.txt
Steps-to-reproduce algo:
P.S. Visualization: https://www.youtube.com/watch?v=tvHBXOhDfnI
Hello!
While waiting for wxH build with fix from #46, have tried the similar algo for text-mode.
Disassembler Panel in on.
Test file is the same from #46.
Steps-to-reproduce algo for 'Find' button:
Text
mode. Other options are OFF.=
sign as a search query and push 'Find' button. Result: wxH will mark the first byte offset, not null offset. And this is the first bug.=
sign, it will switch on null-offset byte successfully. And this is correct.Steps-to-reproduce algo for 'Find All' button:
Text
mode. Other options are OFF.=
sign as a search query and push 'Find All' button. Result: 48 matches will be found from the null-offset. So null-offset is not missed here instead of steps-to-reproduce algo for 'Find' button. But 48 matches result is wrong, because there are 24 (48/2) matches in real. This reminds #41 . This is the second bug.And in Disassembler panel you will get invalid status in.
Test-file is attached: test.txt
P.S. Long story short: https://www.youtube.com/watch?v=sOvd6pPc0WM
Hello!
Something like: https://www.youtube.com/watch?v=b9TUfqBCHws
I cannot reproduce this bug, it has been reported in openSUSE see (correct link):
https://bugzilla.suse.com/show_bug.cgi?id=1022460
I fixed the other reproducible SIGSEGV's by upgrading to a git snapshot from 26 December 2016.
The reporter has posted gdb backtraces which I will attach.
https://bugzilla.opensuse.org/attachment.cgi?id=712000
https://bugzilla.opensuse.org/attachment.cgi?id=712568
https://bugzilla.opensuse.org/attachment.cgi?id=71259
https://bugzilla.opensuse.org/attachment.cgi?id=71275
https://bugzilla.opensuse.org/attachment.cgi?id=71276098
https://bugzilla.opensuse.org/attachment.cgi?id=712772
The reporter uses Russian so this could be related to that, he also has Issue #25 and Issue #24 but he never complained of that with version 0.23
wxhexeditor is built with wxWidgets-3.0.1 using gtk2 see:
https://build.opensuse.org/build/home:plater/Leap_42.2/x86_64/wxhexeditor/_log
for a full build log.
Hello!
Would be nice and useful, if wxHE has a separate window for displaying file-structure of MZ-PE, ELF and Mach-O formats. Doable?
[1] http://www.skyfree.org/linux/references/ELF_Format.pdf
[2] https://source.winehq.org/source/include/winnt.h
[3] https://www.microsoft.com/en-us/download/confirmation.aspx?id=19509
[4] https://lowlevelbits.org/parsing-mach-o-files/
Hello!
Sometimes have to analyze files, which are given in \x format. For example ELF binaries inside of Perl-, PHP- scripts.
It'll be very useful and convenient, if wxH could work with such data: to convert, when such file is opened, and to save in plan-text strings and as binary.
Sample (ELF-header) as an example of such file:
hex_x.txt
Thanks!
Not sure what to do to correct this, occurs in the '#else' from '#ifdef SSE2' at src/HexDialogs.cpp:1346 I've only an x86_64 machine and attempts at compiling with -m32 bring up other errors. Seems like "i" needs a different type or something my c++ is poor.
Section from build log:
[ 77s] src/HexDialogs.cpp:1459:6: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'
[ 77s] if(! memcmp( bfr+i, search, search_size )) //if match found
[ 77s] ^~
[ 77s] src/HexDialogs.cpp:1459:23: error: 'i' was not declared in this scope
[ 77s] if(! memcmp( bfr+i, search, search_size )) //if match found
[ 77s] ^
[ 77s] src/HexDialogs.cpp:1459:8: warning: suggest explicit braces to avoid ambiguous 'else' [-Wparentheses]
[ 77s] if(! memcmp( bfr+i, search, search_size )) //if match found
[ 77s] ^
[ 77s] src/HexDialogs.cpp:1468:5: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
[ 77s] if( bfr[i] == search[0] || bfr[i] == UTF8SpeedHackChrs[0] )
[ 77s] ^~
[ 77s] src/HexDialogs.cpp:1472:6: note: ...this statement, but the latter is misleadingly indented as if it is guarded by the 'if'
[ 77s] if(! memcmp( bfr+i, search, search_size )) //if match found
[ 77s] ^~
[ 77s] src/HexDialogs.cpp:1472:23: error: 'i' was not declared in this scope
[ 77s] if(! memcmp( bfr+i, search, search_size )) //if match found
Full log at:
https://build.opensuse.org/build/home:plater/openSUSE_Factory/i586/wxhexeditor/_log
I need to fix this before I can send the fixed wxhexeditor to openSUSE:Tumbleweed. Any suggestions welcome.
Hello!
've caught another SEGV (11), when tried to switch between items in search-result panel.
k_mikhail@linux-mk500:~> coredumpctl | grep wxH
Суб 2017-02-18 07:57:44 EET 3855 1000 100 11 * /usr/bin/wxHexEditor
k_mikhail@linux-mk500:~> coredumpctl gdb 3855
PID: 3855 (wxHexEditor)
UID: 1000 (k_mikhail)
GID: 100 (users)
Signal: 11 (SEGV)
Timestamp: Суб 2017-02-18 07:57:21 EET (10min ago)
Command Line: wxHexEditor
Executable: /usr/bin/wxHexEditor
Control Group: /user.slice/user-1000.slice/session-2.scope
Unit: session-2.scope
Slice: user-1000.slice
Session: 2
Owner UID: 1000 (k_mikhail)
Boot ID: 1ce14bb138ad4e279a2e2d33226baf0c
Machine ID: 4664bc7cba6aee90fe1efc7f571cbf28
Hostname: linux-mk500
Coredump: /var/lib/systemd/coredump/core.wxHexEditor.1000.1ce14bb138ad4e279a2e2d33226baf0c.3855.1487397441000000.xz
Message: Process 3855 (wxHexEditor) of user 1000 dumped core.
GNU gdb (GDB; openSUSE Leap 42.2) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/bin/wxHexEditor...(no debugging symbols found)...done.
[New LWP 3855]
[New LWP 3931]
[New LWP 3972]
[New LWP 3932]
[New LWP 3933]
[New LWP 3974]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `wxHexEditor'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0 0x00000000004688a0 in SearchPanel::OnTagSelect(wxCommandEvent&) ()
[Current thread is 1 (Thread 0x7f09b0724a80 (LWP 3855))]
(gdb)
BackTrace:
(gdb) bt
#0 0x00000000004688a0 in SearchPanel::OnTagSelect(wxCommandEvent&) ()
#1 0x00007f09aed4b95e in wxAppConsoleBase::CallEventHandler(wxEvtHandler*, wxEventFunctor&, wxEvent&) const ()
at /usr/lib64/libwx_baseu-suse.so.2
#2 0x00007f09aee8f872 in wxEvtHandler::ProcessEventIfMatchesId(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&) ()
at /usr/lib64/libwx_baseu-suse.so.2
#3 0x00007f09aee904b9 in wxEvtHandler::SearchDynamicEventTable(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.2
#4 0x00007f09aee9050e in wxEvtHandler::TryHereOnly(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.2
#5 0x00007f09aee905a3 in wxEvtHandler::ProcessEventLocally(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.2
#6 0x00007f09aee905f9 in wxEvtHandler::ProcessEvent(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.2
#7 0x00007f09aee9068c in wxEvtHandler::SafelyProcessEvent(wxEvent&) () at /usr/lib64/libwx_baseu-suse.so.2
#8 0x00007f09af9229b7 in wxListBoxBase::SendEvent(int, int, bool) () at /usr/lib64/libwx_gtk2u_core-suse.so.2
#9 0x00007f09aca49b37 in _g_closure_invoke_va (closure=closure@entry=0x22234b0, return_value=return_value@entry=0x0, instance=instance@entry=0x2222440, args=args@entry=0x7ffe1f00f148, n_params=0, param_types=0x0) at gclosure.c:867
#10 0x00007f09aca62918 in g_signal_emit_valist (instance=0x2222440, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7ffe1f00f148) at gsignal.c:3294
#11 0x00007f09aca63592 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=detail@entry=0)
at gsignal.c:3441
#12 0x00007f09ad5c27bc in _gtk_tree_selection_internal_select_node (selection=<optimized out>, node=<optimized out>, tree=<optimized out>, path=path@entry=0x237a250, mode=<optimized out>, override_browse_mode=override_browse_mode@entry=0)
at gtktreeselection.c:1427
#13 0x00007f09ad5d64ae in gtk_tree_view_real_set_cursor (tree_view=tree_view@entry=0x21d4740 [GtkTreeView], path=path@entry=0x237a250, clear_and_select=clear_and_select@entry=1, clamp_node=1) at gtktreeview.c:12610
#14 0x00007f09ad5daa38 in gtk_tree_view_button_press (widget=0x21d4740 [GtkTreeView], event=0x24815c0) at gtktreeview.c:2797
#19 0x00007f09aca63592 in <emit signal ??? on instance 0x21d4740 [GtkTreeView]> (instance=instance@entry=0x21d4740, signal_id=<optimized out>, detail=detail@entry=0) at gsignal.c:3441
#15 0x00007f09ad4e2b65 in _gtk_marshal_BOOLEAN__BOXED (closure=0x1e23ff0, return_value=0x7ffe1f00f480, n_param_values=<optimized out>, param_values=0x7ffe1f00f530, invocation_hint=<optimized out>, marshal_data=0x7f09ad5da240 <gtk_tree_view_button_press>) at gtkmarshalers.c:86
#16 0x00007f09aca49908 in g_closure_invoke (closure=closure@entry=0x1e23ff0, return_value=return_value@entry=0x7ffe1f00f480, n_param_values=2, param_values=param_values@entry=0x7ffe1f00f530, invocation_hint=invocation_hint@entry=0x7ffe1f00f4d0)
at gclosure.c:804
#17 0x00007f09aca5b0cb in signal_emit_unlocked_R (node=node@entry=0x1e4dbb0, detail=detail@entry=0, instance=instance@entry=0x21d4740, emission_return=emission_return@entry=0x7ffe1f00f600, instance_and_params=instance_and_params@entry=0x7ffe1f00f530) at gsignal.c:3667
#18 0x00007f09aca62f78 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffe1f00f6c8) at gsignal.c:3395
#20 0x00007f09ad5f2884 in gtk_widget_event_internal (widget=widget@entry=0x21d4740 [GtkTreeView], event=event@entry=0x24815c0) at gtkwidget.c:5017
#21 0x00007f09ad5f2b59 in IA__gtk_widget_event (widget=widget@entry=0x21d4740 [GtkTreeView], event=event@entry=0x24815c0)
at gtkwidget.c:4814
#22 0x00007f09ad4e1314 in IA__gtk_propagate_event (widget=0x21d4740 [GtkTreeView], event=0x24815c0) at gtkmain.c:2501
#23 0x00007f09ad4e16cb in IA__gtk_main_do_event (event=0x24815c0) at gtkmain.c:1696
#24 0x00007f09ad153c1c in gdk_event_dispatch (source=<optimized out>, callback=<optimized out>, user_data=<optimized out>)
at gdkevents-x11.c:2425
#25 0x00007f09ac775134 in g_main_context_dispatch (context=0x1e09470) at gmain.c:3154
#26 0x00007f09ac775134 in g_main_context_dispatch (context=context@entry=0x1e09470) at gmain.c:3769
#27 0x00007f09ac775388 in g_main_context_iterate (context=0x1e09470, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at gmain.c:3840
#28 0x00007f09ac77564a in g_main_loop_run (loop=0x23b98c0) at gmain.c:4034
#29 0x00007f09ad4e07b7 in IA__gtk_main () at gtkmain.c:1268
#30 0x00007f09af809c95 in wxGUIEventLoop::DoRun() () at /usr/lib64/libwx_gtk2u_core-suse.so.2
#31 0x00007f09aed7cad1 in wxEventLoopBase::Run() () at /usr/lib64/libwx_baseu-suse.so.2
#32 0x00007f09aed4bf0d in wxAppConsoleBase::MainLoop() () at /usr/lib64/libwx_baseu-suse.so.2
#33 0x00007f09aedc642d in wxEntry(int&, wchar_t**) () at /usr/lib64/libwx_baseu-suse.so.2
#34 0x000000000041bff2 in main ()
(gdb)
libwx_ 3.1.0-4.1 version is installed for wxhexeditor-0.23+git20170214-24.1.
With WxWidget version > 2.8, wxString wxXmlNode::GetPropVal(const wxString&, const wxString&) const
is now deprecated (https://github.com/wxWidgets/wxWidgets/blob/c7f1a920b1aeaa6760da4c99fd533ee01d5081b8/include/wx/xml/xml.h, line 179)
It is called in src/HexEditorCtrl/HexEditorCtrl.cpp
.
It would be nice to fix this, so that it's ready for a higher wxwidget version.
Hello!
wxH: 0.23+git20170221-36.1 in use.
Step-to-reproduce algo:
Note: in case of Disassembler Panel is ON, execution of 'Find' with 'Search backward' is OFF will return 'invalid' status.
Test file is attached: test.txt
P.S. And, traditionally, long story short: https://www.youtube.com/watch?v=lSTq6gDUSEw
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.