1
0
mirror of synced 2024-12-13 00:11:06 +01:00
Commit Graph

320 Commits

Author SHA1 Message Date
WerWolv
a641f27b7e Improved events API 2021-01-21 10:53:12 +01:00
WerWolv
b2648afc7b Improve bookmark API 2021-01-20 20:16:24 +01:00
WerWolv
be738eb5e7 Improved byte highlighting 2021-01-20 18:10:40 +01:00
WerWolv
740619529c Allow most modal popups to be closed with escape 2021-01-14 17:01:44 +01:00
WerWolv
cd200b978b Properly set the initial bookmark name 2021-01-13 22:53:33 +01:00
WerWolv
0a8368d639 Close base address popup when clicking Set 2021-01-13 22:53:21 +01:00
WerWolv
eb066b3539 Refactored libimhex to and includes to better represent it as library 2021-01-13 17:28:27 +01:00
WerWolv
c7d179d68e Use the ID stack the way it was meant to be used 2021-01-13 16:55:42 +01:00
WerWolv
c1ad816211 Added hover tooltip for bookmarks in hex editor 2021-01-13 16:45:31 +01:00
WerWolv
4328a335ec Added color picker for Bookmarks and highlighting in the hex view 2021-01-13 14:11:23 +01:00
WerWolv
0e32dd667d Made tools registry more in-line with the other APIs 2021-01-13 13:18:03 +01:00
WerWolv
d15307a237 Added data inspector to content registry 2021-01-13 01:24:27 +01:00
WerWolv
df50f1934e Fixed display of most signed integers in the data inspector 2021-01-12 23:39:31 +01:00
WerWolv
dc85616549 Hopefully fixed the whole plugin mess I started 2021-01-12 23:28:41 +01:00
WerWolv
84a6fff034 Refactored plugin system 2021-01-12 16:50:15 +01:00
WerWolv
90e0aa83d8 Added registry for command palette commands 2021-01-11 23:02:55 +01:00
WerWolv
46388f4707 Added experimental support for Light and Classic theme
MY EYES
2021-01-11 20:32:12 +01:00
WerWolv
d68b931013 Added settings registry and settings menu 2021-01-11 20:31:40 +01:00
WerWolv
14adcc0e51 Added set base address function to hex editor
This resolves #19
2021-01-11 13:50:04 +01:00
WerWolv
7784fca0d4 Always display Pattern Data table header 2021-01-11 09:53:20 +01:00
WerWolv
8b19f0c3c0 Improved UTF-8 display in data inspector 2021-01-11 00:34:50 +01:00
WerWolv
73e259d6e7 Added engineering display mode to calculator 2021-01-11 00:27:00 +01:00
WerWolv
f9039f4b34 Added hex editor view right click context menu 2021-01-10 23:59:36 +01:00
George Hopkins
5fb046ad1f
Show commit on about page only if available (#132) 2021-01-10 22:57:57 +01:00
WerWolv
7a8e923b41 Added print & warnAssert functions and a colored console 2021-01-09 23:48:42 +01:00
WerWolv
9f275cc84f Show evaluator errors in a console window instead of the first line 2021-01-09 21:47:52 +01:00
WerWolv
80e0782fdb Various UI/UX improvements 2021-01-08 19:34:29 +01:00
WerWolv
99f37504de Force reload the current pattern when loading a new file 2021-01-08 17:38:43 +01:00
WerWolv
5d1e53f469 Added boolean patterns 2021-01-07 17:34:50 +01:00
WerWolv
acfd5aa02f Added if, else and else if to pattern language 2021-01-07 00:02:51 +01:00
WerWolv
eed7ef1ac3 Make sure important data is synchronized between ImHex and plugins 2021-01-04 00:19:56 +01:00
WerWolv
c7c654d310 Improved data inspector displaying, added additional number formats 2021-01-03 17:12:20 +01:00
WerWolv
206be8b110 Greatly improved hex editor byte highlighting performance 2021-01-03 02:37:37 +01:00
WerWolv
78ef07cf0f
Pattern Language rewrite (#111)
* Initial parser rewrite effort

Lexer and Token cleanup, Parser started over

* Greatly improved parser syntax

* Reimplemented using declarations and variable placement parsing

* Added back unions and structs

* Added enums as well as mathematical expressions (+, -, *, /, <<, >>, &, |, ^)

* Code style improvement

* Implemented arrays and fixed memory issues

* Fixed more memory issues in parser, reimplemented validator, evaluator and patterns

* Fixed builtin types, arrays and reimplemented strings

* Improved error messages

* Made character a distinct type, used for chars and strings

* Implemented padding, fixed arrays

* Added bitfields

* Added rvalue parsing, no evaluating yet

* Added .idea folder to gitignore

* Fixed build on MacOS

* Added custom implementation of integral concept if not available

* Rebased onto master

* Fixed array variable decl crash

* Added rvalues and dot syntax

* Lower case all pattern language error messages

* Fixed typo in variable name

* Fixed bug where preprocessor would not ignore commented out directives

* Reimplemented pointers

* Fixed rebase issues
2021-01-02 20:27:11 +01:00
WerWolv
f74eff8934 Add support for custom providers via plugins 2020-12-27 15:39:06 +01:00
WerWolv
dbbc525174
Added Plugin support (#102)
* Build refactoring and initial plugin support

* Possibly fixed linux / mac build

* Added libdl to libglad build script

* Add glfw to imgui dependencies

* Refactored common functionality into "libimhex" for plugins

* Added plugin loading and example plugin

* Added proper API for creating a custom view and a custom tools entry with plugins
2020-12-22 18:10:01 +01:00
WerWolv
b9324f44e6 Added selected addresses to hex editor footer
This (and the two previous commits) fixes #99
2020-12-21 15:20:57 +01:00
WerWolv
7c350dde90 Added current commit hash and branch to about page 2020-12-21 12:38:50 +01:00
WerWolv
2c1759ce0a Unified OS and arch checking defines 2020-12-21 12:38:30 +01:00
WerWolv
4b59d57f89 Added version info to about page 2020-12-21 11:24:27 +01:00
WerWolv
15b3860f83 Fixed data inspector not updating properly in all cases 2020-12-21 11:23:57 +01:00
Mary
310059f274 Support macOS
This allows building and running under macOS.
There is still some issues with dpi but the application compiles and run now.
2020-12-18 21:44:13 +01:00
WerWolv
9123b21e18 Added basic command palette (similar to the one in vscode) 2020-12-16 22:43:07 +01:00
averne
56cca88fbd
Proper DPI scaling and basic custom font (#85)
* add glm to arch deps

After running got `None of the required 'glm' found`. This fixes that

* dist/fedora: Include file magic headers

Due to differences in package names between Deb based systems, Arch
Linux, and RPM based systems the package containing the development
headers for file were missing from the Fedora dependencies script.

This includes the package `file-devel`, which is the package which
resolves the issue.

In Fedora, one can identify the package providing a specific file using
the verb "whatprovides" with the command dnf, e.g.:

    [~]$ dnf whatprovides /usr/include/magic.h
    Last metadata expiration check: 4 days, 0:23:05 ago on Fri 04 Dec 2020 09:06:53 AM PST.
    file-devel-5.39-3.fc33.i686 : Libraries and header files for file development
    Repo        : fedora
    Matched from:
    Filename    : /usr/include/magic.h

    file-devel-5.39-3.fc33.x86_64 : Libraries and header files for file development
    Repo        : @System
    Matched from:
    Filename    : /usr/include/magic.h

    file-devel-5.39-3.fc33.x86_64 : Libraries and header files for file development
    Repo        : fedora
    Matched from:
    Filename    : /usr/include/magic.h

If one is unsure of the specific path, globbing may be used (but must be
quoted):

    dnf whatprovides "*/magic.h"

Resolves #48

* dist: Prevent already installed packages in ArchLinux and MSYS2.

Use --needed option with pacman to prevent it.

* Add script to install dependencies on Debian/Ubuntu.

Tested with Xubuntu 20.04 and Debian testing
(in today's Docker image bitnami/minideb).

Update README.md.

* ci: rework (#31)

* Support non standard LLVM library names (#86)

This fix openSUSE and Gentoo issue mentioned in https://github.com/WerWolv/ImHex/issues/37#issuecomment-739503138.

(tested on openSUSE tumbleweed via Docker)

I also took the liberty of renaming llvm_lib to llvm_demangle_lib to be more specific in the ``CMakeLists.txt``.

* Implement proper DPI handling

* Implement basic custom font support

* Fix building on windows

* Hopefully fix fonts on Windows

* Fix several scaling issues

* Replace font renderer with freetype

* Updated CI and dependency scripts

* Rebuild default font atlas

* Correct platform detection macro for mingw

* Fixed PKGBUILD

Co-authored-by: brockelmore <31553173+brockelmore@users.noreply.github.com>
Co-authored-by: Brian 'Redbeard' Harrington <redbeard@dead-city.org>
Co-authored-by: Biswapriyo Nath <nathbappai@gmail.com>
Co-authored-by: Stéphane Gourichon <stephane.gourichon@fidergo.fr>
Co-authored-by: umarcor <38422348+umarcor@users.noreply.github.com>
Co-authored-by: Mary <me@thog.eu>
Co-authored-by: WerWolv <werwolv98@gmail.com>
2020-12-11 14:24:42 +01:00
WerWolv
e1e73077a1 Improved language parsing and validation. This fixes #58 2020-12-07 23:49:19 +01:00
WerWolv
485761f45c Fixed ImHex refusing to be closed in some circumstances 2020-12-07 00:42:52 +01:00
WerWolv
7a9d7b59e8 Added overriding of endianess for individual variables 2020-12-06 21:40:57 +01:00
WerWolv
4720cf9fbe Added possible support for MacOS. Completely untested.
Relevant: #32
2020-12-06 13:48:56 +01:00
WerWolv
68f93c5e3d Fixed possible crash when loading files, relax pattern detection requirements
This fixes #20
2020-12-05 22:30:09 +01:00
WerWolv
7b8330f8f8 Added command line support / dropping files onto executable
Closes #36
2020-12-05 22:10:03 +01:00
Mary
45c29888b4 Abstract capstone architectures
This allows to support older version of Capstone (example 4.0.1).

Should help with ubuntu building issues.
2020-12-05 17:32:30 +01:00
WerWolv
a30453616b Turned cheat sheet popups into actual windows 2020-12-05 11:34:49 +01:00
WerWolv
168ba2ff9f Denote invalid GUIDs in data inspector
Addresses #24
2020-12-05 11:00:56 +01:00
WerWolv
2ca9a8fc79 Fixed data inspector displaying zero at the end of data
Fixes #25
2020-12-05 10:42:42 +01:00
WerWolv
17096055f8 Added create_struct and create_union function to Python API 2020-12-01 16:41:38 +01:00
WerWolv
c6134bc038 Added basic python-based load scripts 2020-12-01 02:21:40 +01:00
WerWolv
16f885f469 Added read/write command to math evaluator 2020-11-30 21:45:48 +01:00
WerWolv
00072d0216 Improved pattern language cheat sheet, added math evaluator cheat sheet 2020-11-30 21:44:40 +01:00
WerWolv
4878f70e58 Added project files 2020-11-30 00:03:12 +01:00
WerWolv
9e8523470d Added applying of IPS and IPS32 patches 2020-11-29 15:09:36 +01:00
WerWolv
7316be0bc2 Added patches display window 2020-11-29 02:06:41 +01:00
WerWolv
3276ad9979 Open file dialog to not pop up if hex view wasn't open 2020-11-29 01:17:54 +01:00
WerWolv
c90ef343c1 Added math evaluator / calculator to tools window 2020-11-28 21:55:52 +01:00
WerWolv
1395c95831 Same treatment for the disassembly window 2020-11-28 16:15:12 +01:00
WerWolv
33b70a550f Improved look and feel of hash window. Added "Match selection" feature 2020-11-28 15:53:11 +01:00
WerWolv
985e924e9d Added simple bookmarks / comments feature. No saving yet though 2020-11-28 00:33:26 +01:00
WerWolv
3827919a32 Added error messages and error display to pattern language editor 2020-11-27 21:20:23 +01:00
WerWolv
d55bea7c46 Added character literals to pattern language 2020-11-27 14:18:28 +01:00
WerWolv
2efe326fdb Added Save, Save As and implemented error message for Base64 importing 2020-11-27 13:45:56 +01:00
WerWolv
d43bd23e1a Added default error message window 2020-11-27 13:45:27 +01:00
WerWolv
015ec12215 Improved byte write speed by a lot 2020-11-27 13:44:52 +01:00
WerWolv
fde9dc7961 Various small fixes 2020-11-27 09:09:59 +01:00
WerWolv
ed572ececf Added patching system and IPS/IPS32 patch exporting 2020-11-27 09:09:48 +01:00
WerWolv
acc10930c2 Added MSVC symbol demangling, switched to LLVM libs for demangling 2020-11-24 18:12:08 +01:00
WerWolv
f17d6c2359 Added copy string and copy demangled string to strings window 2020-11-24 02:59:49 +01:00
WerWolv
58deaa6b29 Added importing from base64 encoded file 2020-11-24 02:00:22 +01:00
WerWolv
fcd88b4b3b Shrink the color picker to a bit more reasonable size 2020-11-24 00:01:44 +01:00
WerWolv
3bd987ff2c Streamline view creation, save all view states when quitting 2020-11-23 23:57:19 +01:00
WerWolv
0d0b2d6962 Indent variable name instead of color in pattern data view 2020-11-23 22:14:11 +01:00
WerWolv
fd6a41d219 Make selecting memory by clicking on a table item update the inspector 2020-11-23 16:26:01 +01:00
WerWolv
b052429a73 Improved ASCII and Wide char display in data inspector 2020-11-23 16:19:58 +01:00
WerWolv
1996f401e0 Fixed last block searched for strings to yield invalid results 2020-11-23 16:19:31 +01:00
WerWolv
3b3f2226f1 Remove collapse button from all windows 2020-11-23 15:51:58 +01:00
WerWolv
b7438f6ab8 Massively improved look and feel of pattern data, string and disassembly tables 2020-11-23 15:22:26 +01:00
WerWolv
84f80b3e06 Select region when clicking on string, disassembly or pattern data item 2020-11-23 13:10:14 +01:00
WerWolv
c281372b8d Improved table coloring 2020-11-23 13:08:24 +01:00
misson20000
01eeb53af0 Fix out-of-bounds vector write on copy hex string 2020-11-22 18:00:46 -08:00
misson20000
7cf69128ea Actually fix time_t decoding crash on Linux 2020-11-22 18:00:17 -08:00
WerWolv
2ab2f5e675 Improved block size text 2020-11-23 00:34:53 +01:00
WerWolv
f0eba69c4a Fixed time_t decoding crash on Linux 2020-11-23 00:20:29 +01:00
WerWolv
cea366e135 Fixed crash when scrolling disassembler options child off screen 2020-11-23 00:12:53 +01:00
WerWolv
d752c7434f Fixed crash when no patterns folder exists 2020-11-23 00:12:33 +01:00
WerWolv
4402120ffc Added the capstone disassembler and a disassembler window 2020-11-22 23:07:50 +01:00
WerWolv
b3fffdf530 Fixed automatic pattern loading 2020-11-22 23:06:17 +01:00
WerWolv
8d6d959e17 No need to manually set table colors 2020-11-22 20:41:54 +01:00
WerWolv
43f5cc622e Allow loading of huge files efficiently 2020-11-22 19:43:35 +01:00
WerWolv
5f025bcbcc Fixed UTF-8 decoding to not work 2020-11-22 16:22:23 +01:00
WerWolv
8297e22f10 Added global big and little endian support to the pattern parser 2020-11-22 16:22:02 +01:00
WerWolv
989eade5d7 Added big and little endian support to inspector 2020-11-22 15:32:37 +01:00
WerWolv
cd4de2ff96 Fixed data inspector to only show unsigned values 2020-11-22 12:50:49 +01:00
WerWolv
73d66365e9 Updated cheat sheet page 2020-11-22 11:20:01 +01:00
WerWolv
ed4ed6b433 Added array sizes based on other local variables 2020-11-21 20:19:33 +01:00
WerWolv
4cd18b8358 Added auto loading patterns based on MIME types 2020-11-21 14:39:16 +01:00
WerWolv
28bb28b79c Also rename data inspector window 2020-11-21 14:37:09 +01:00
WerWolv
e3b6cfd54f Fixed compile on Linux 2020-11-21 00:36:38 +01:00
WerWolv
bf6ed3d540 Added proper data inspector view 2020-11-21 00:12:58 +01:00
WerWolv
9c0a270d90 Made the built-in type hover popup more useful 2020-11-20 22:21:59 +01:00
WerWolv
5112c3aa1e Added unions and padding to cheat sheet 2020-11-20 22:21:37 +01:00
WerWolv
57dcf6cc93 Added padding type to pattern language 2020-11-20 21:59:27 +01:00
WerWolv
48296775ae Implemented union support into the pattern language 2020-11-20 21:29:28 +01:00
WerWolv
e3cb078306 Implemented bitfield support into the pattern language 2020-11-20 20:26:19 +01:00
WerWolv
2f78a10e4c Replaced pattern editor with BalazsJako's ImGuiColorTextEdit 2020-11-20 18:24:59 +01:00
WerWolv
302caba403 Added copy hex view as HTML option 2020-11-20 15:15:43 +01:00
WerWolv
81e5c945b4 Added copy hex view as string option 2020-11-20 13:25:55 +01:00
WerWolv
78ea4276ae Use constexpr for C++ array 2020-11-20 11:58:40 +01:00
WerWolv
e4879f7546 Added copy programming language array to hex editor 2020-11-20 11:57:14 +01:00
WerWolv
34b8f481e1 Improved table rendering 2020-11-20 11:56:37 +01:00
WerWolv
f36014194d Bring strings view and pattern data view in line with each other 2020-11-20 00:16:50 +01:00
WerWolv
f748b75a19 Added begin, current and end goto offset modes 2020-11-19 23:24:34 +01:00
WerWolv
6a815d5ebb Allow mouse highlighting of bytes highlighted by pattern 2020-11-19 22:34:56 +01:00
WerWolv
89afbd1aef Fixed pattern data view not rendering at all 2020-11-19 21:59:27 +01:00
WerWolv
24c8fc6957 Added back pattern data sorting 2020-11-19 21:19:03 +01:00
WerWolv
9b04373809 Use htonl instead of bswap to technically support big endian systems 2020-11-19 11:37:16 +01:00
WerWolv
6fffc589bf Completely rewrite highlight and pattern evaluator 2020-11-19 11:36:52 +01:00
WerWolv
0889764bcc Updated credits 2020-11-17 15:38:42 +01:00
WerWolv
e40bb5c498 Use ImGui-Addons by gallickgunner as file picker instead 2020-11-17 15:38:24 +01:00
WerWolv
e61dfa0927 Fixed about and cheat sheet window 2020-11-17 13:59:16 +01:00
WerWolv
6e21f703ab Added file drag and drop support 2020-11-17 13:58:50 +01:00
WerWolv
d05805595e Fixed copying when highlightEnd > highlightStart 2020-11-17 02:36:12 +01:00
WerWolv
975c3a9276 Added byte color to pattern data table 2020-11-17 02:33:15 +01:00
WerWolv
4c07983834 Added pattern preprocessor and #define and #include support 2020-11-17 02:31:51 +01:00
WerWolv
c863b2f65b Added validator to catch more syntax errors in pattern code 2020-11-16 22:54:39 +01:00
WerWolv
8b9b284ae9 Add more hex editor shortcuts 2020-11-16 00:07:42 +01:00
WerWolv
559fd28036 Added hexadecimal search 2020-11-15 23:04:46 +01:00
WerWolv
4452f9754e Added regex replacer and color picker to tools window 2020-11-15 21:31:04 +01:00
WerWolv
cd9d0bcf34 Show more information in data information window 2020-11-15 16:06:10 +01:00
WerWolv
0b8b887978 Make strings view less laggy 2020-11-15 03:51:59 +01:00
WerWolv
9320ffdbbd Add ASCII table to tools 2020-11-15 02:50:56 +01:00
WerWolv
a955f522bd Added strings finder 2020-11-15 01:42:43 +01:00
WerWolv
2526eda0db Added tools window 2020-11-15 00:46:38 +01:00
WerWolv
5b2dc51c07 Use tables to display pattern data 2020-11-15 00:46:18 +01:00
WerWolv
c758eb244b Added a help window 2020-11-14 21:16:03 +01:00
WerWolv
658d4ec478 Revamped pattern data displaying to support per-type displaying 2020-11-14 14:42:21 +01:00
WerWolv
72f9da2a67 Display entropy by always creating 2048 blocks for every file 2020-11-14 14:41:15 +01:00
WerWolv
999db12a3a Added // and /* */ style comments to scripting language 2020-11-13 14:35:52 +01:00
WerWolv
7a30072fcb Removed useless pattern file size limitation 2020-11-13 13:50:59 +01:00
WerWolv
8aa4402f88 Don't show pattern editor when no file is loaded 2020-11-13 13:06:22 +01:00
WerWolv
295b32b890 Fixed handle leak when loading pattern file
Thanks @HookedBehemoth
2020-11-13 12:07:30 +01:00
WerWolv
0dcf02f891 Actually display signed and floating point data in the right format 2020-11-13 12:07:05 +01:00
WerWolv
15b91c1cac Show complete variable name in pattern data view 2020-11-13 11:37:43 +01:00
WerWolv
0bdc442bf0 Fixed pattern array highlighting offsets being wrong 2020-11-13 11:15:34 +01:00
WerWolv
d44ffde2a9 Fixed color flickering after loading pattern 2020-11-13 11:15:07 +01:00
WerWolv
761522a540 Fixed highlighting calculating sizes wrongly 2020-11-13 00:42:29 +01:00
WerWolv
83bb358427 Added arrays 2020-11-12 23:57:43 +01:00
WerWolv
86fdd531da Fix crash if no magic folder is present 2020-11-12 23:08:17 +01:00
WerWolv
1d15e3be18 Get ready for linux build 2020-11-12 22:22:33 +01:00
WerWolv
a166bf4ed8 Improved libmagic usage. Now supports additional databases 2020-11-12 21:21:11 +01:00
WerWolv
d88bb877b6 Use imfilebrowser instead of Window's file browser 2020-11-12 21:20:51 +01:00
WerWolv
6512d22981 Remove extra new line if file has low entropy 2020-11-12 12:01:13 +01:00
WerWolv
5ba3badcbf Add more hash algorthms, switch to openssl / libcrypto 2020-11-12 12:00:50 +01:00
WerWolv
3a6d19eca4 Added event system and make use of it for data invalidation 2020-11-12 09:38:52 +01:00
WerWolv
e3df658b4a Added text searching in hex editor 2020-11-11 14:42:01 +01:00
WerWolv
3dfff3c754 Don't try to hash more bytes than the file contains 2020-11-11 11:56:24 +01:00
WerWolv
9e62685fd1 Fix crash when moving around certain views 2020-11-11 10:47:02 +01:00
WerWolv
9b6b43356b Added entropy view 2020-11-11 10:46:41 +01:00
WerWolv
6f59955c92 Added FPS display 2020-11-11 09:22:55 +01:00
WerWolv
434bb3494a Abstracted FILE handle into a generic data provider class 2020-11-11 09:18:35 +01:00
WerWolv
c87bc6aebe Implemented hash view with CRC16, CRC32 and MD5 support
More to come
2020-11-11 00:13:09 +01:00
WerWolv
5398a9d0d0 Improved data display 2020-11-11 00:12:30 +01:00
WerWolv
35946564a6 Refactor, added a pattern data display 2020-11-10 21:31:04 +01:00