1
0
Fork 0

Compare commits

...

172 Commits

Author SHA1 Message Date
Duncan Ogilvie 85e0ff8579 Fix positional issue with release notes dialog on startup 2025-08-19 21:36:23 +02:00
Duncan Ogilvie d6294a8370
Merge pull request #3686 from x64dbg/release-notes
Release notes dialog
2025-08-19 20:51:04 +02:00
Duncan Ogilvie 099a17a16a Build x64dbg.chm in CI
Closes #3687
2025-08-19 20:18:51 +02:00
Duncan Ogilvie dc3e8299d4 Update GitHub Actions to set X64DBG_RELEASE and upload pluginsdk 2025-08-19 19:39:25 +02:00
Duncan Ogilvie 7e31351107 Add dark mode bug icon 2025-08-19 18:14:00 +02:00
Duncan Ogilvie 4803303d28 Fix cross build 2025-08-19 00:54:18 +02:00
Duncan Ogilvie 3dc0f662fb Add release notes in the update checker 2025-08-19 00:05:02 +02:00
Duncan Ogilvie 49c145e603 Fix compilation on Qt 5.12 2025-08-19 00:04:28 +02:00
Duncan Ogilvie 05632f429a Show release notes on first startup of a new version 2025-08-18 21:50:23 +02:00
Duncan Ogilvie 5c84c5230d Move ReleaseNotesDialog to x64dbg::widgets 2025-08-18 21:43:26 +02:00
Duncan Ogilvie 28178084c6 Resize images when ImageTextBrowser width changes 2025-08-18 18:08:06 +02:00
Duncan Ogilvie b9f4f834fa Refactor ReleaseNotesDialog to prepare for release 2025-08-18 16:23:57 +02:00
Duncan Ogilvie f99c7c294b Update debug engines to 2025.08.18
https://github.com/x64dbg/TitanEngine/releases/tag/2025.08.18
https://github.com/x64dbg/GleeBug/releases/tag/2025.08.18
2025-08-18 03:41:31 +02:00
Duncan Ogilvie dc3a12bb50 Add support for sanitizers and fix a crash 2025-08-18 03:04:54 +02:00
Duncan Ogilvie dced055689 Fix struct view refreshing and add error message when connection fails 2025-08-18 02:41:40 +02:00
Duncan Ogilvie 531088c8eb Simplify licenses sections of the docs to use links instead 2025-08-18 01:45:17 +02:00
Duncan Ogilvie 1b9b7664ec
Merge pull request #3224 from x64dbg/cross-platform
Add some cross platform example projects
2025-08-18 01:23:10 +02:00
Duncan Ogilvie 54ddde3de0 Switch to fetch-content for udmp-parser 2025-08-18 01:04:57 +02:00
Duncan Ogilvie 0b00197a4a Add missing 0xPrefixValues config 2025-08-18 00:09:28 +02:00
Duncan Ogilvie a1352559f0 Only use color hacks for TypeWidget in x64dbg 2025-08-17 21:08:13 +02:00
Duncan Ogilvie 06cc3703ad Use existing TypeWidget instead of a butchered StructWidget in hex_viewer 2025-08-17 21:08:13 +02:00
Duncan Ogilvie b711f19694 Remove redundant release.bat 2025-08-17 21:08:13 +02:00
Duncan Ogilvie c11e93f283 Fix more compiler warnings 2025-08-17 21:08:13 +02:00
Duncan Ogilvie cc983665bd Fix printf warnings on linux 2025-08-17 21:08:13 +02:00
Duncan Ogilvie c4e61a5030 Update linux-pe 2025-08-17 21:08:13 +02:00
Duncan Ogilvie 22bae7bfe3 Fix compilation error with qfloat16 2025-08-17 21:08:13 +02:00
Duncan Ogilvie d70428c1cf Use Qt6 for better coverage 2025-08-17 21:08:13 +02:00
Duncan Ogilvie 64bc74a434 Fix include in zydis_wrapper 2025-08-17 21:08:13 +02:00
Duncan Ogilvie 88b268de05 Remove struct_viewer and btparser from cross 2025-08-17 21:08:12 +02:00
Duncan Ogilvie a04b3cafa2 Fix cross platform install 2025-08-17 21:08:12 +02:00
Duncan Ogilvie 42d6a0fe68 Fix qt_executable to work with Qt6 2025-08-17 21:08:12 +02:00
Duncan Ogilvie 7ed54825a8 Fix release_notes compilation on Windows 2025-08-17 21:08:12 +02:00
Duncan Ogilvie 9af3f860a6 Add release_notes test application 2025-08-17 21:08:12 +02:00
Duncan Ogilvie 2c226c9147 Fix pattern language integration after bump 2025-08-17 21:08:12 +02:00
Duncan Ogilvie 4f996a7276 Add GitHub actions for cross platform build 2025-08-17 21:08:12 +02:00
Duncan Ogilvie 2dbe6c1600 Bump ImHex PatternLanguage for unity build 2025-08-17 21:08:12 +02:00
Duncan Ogilvie b79a172f3e Fix compilation on Windows 2025-08-17 21:08:12 +02:00
Duncan Ogilvie 5a7cbc4a7b Minor usability improvements for hex_viewer 2025-08-17 21:08:12 +02:00
Duncan Ogilvie 0d2259a311 Add selection underlining feature to HexDump 2025-08-17 21:08:12 +02:00
Duncan Ogilvie 6b2c8d1d26 Initial POC for pattern language working 2025-08-17 21:08:11 +02:00
Duncan Ogilvie b5f6df737d Fix formatting 2025-08-17 21:08:11 +02:00
Duncan Ogilvie a4c45cf48d Fix compilation on windows 2025-08-17 21:08:11 +02:00
Duncan Ogilvie 608a10535c WIP: add a bunch of TODO comments 2025-08-17 21:08:11 +02:00
Duncan Ogilvie f8cefad5c1 Dark theme for hex_viewer 2025-08-17 21:08:11 +02:00
Duncan Ogilvie 56a151c06d Initial work on hex_viewer 2025-08-17 21:08:11 +02:00
Duncan Ogilvie d9e0a2e3df Reuse an std::vector for the read buffer in the HexDump 2025-08-17 21:08:11 +02:00
Duncan Ogilvie b79b1fd0e9 Correctly round up row count in HexDump when appropriate 2025-08-17 21:08:11 +02:00
Duncan Ogilvie 566f0d07d5 Support displaying memory at base 0 in HexDump 2025-08-17 21:08:11 +02:00
Duncan Ogilvie 735d7d7450 Allow disabling underlining in the HexDump 2025-08-17 21:08:11 +02:00
Duncan Ogilvie 1ab2af295c Fix formatting 2025-08-17 21:08:11 +02:00
Duncan Ogilvie f28e7a3362 Fix compilation on Windows 2025-08-17 21:08:10 +02:00
Duncan Ogilvie 35ca7ec4e8 Initial work on StructWidget based on btparser 2025-08-17 21:08:10 +02:00
Duncan Ogilvie 1503c00bfc Add Intel One Mono embedded fonts 2025-08-17 21:08:10 +02:00
Duncan Ogilvie 24644ed642 Empty struct_viewer project 2025-08-17 21:08:10 +02:00
Duncan Ogilvie 351890978b Play around with debouncing slow events in the remote table 2025-08-17 21:08:10 +02:00
Duncan Ogilvie 31f1fb6877 Basic PE file support 2025-08-17 21:08:10 +02:00
Duncan Ogilvie a2af08bd33 Rename AbstractParser to FileParser 2025-08-17 21:08:10 +02:00
Duncan Ogilvie c3d608759b Add vendored linux-pe 2025-08-17 21:08:10 +02:00
Duncan Ogilvie 7038b31e22 Abstract minidump parser 2025-08-17 21:08:09 +02:00
Duncan Ogilvie a3fb148644 Improve lag on startup when REToolSync doesn't connect 2025-08-17 21:08:09 +02:00
Duncan Ogilvie 5d4486e9b0 Add a simple overlay for connection status 2025-08-17 21:08:09 +02:00
Duncan Ogilvie 950e4a7f07 Fix compilation on macos (Qt5) 2025-08-17 21:08:09 +02:00
Duncan Ogilvie 52ec21f647 Add the missing minidump cross platform example project 2025-08-17 21:08:09 +02:00
Duncan Ogilvie f4f93fbfb8 Add some cross platform example projects 2025-08-17 21:08:09 +02:00
Duncan Ogilvie 6cacef3336 Remove dbghelp/DeviceNameResolver/TitanEngine from pluginsdk
#3412
2025-08-17 21:05:07 +02:00
Duncan Ogilvie 9e6fc87773 Fix code formatting 2025-08-17 20:36:57 +02:00
Duncan Ogilvie c84549a8ad
Merge pull request #3668 from torusrxxx/patch000000fd
Upgrade _WIN32_WINNT to Windows 7
2025-08-17 18:02:49 +02:00
Duncan Ogilvie 49ef645cb1 Remove XP compatibility code behind _WIN32_WINNT 2025-08-17 18:01:29 +02:00
Duncan Ogilvie cca598427f
Merge pull request #3681 from dabeibao/development
Goto dialog: add completion for labels
2025-08-17 17:50:53 +02:00
Duncan Ogilvie c7d5592623
Merge pull request #3672 from torusrxxx/patch000000e2
Search for intermodular calls in trace
2025-08-17 17:50:25 +02:00
Duncan Ogilvie 4f0b68c69f
Merge pull request #3670 from torusrxxx/patch000000fe
Follow in stack in trace registers view; fix shortcuts in registers view
2025-08-17 17:50:02 +02:00
Duncan Ogilvie 19bca832b3
Merge pull request #3674 from x64dbg/unity-build
Unity build
2025-08-17 17:49:44 +02:00
Duncan Ogilvie ee8d5ff93c
Merge pull request #3679 from eldarkg/fix-patch-file
Patch file: fix wine usage
2025-08-17 17:49:27 +02:00
dabeibao 01daf5c5b8 Goto dialog: add completion for labels
The lables' completions have lower priority.
The decoration role is also set to "functions" because
SymAutoComplete can only return strings.
2025-08-10 18:14:17 +08:00
Eldar Khayrullin 7f866fde29 Patch file: fix wine usage 2025-08-09 17:24:11 +03:00
Duncan Ogilvie f73d41feba Enable CMAKE_UNITY_BUILD in GitHub Actions 2025-08-05 23:42:44 +02:00
Duncan Ogilvie a1abde511e Prepare for unity builds 2025-08-05 23:09:44 +02:00
torusrxxx ecfc40fa58
Search for intermodular calls in trace 2025-08-04 10:42:01 +08:00
Eldar Khayrullin dc3b0a6540
Msvc wine build x64 architecture (#3669)
* COMPILE-linux: clarified the issues description

* qt-wine: delete deprecated workaround

* COMPILE-linux: restyle

* COMPILE-linux: add the instruction for build x64 architecture

* readme: add reference to linux compile

* Revert "readme: add reference to linux compile"

This reverts commit 56dbeb1f448ae11d1f79c5c99cc9dfb1b9b84cb1.
2025-08-03 15:08:25 +02:00
Duncan Ogilvie 79539ee416 Allow using VirtualQueryEx in MemIsCodePage and enable it everywhere
This fixes unnecessary popups when setting breakpoints in a region that
has been partially set to be executable.
2025-07-29 23:40:01 +02:00
torusrxxx badf2becf4
Follow in stack in trace registers view; fix shortcuts in registers view 2025-07-27 21:30:48 +08:00
Duncan Ogilvie e225968c4f Properly synchronize breakpoint commands and script state 2025-07-27 01:50:04 +02:00
torusrxxx bb300b6d30
Use thread local translation buffer for Windows Vista 2025-07-26 22:38:55 +08:00
torusrxxx dc96bc102b
Fix compiling for _WIN32_WINNT 0x0502 2025-07-26 16:22:19 +08:00
torusrxxx 232049df62
Upgrade _WIN32_WINNT to Windows 7, clean up GetProcAddress calls 2025-07-26 12:27:19 +08:00
ghadv0 c0d887dba5
Intermodular calls: add column for module name (#3664)
* Intermodular calls: add column for the module name (of the module containing the call instruction)
2025-07-26 00:43:49 +02:00
Duncan Ogilvie 926a2187e8
Merge pull request #3665 from torusrxxx/patch000000fb
Support adjusting font size via ctrl+wheel in RegistersView
2025-07-26 00:43:02 +02:00
Duncan Ogilvie fc97d55786
Merge pull request #3666 from torusrxxx/patch000000fc
Export table to tab-separated values
2025-07-26 00:42:48 +02:00
Duncan Ogilvie 754b4666b5 Greatly improve script state handling 2025-07-26 00:40:02 +02:00
Duncan Ogilvie 84668ac18d JobQueue.await now recursively calls job function when called on worker thread 2025-07-26 00:36:25 +02:00
Duncan Ogilvie 3a5f352fa9 Make breakpoint silent if breakpoint command execution fails 2025-07-26 00:34:07 +02:00
Duncan Ogilvie 9ce254418c Fix bug where disabling and reenabling GUI updates didn't update the GUI properly 2025-07-26 00:32:43 +02:00
Duncan Ogilvie 3522af5d80 Misc improvements 2025-07-26 00:29:55 +02:00
Duncan Ogilvie 89033cb6ec Show struct widget in DisplayTypeDialog 2025-07-26 00:28:56 +02:00
Duncan Ogilvie 4c0c3cd3dc Add clang-tidy configuration 2025-07-26 00:28:40 +02:00
torusrxxx ff890cfd84
Export table to tab-separated values 2025-07-25 23:11:07 +08:00
torusrxxx a185f6d548
Support adjusting font size via ctrl+wheel in RegistersView 2025-07-25 20:23:15 +08:00
Duncan Ogilvie 6cf7f60fff Do not produce an import library for exe target
Closes #3663
2025-07-24 23:33:30 +02:00
Duncan Ogilvie e9e3596e1d
Merge pull request #3660 from eldarkg/msvc-wine
msvc-wine: Fix: LINK : fatal error LNK1158: cannot run 'rc.exe'
2025-07-24 00:39:03 +02:00
Eldar Khayrullin 4fe2c45349 Restyle readme 2025-07-23 22:20:48 +03:00
Eldar Khayrullin bbec21fde3 msvc-wine: Fix: LINK : fatal error LNK1158: cannot run 'rc.exe' 2025-07-23 22:01:45 +03:00
Duncan Ogilvie 145c6a484a Fix headless initialization and thread model 2025-07-22 19:14:02 +02:00
Duncan Ogilvie 575d823d76
Merge pull request #3516 from peace-maker/cmdline_argparse
Use library for command line parsing
2025-07-22 19:09:30 +02:00
Duncan Ogilvie 8e070b7677 Add documentation for scriptexec/scriptrun/scriptcmd 2025-07-22 16:15:52 +02:00
Duncan Ogilvie bffce5143e Use scriptcmd and scriptexec for command line handling 2025-07-22 15:32:53 +02:00
Duncan Ogilvie 59b458852a Refactor scripting system to use JobQueue and allow better synchronization 2025-07-22 15:31:44 +02:00
Duncan Ogilvie e91ad3971f Add global atomic bIsDebugging flag to correctly track the debugger state
This potentially fixes a lot of race conditions when trying to wait for startup
2025-07-22 15:10:47 +02:00
Duncan Ogilvie 2368bfe8de Add super simple JobQueue implementation 2025-07-22 15:08:33 +02:00
Duncan Ogilvie a1ad4c00bb Rename MESSAGE_STACK to MESSAGE_QUEUE to reflect reality 2025-07-22 15:07:56 +02:00
Duncan Ogilvie 731ccba006 Add SharedSectionLocker/ExclusiveSectionLocker aliases for readability 2025-07-22 15:05:52 +02:00
Duncan Ogilvie ab32791e06 Fix CRT loading error in Debug 2025-07-22 15:05:08 +02:00
Duncan Ogilvie 4f406b274e GuiProcessEvents only processes events on the GUI thread 2025-07-22 15:04:41 +02:00
Duncan Ogilvie 68e80e6b3c
Merge pull request #3657 from eldarkg/msvc-wine
MSVC build under linux wine
2025-07-22 13:53:07 +02:00
Eldar Khayrullin cd850f6c2c Add more info to readme 2025-07-21 22:03:09 +03:00
Eldar Khayrullin e434db152f Move COMPILE-linux.md to docs 2025-07-21 20:08:12 +03:00
Duncan Ogilvie 64108f0b10 Improve launcher debuggee path handling 2025-07-21 18:52:18 +02:00
Peace-Maker 078ea3fcc1 Switch dbg command line parsing to args library 2025-07-21 15:44:53 +02:00
Duncan Ogilvie 6c94327505 Fix mnemonic brief column
Closes #3510
Closes #3509
2025-07-21 13:56:02 +02:00
Duncan Ogilvie b7407e075d
Merge pull request #3632 from kalhotky/fix/autocomment-precedence
Fix autocomment precedence
2025-07-21 13:33:12 +02:00
Duncan Ogilvie eda7c3296b
Merge pull request #3627 from d2k2-git/use-GUI_MAX_DISASSEMBLY_SIZE
align char buffer sizes with defined limit in GuiGetDisassembly
2025-07-21 13:31:31 +02:00
d2k2-git 074edbeb81 align char buffer sizes with defined limit in GuiGetDisassembly 2025-07-21 13:30:56 +02:00
Duncan Ogilvie 9a93383cb9 Automatically cancel previous workflow runs on the same branch 2025-07-21 13:29:07 +02:00
Duncan Ogilvie 7ebb9c7c66
Merge pull request #3641 from x64dbg/cursor/refactor-qzydis-instance-in-bridge-class-806d
Refactor QZydis instance in Bridge class
2025-07-21 13:24:09 +02:00
Duncan Ogilvie 840d9d2e93
Merge pull request #3638 from adityaxa/fix-trace-coverage-shortcut-label
Fix incorrect "None" label for disabled trace coverage in shortcuts
2025-07-21 13:23:18 +02:00
Duncan Ogilvie a5c3f8ab48
Merge pull request #3640 from kalhotky/feature/disasm-value-notation
Disasm value notation
2025-07-21 13:23:08 +02:00
Duncan Ogilvie 71e669822a
Merge pull request #3631 from kalhotky/fix/bp-fastresume-text
Fix fastresume hiding other summary text
2025-07-21 13:21:39 +02:00
Duncan Ogilvie 73a15c3112
Merge pull request #3630 from kalhotky/fix/symbolic-name-help
Fix symbolic name help URL encoding
2025-07-21 13:21:22 +02:00
Duncan Ogilvie d868da4c53
Merge pull request #3629 from kalhotky/fix/bp-addr
Fix deleting breakpoint at module base address
2025-07-21 13:21:10 +02:00
Duncan Ogilvie 4aa51f20e9
Merge pull request #3625 from d2k2-git/faster-disasmgetstringatwrapper
Faster disasmgetstringatwrapper
2025-07-21 13:20:27 +02:00
Duncan Ogilvie bd315bb656
Merge pull request #3562 from torusrxxx/patch000000f8
Update resources translations
2025-07-21 13:19:39 +02:00
Duncan Ogilvie fe16e2f1ac Add back -DX64DBG, closes #3634 2025-07-21 01:13:15 +02:00
Eldar Khayrullin 1097920f8d Merge branch 'development' into msvc-wine 2025-07-20 23:54:21 +03:00
Eldar Khayrullin 8f97124495 Add support to build under linux wine 2025-07-20 23:51:22 +03:00
Duncan Ogilvie 529f36dd14
Merge pull request #3628 from OldGamesCracking/development
Fixed pattern search
2025-07-19 22:56:39 +02:00
Cursor Agent ad8cc1f4e8 Improve disassembler configuration and lifecycle management
Co-authored-by: mr.exodia.tpodt <mr.exodia.tpodt@gmail.com>
2025-07-11 18:25:18 +00:00
kalhotky 56195a3a66 Update MASM notation and refactor code. 2025-07-11 20:12:17 +02:00
kalhotky 195e6ab3f3 Change size policy of combobox. 2025-07-11 19:34:37 +02:00
kalhotky 0eed5b590e Refactor value styles to value notations. 2025-07-11 19:10:53 +02:00
kalhotky 51924190ff Fix autocomment precedence in disassembly view. 2025-07-10 23:27:45 +02:00
OGC 6a5dfa7bbe Edge Case added 2025-07-10 21:39:10 +02:00
adityaxa a08ffbe39f Fix incorrect "None" label for disabled trace coverage in shortcuts
Removes the misleading "DebugTraceRecordNone" shortcut entry that incorrectly
displayed "None" for disabled trace coverage state in the shortcuts dialog.

Closes #3635
2025-07-10 19:57:39 +01:00
kalhotky 6cace9a982 Revert "Fix autocomment precedence."
This reverts commit e3f67f9888.
2025-07-10 12:42:00 +02:00
kalhotky e3f67f9888 Fix autocomment precedence. 2025-07-08 23:17:23 +02:00
kalhotky 7c83a4c9b3 Fix fastresume hiding log and cmd text. 2025-07-08 21:20:15 +02:00
kalhotky dbadb32bea Fix symbolic name help URL encoding. 2025-07-08 00:43:59 +02:00
kalhotky 73613d17fe Fix deleting breakpoint at module base address. 2025-07-07 21:16:47 +02:00
Dennis P. 156b0ebe6a Fixed pattern search 2025-07-07 20:54:57 +02:00
d2k2-git 3cf0821495
Merge branch 'x64dbg:development' into faster-disasmgetstringatwrapper 2025-07-06 12:49:40 +02:00
d2k2-git dc5c48446e execute disasmispossiblestring conditionally 2025-07-06 12:49:11 +02:00
Duncan Ogilvie 98291b35b7 Unbreak x32dbg after last commit 2025-07-06 12:31:16 +02:00
Duncan Ogilvie c589e7db3b Another attempt to fix msvcp140 loading
#3624
2025-07-06 12:20:34 +02:00
Duncan Ogilvie ad5e2d2ee2
Improve CONTRIBUTING guide
Thanks to @d2k2-git for helping out!
2025-07-05 20:03:14 +02:00
Duncan Ogilvie bec9333351 Improve developer experience when forking 2025-07-05 19:03:41 +02:00
Duncan Ogilvie bcdb5c5837
Merge pull request #3622 from x64dbg/revert-3588-fix-addr-cbInstrFindAllMem
Revert "Fixed inverted logic"
2025-07-04 21:22:30 +02:00
Duncan Ogilvie e5cb193849
Revert "Fixed inverted logic" 2025-07-04 21:03:46 +02:00
Duncan Ogilvie 736b2be377
Merge pull request #3617 from kalhotky/development
Display style values refactor and MASM style
2025-07-04 18:44:52 +02:00
Duncan Ogilvie 0fb8c3d263
Merge pull request #3620 from kalhotky/fix/hide-pointer-sizes
Fix ambiguous operand size when hiding pointer sizes
2025-07-04 18:44:21 +02:00
Duncan Ogilvie 9fb30cc7b4 Fix bug with string formatting 2025-07-04 18:34:15 +02:00
Duncan Ogilvie 7646a36dc9 Exclude unnecessary OpenGL libraries from snapshot 2025-07-04 17:58:27 +02:00
Duncan Ogilvie e9492e70d0 Fix AVX-512 crash on 32-bit 2025-07-04 17:29:33 +02:00
Duncan Ogilvie d0eecd084e Fix snapshot timestamp format 2025-07-04 02:06:29 +02:00
Duncan Ogilvie 699342d1b7 Move https://github.com/x64dbg/docs into this repo 2025-07-04 01:32:42 +02:00
kalhotky 2ea1f5b2a7 Format code. 2025-07-04 01:04:10 +02:00
kalhotky f711458ff9 Format code. 2025-07-04 00:46:57 +02:00
kalhotky 9b57a49627 Match coding style, add comment. 2025-07-04 00:41:42 +02:00
kalhotky 8e71dad881 Fix ambiguous operand size when hiding pointer sizes. 2025-07-04 00:38:48 +02:00
kalhotky 2b10f47749 Fix uninitialized variables. 2025-07-03 15:50:22 +02:00
kalhotky 2cd2476fbc Fix .ui line endings. 2025-07-03 15:49:58 +02:00
kalhotky 7065d6a7a0 Add display MASM style values. 2025-07-03 15:49:58 +02:00
Duncan Ogilvie 03aebe8a50 Always load VC runtime from application directory
#3616
2025-07-03 11:01:11 +02:00
Duncan Ogilvie 5cf93e0c3a InitializeSignatureCheck now loads msvcp140.dll 2025-07-02 01:23:06 +02:00
torusrxxx 1976cdb01a
Update resources translations 2025-04-14 22:10:53 +08:00
893 changed files with 37175 additions and 1784 deletions

148
.clang-tidy Normal file
View File

@ -0,0 +1,148 @@
---
Checks: '
-*,
bugprone-argument-comment,
bugprone-assert-side-effect,
bugprone-bad-signal-to-kill-thread,
bugprone-branch-clone,
bugprone-copy-constructor-init,
bugprone-dangling-handle,
bugprone-dynamic-static-initializers,
bugprone-fold-init-type,
bugprone-forward-declaration-namespace,
bugprone-forwarding-reference-overload,
bugprone-inaccurate-erase,
bugprone-incorrect-roundings,
bugprone-integer-division,
bugprone-lambda-function-name,
bugprone-macro-parentheses,
bugprone-macro-repeated-side-effects,
bugprone-misplaced-operator-in-strlen-in-alloc,
bugprone-misplaced-pointer-arithmetic-in-alloc,
bugprone-misplaced-widening-cast,
bugprone-move-forwarding-reference,
bugprone-multiple-statement-macro,
bugprone-no-escape,
bugprone-parent-virtual-call,
bugprone-posix-return,
bugprone-reserved-identifier,
bugprone-sizeof-container,
bugprone-sizeof-expression,
bugprone-spuriously-wake-up-functions,
bugprone-string-constructor,
bugprone-string-integer-assignment,
bugprone-string-literal-with-embedded-nul,
bugprone-suspicious-enum-usage,
bugprone-suspicious-include,
bugprone-suspicious-memset-usage,
bugprone-suspicious-missing-comma,
bugprone-suspicious-semicolon,
bugprone-suspicious-string-compare,
bugprone-suspicious-memory-comparison,
bugprone-suspicious-realloc-usage,
bugprone-swapped-arguments,
bugprone-terminating-continue,
bugprone-throw-keyword-missing,
bugprone-too-small-loop-variable,
bugprone-undefined-memory-manipulation,
bugprone-undelegated-constructor,
bugprone-unhandled-self-assignment,
bugprone-unused-raii,
bugprone-unused-return-value,
bugprone-use-after-move,
bugprone-virtual-near-miss,
cert-dcl21-cpp,
cert-dcl58-cpp,
cert-err34-c,
cert-err52-cpp,
cert-err60-cpp,
cert-flp30-c,
cert-msc50-cpp,
cert-msc51-cpp,
cert-str34-c,
cppcoreguidelines-interfaces-global-init,
cppcoreguidelines-narrowing-conversions,
cppcoreguidelines-pro-type-member-init,
cppcoreguidelines-pro-type-static-cast-downcast,
cppcoreguidelines-slicing,
google-default-arguments,
google-explicit-constructor,
google-runtime-operator,
hicpp-exception-baseclass,
hicpp-multiway-paths-covered,
misc-misplaced-const,
misc-new-delete-overloads,
misc-no-recursion,
misc-non-copyable-objects,
misc-throw-by-value-catch-by-reference,
misc-unconventional-assign-operator,
misc-uniqueptr-reset-release,
modernize-avoid-bind,
modernize-concat-nested-namespaces,
modernize-deprecated-headers,
modernize-deprecated-ios-base-aliases,
modernize-loop-convert,
modernize-make-shared,
modernize-make-unique,
modernize-pass-by-value,
modernize-raw-string-literal,
modernize-redundant-void-arg,
modernize-replace-auto-ptr,
modernize-replace-disallow-copy-and-assign-macro,
modernize-replace-random-shuffle,
modernize-return-braced-init-list,
modernize-shrink-to-fit,
modernize-unary-static-assert,
modernize-use-auto,
modernize-use-bool-literals,
modernize-use-emplace,
modernize-use-equals-default,
modernize-use-equals-delete,
modernize-use-nodiscard,
modernize-use-noexcept,
modernize-use-nullptr,
modernize-use-override,
modernize-use-transparent-functors,
modernize-use-uncaught-exceptions,
mpi-buffer-deref,
mpi-type-mismatch,
openmp-use-default-none,
performance-faster-string-find,
performance-for-range-copy,
performance-implicit-conversion-in-loop,
performance-inefficient-algorithm,
performance-inefficient-string-concatenation,
performance-inefficient-vector-operation,
performance-move-const-arg,
performance-move-constructor-init,
performance-no-automatic-move,
performance-noexcept-move-constructor,
performance-trivially-destructible,
performance-type-promotion-in-math-fn,
performance-unnecessary-copy-initialization,
performance-unnecessary-value-param,
portability-simd-intrinsics,
readability-avoid-const-params-in-decls,
readability-const-return-type,
readability-container-size-empty,
readability-convert-member-functions-to-static,
readability-delete-null-pointer,
readability-deleted-default,
readability-inconsistent-declaration-parameter-name,
readability-make-member-function-const,
readability-misleading-indentation,
readability-misplaced-array-index,
readability-non-const-parameter,
readability-redundant-control-flow,
readability-redundant-declaration,
readability-redundant-function-ptr-dereference,
readability-redundant-smartptr-get,
readability-redundant-string-cstr,
readability-redundant-string-init,
readability-simplify-subscript-expr,
readability-static-accessed-through-instance,
readability-static-definition-in-anonymous-namespace,
readability-string-compare,
readability-uniqueptr-delete-release,
readability-use-anyofallof
'

View File

@ -7,19 +7,18 @@ Welcome to x64dbg! This document is relevant for you if you want to contribute t
This is a list of things you can do to help us out (in no particular order). Each item will be expanded upon later in the document.
- [Compile x64dbg](https://github.com/x64dbg/x64dbg/wiki/Compiling-the-whole-project) and add new features ([good first issues](https://easy.x64dbg.com) are a good place to start).
- [Report bugs](https://report.x64dbg.com) at the issue tracker.
- Add feature requests to the [issue tracker](https://issues.x64dbg.com).
- Add report bugs of feature requests to the [issue tracker](https://issues.x64dbg.com).
- [Write a blogpost](https://x64dbg.com/blog/2016/07/09/Looking-for-writers.html) for the [official blog](https://blog.x64dbg.com).
- [Contact us](https://x64dbg.com/#contact) and talk about x64dbg.
- [Contact us](https://x64dbg.com/#contact) and chat about x64dbg.
- Send a [donation](https://donate.x64dbg.com) to support the project.
- [Translate](https://translate.x64dbg.com) x64dbg (contact us if your language isn't listed).
- Help us improve the [documentation](https://github.com/x64dbg/docs/issues).
- [Translate](https://translate.x64dbg.com) x64dbg (reach out if your language is not listed).
- Help us improve the [documentation](https://help.x64dbg.com).
### Compile x64dbg
There is a guide to [compiling the whole project](https://github.com/x64dbg/x64dbg/wiki/Compiling-the-whole-project) available. This might seem difficult at first, but if you install the correct versions of the *Prerequisites* it will be a breeze.
There is a guide to [compiling the whole project](https://github.com/x64dbg/x64dbg/wiki/Compiling-the-whole-project) available. We recently spent a lot of effort on making this as seamless as possible, but if you have any difficulties, reach out on Discord (`#development` channel)!
Compiling x64dbg is very useful to us (even if you don't add any code). Your experience can improve this guide and help new contributors.
[![](https://dcbadge.limes.pink/api/server/PRfRYbt)](https://discord.x64dbg.com)
#### Getting started with development
@ -30,22 +29,38 @@ As with any open source project, documentation is lacking and the code can seem
- [User interface design principles](https://x64dbg.com/blog/2016/08/08/user-interface-design-principles.html) blog post. It explains some of the design philosophy.
- [Control flow graph](https://x64dbg.com/blog/2016/07/27/Control-flow-graph.html) blog post. The post links to the relevant code sections.
- Blog post about the [plugin SDK](https://x64dbg.com/blog/2016/07/30/x64dbg-plugin-sdk.html). Writing an x64dbg plugin can also help you understand the code structure.
- Check out the [DeepWiki page](https://deepwiki.com/x64dbg/x64dbg) and ask Devin where to start.
This is by no means an exhaustive list and we are still working on lowering the barrier for new contributors. The feedback of new contributors is vital to reaching this goal.
#### Sending a pull request
Here is a little guide on how to do a clean pull request for people who don't yet know how to use git. We recommend using [Git Extensions](https://gitextensions.github.io), but any git interface is fine.
Here is a little guide on how to do a clean pull request for people who don't yet know how to use git:
1. First we need to [fork](https://help.github.com/articles/fork-a-repo/) the actual x64dbg repo on our github account.
2. When the fork is finished, clone the repo (`git clone https://github.com/myname/x64dbg.git`).
3. When pushing new features/bug/whatever to a github project the best practice is to create branches. The command `git checkout -b my-branch-name` will automatically create a branch and check it out.
4. Make all the changes you want and when finishing it, use `git add myfiles` to add it to the repo.
5. Commit your change. `git commit -m 'a message about what you changed'`. The change are applied to your local git repo.
6. Push it to your `origin`. The `origin` is your repo which is hosted on github. `git push --set-upstream origin your-branch-name`.
7. Sync with the `upstream` repo, the real x64dbg repo. `git remote add upstream https://github.com/x64dbg/x64dbg.git`, using `git remote -v` will show which origin/upstream are setup in the local repo.
8. Sync your fork with the `upstream`, `git fetch upstream`. Now checkout your local `development` branch again `git checkout development` and merge the upstream `git merge upstream/development`.
9. Time to create the pull request! Using the github ui, go to your account/repo, select the branch you already pushed, and click `Pull request`. Review your pull request and send it.
1. First we need to [fork](https://github.com/x64dbg/x64dbg/fork) the upstream x64dbg repo on our GitHub account.
2. When the fork is finished, clone the repo:
```sh
git clone --recursive https://github.com/<yourusername>/x64dbg.git
```
3. Create a [feature branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches) to isolate your changes:
```sh
git checkout -B my-feature
```
4. Make all the changes you want and when finished, add the files to the [staging area](https://git-scm.com/about/staging-area):
```sh
git add .
```
5. Create a [commit](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits) in your local git repository from the changes in your staging area:
```sh
git commit -m "Added a cool feature"
```
6. Push the changes to your fork:
```sh
git push --set-upstream origin my-feature
```
7. Time to create the pull request! Navigate to your forked repository in the browser and click the green `Pull request` button.
For a more in-depth tutorial, you can look at GitHub's official [contributing to a project](https://docs.github.com/en/get-started/exploring-projects-on-github/contributing-to-a-project) guide.
Happy PRs!
@ -67,11 +82,15 @@ We understand that it can be disappointing to not get your feature implemented,
### Write a blogpost
The x64dbg blog is open to all contributors (foreign and domestic). We encourage anyone who has an interesting encounter with the x64dbg code base, or a use case to share it with the community. For a guideline on how/what to contribute see the [blog post](https://x64dbg.com/blog/2016/07/09/Looking-for-writers.html) about contributing to the blog. Don't worry about contributing complex posts, we welcome ALL experience levels to add content to the blog!
The x64dbg blog is open to all contributors (foreign and domestic). We encourage anyone who has an interesting encounter with the x64dbg code base, or a use case to share it with the community. For a guideline on how/what to contribute see the [blog post](https://x64dbg.com/blog/2016/07/09/Looking-for-writers.html) about contributing to the blog. Don't worry about contributing complex posts, we welcome ALL experience levels to add content to the blog!
### Contact us
There are several ways to reach out to the community of x64dbg developers, contributors and users. Chat channels consist of a [Telegram](https://telegram.me/x64dbg), [Gitter](https://gitter.x64dbg.com/) and [IRC](https://webchat.freenode.net/?channels=x64dbg) channel. Most questions regarding contributing, developing and using x64dbg can be answered here. To ensure channel cohesion a bot will sync messages across all three channels. (when it is not down ;))
There are several ways to reach out to the community of x64dbg developers, contributors and users:
[![Discord](https://img.shields.io/badge/chat-on%20Discord-green.svg)](https://discord.x64dbg.com) [![Slack](https://img.shields.io/badge/chat-on%20Slack-red.svg)](https://slack.x64dbg.com) [![Gitter](https://img.shields.io/badge/chat-on%20Gitter-lightseagreen.svg)](https://gitter.im/x64dbg/x64dbg) [![Matrix](https://img.shields.io/badge/chat-on%20Matrix-yellowgreen.svg)](https://riot.im/app/#/room/#x64dbg:matrix.org) [![IRC](https://img.shields.io/badge/chat-on%20IRC-purple.svg)](https://web.libera.chat/#x64dbg)
Discord is the main communication channel, but the other platforms are synchronized with the `#general` channel.
### Translate

View File

@ -15,7 +15,7 @@
<value>style=allman, convert-tabs, align-pointer=type, align-reference=middle, indent=spaces, indent-namespaces, indent-col1-comments, pad-oper, unpad-paren, keep-one-line-blocks, close-templates</value>
</setting>
<setting name="Ignore" serializeAs="String">
<value />
<value>src/cross/vendor;src/gui/Src/ThirdPartyLibs/md4c</value>
</setting>
<setting name="License" serializeAs="String">
<value />

View File

@ -2,6 +2,11 @@ name: Build
on: [push, pull_request]
# Automatically cancel previous runs of this workflow on the same branch
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
cmake:
# Skip building pull requests from the same repository
@ -25,7 +30,7 @@ jobs:
- name: Build
run: |
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_UNITY_BUILD=ON -DCMAKE_UNITY_BUILD_BATCH_SIZE=6 -DX64DBG_RELEASE=${{ startsWith(github.ref, 'refs/tags/') && 'ON' || 'OFF' }}
cmake --build build
- name: Upload Artifacts
@ -37,8 +42,31 @@ jobs:
include-hidden-files: true
retention-days: 1
docs:
# Skip building pull requests from the same repository
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository }}
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
- name: Build Documentation
run: |
docs\makechm.bat
- name: Upload Documentation
uses: actions/upload-artifact@v4
with:
name: docs
path: docs/x64dbg.chm
if-no-files-found: error
include-hidden-files: true
retention-days: 1
package:
needs: cmake
needs: [cmake, docs]
runs-on: windows-latest
steps:
- name: Checkout
@ -58,21 +86,24 @@ jobs:
name: build-x86
path: bin
- name: Create snapshot
- name: Download Documentation
uses: actions/download-artifact@v4
with:
name: docs
path: docs
- name: Prepare Release
run: |
curl.exe -L https://github.com/x64dbg/translations/releases/download/translations/qm.zip -o bin\qm.zip
7z x bin\qm.zip -obin
cmake -P .\cmake\release.cmake
$timestamp = Get-Date -Format "yyyy-MM-dd_HH_mm"
$timestamp = Get-Date (Get-Date).ToUniversalTime() -Format "yyyy-MM-dd_HH-mm"
echo "timestamp=$timestamp" >> $env:GITHUB_ENV
cd release
7z a -tzip -mx=9 ..\snapshot_$timestamp.zip pluginsdk release commithash.txt
7z a -tzip -mx=9 ..\symbols-snapshot_$timestamp.zip pdb commithash.txt
- name: Upload Artifacts
- name: Upload Snapshot
uses: actions/upload-artifact@v4
with:
name: snapshot_${{ env.timestamp }}.zip
name: snapshot_${{ env.timestamp }}
path: |
release/pluginsdk
release/release
@ -81,13 +112,23 @@ jobs:
include-hidden-files: true
compression-level: 9
- name: Upload Artifacts
- name: Upload Symbols
uses: actions/upload-artifact@v4
with:
name: symbols-snapshot_${{ env.timestamp }}.zip
name: symbols-snapshot_${{ env.timestamp }}
path: |
release/pdb
release/commithash.txt
if-no-files-found: error
include-hidden-files: true
compression-level: 9
- name: Upload Plugin SDK
uses: actions/upload-artifact@v4
with:
name: x64dbg-pluginsdk
path: |
release/pluginsdk
if-no-files-found: error
include-hidden-files: true
compression-level: 9

39
.github/workflows/cross.yml vendored Normal file
View File

@ -0,0 +1,39 @@
name: Cross
on: [push, pull_request]
# Automatically cancel previous runs of this workflow on the same branch
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
cmake:
# Skip building pull requests from the same repository
if: ${{ github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.repository }}
strategy:
fail-fast: false
matrix:
platform: [windows-latest, ubuntu-latest]
runs-on: ${{ matrix.platform }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 1
- name: Visual Studio Development Environment
uses: ilammy/msvc-dev-cmd@0b201ec74fa43914dc39ae48a89fd1d8cb592756 # v1.13.0
- name: Install Qt
uses: jurplel/install-qt-action@d325aaf2a8baeeda41ad0b5d39f84a6af9bcf005 # v4.3.0
with:
cache: true
modules: qtwebsockets
- name: Build
run: |
cd src/cross
cmake -B build -G Ninja -DCMAKE_UNITY_BUILD=ON
cmake --build build

3
.gitignore vendored
View File

@ -5,6 +5,8 @@
/bin/*.ini
/bin/*.chm
/bin/*.zip
/bin/release-notes.md
!/bin/themes/
/src/**/x64/
/src/**/Win32/
/src/gui_build/
@ -26,6 +28,7 @@ cmake-build*/
*.pro.user*
*.orig
*.pdb
*.ilk
.DS_Store
Makefile
Makefile.*

12
.gitmodules vendored
View File

@ -1,7 +1,7 @@
[submodule "src/dbg/btparser"]
path = src/dbg/btparser
url = ../btparser
[submodule "deps"]
path = deps
url = ../deps
[submodule "src/dbg/btparser"]
path = src/dbg/btparser
url = ../../x64dbg/btparser
[submodule "deps"]
path = deps
url = ../../x64dbg/deps
shallow = true

70
CMakeLists.txt generated
View File

@ -33,6 +33,7 @@ endif()
# Options
option(X64DBG_BUILD_IN_TREE "" ON)
option(X64DBG_RELEASE "" OFF)
# Variables
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
@ -53,32 +54,25 @@ find_package(Qt5 REQUIRED
WinExtras
)
# Target: zydis_wrapper
set(zydis_wrapper_SOURCES
cmake.toml
"src/zydis_wrapper/Zydis/Zydis.h"
"src/zydis_wrapper/zydis/Zydis.c"
"src/zydis_wrapper/zydis_wrapper.cpp"
"src/zydis_wrapper/zydis_wrapper.h"
)
# Subdirectory: src/zydis_wrapper
set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER})
if(CMAKE_FOLDER)
set(CMAKE_FOLDER "${CMAKE_FOLDER}/src/zydis_wrapper")
else()
set(CMAKE_FOLDER "src/zydis_wrapper")
endif()
add_subdirectory("src/zydis_wrapper")
set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER})
add_library(zydis_wrapper STATIC)
target_sources(zydis_wrapper PRIVATE ${zydis_wrapper_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${zydis_wrapper_SOURCES})
target_compile_definitions(zydis_wrapper PUBLIC
ZYCORE_STATIC_BUILD
ZYDIS_STATIC_BUILD
)
target_include_directories(zydis_wrapper PUBLIC
"src/zydis_wrapper"
)
target_include_directories(zydis_wrapper PRIVATE
"src/zydis_wrapper/Zydis"
)
# Subdirectory: src/gui/Src/ThirdPartyLibs/md4c
set(CMKR_CMAKE_FOLDER ${CMAKE_FOLDER})
if(CMAKE_FOLDER)
set(CMAKE_FOLDER "${CMAKE_FOLDER}/src/gui/Src/ThirdPartyLibs/md4c")
else()
set(CMAKE_FOLDER "src/gui/Src/ThirdPartyLibs/md4c")
endif()
add_subdirectory("src/gui/Src/ThirdPartyLibs/md4c")
set(CMAKE_FOLDER ${CMKR_CMAKE_FOLDER})
# Target: bridge
set(bridge_SOURCES
@ -221,6 +215,7 @@ set(dbg_SOURCES
"src/dbg/analysis/xrefsanalysis.h"
"src/dbg/animate.cpp"
"src/dbg/animate.h"
"src/dbg/args.h"
"src/dbg/argument.cpp"
"src/dbg/argument.h"
"src/dbg/assemble.cpp"
@ -323,6 +318,7 @@ set(dbg_SOURCES
"src/dbg/jansson/jansson_x64dbg.h"
"src/dbg/jit.cpp"
"src/dbg/jit.h"
"src/dbg/jobqueue.h"
"src/dbg/label.cpp"
"src/dbg/label.h"
"src/dbg/loop.cpp"
@ -405,6 +401,7 @@ source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${dbg_SOURCES})
target_compile_definitions(dbg PRIVATE
BUILD_DBG
NOMINMAX
)
target_include_directories(dbg PRIVATE
@ -439,6 +436,7 @@ target_link_libraries(dbg PRIVATE
Shlwapi
Ws2_32
Wininet
Iphlpapi
)
if(CMAKE_SIZEOF_VOID_P EQUAL 4) # x86
@ -625,6 +623,8 @@ set(gui_SOURCES
"src/gui/Src/Gui/HexLineEdit.cpp"
"src/gui/Src/Gui/HexLineEdit.h"
"src/gui/Src/Gui/HexLineEdit.ui"
"src/gui/Src/Gui/ImageTextBrowser.cpp"
"src/gui/Src/Gui/ImageTextBrowser.h"
"src/gui/Src/Gui/LineEditDialog.cpp"
"src/gui/Src/Gui/LineEditDialog.h"
"src/gui/Src/Gui/LineEditDialog.ui"
@ -661,6 +661,9 @@ set(gui_SOURCES
"src/gui/Src/Gui/ReferenceManager.h"
"src/gui/Src/Gui/RegistersView.cpp"
"src/gui/Src/Gui/RegistersView.h"
"src/gui/Src/Gui/ReleaseNotesDialog.cpp"
"src/gui/Src/Gui/ReleaseNotesDialog.h"
"src/gui/Src/Gui/ReleaseNotesDialog.ui"
"src/gui/Src/Gui/RichTextItemDelegate.cpp"
"src/gui/Src/Gui/RichTextItemDelegate.h"
"src/gui/Src/Gui/SEHChainView.cpp"
@ -727,6 +730,9 @@ set(gui_SOURCES
"src/gui/Src/QHexEdit/XByteArray.cpp"
"src/gui/Src/QHexEdit/XByteArray.h"
"src/gui/Src/ThirdPartyLibs/ldconvert/ldconvert.h"
"src/gui/Src/ThirdPartyLibs/md4c/md4c-entity.h"
"src/gui/Src/ThirdPartyLibs/md4c/md4c-html.h"
"src/gui/Src/ThirdPartyLibs/md4c/md4c.h"
"src/gui/Src/Tracer/TraceBrowser.cpp"
"src/gui/Src/Tracer/TraceBrowser.h"
"src/gui/Src/Tracer/TraceDump.cpp"
@ -802,9 +808,16 @@ add_library(gui SHARED)
target_sources(gui PRIVATE ${gui_SOURCES})
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR} FILES ${gui_SOURCES})
if(X64DBG_RELEASE) # X64DBG_RELEASE
target_compile_definitions(gui PUBLIC
X64DBG_RELEASE
)
endif()
target_compile_definitions(gui PRIVATE
BUILD_LIB
NOMINMAX
X64DBG
)
target_include_directories(gui PRIVATE
@ -828,11 +841,16 @@ if(NOT TARGET bridge)
message(FATAL_ERROR "Target \"bridge\" referenced by \"gui\" does not exist!")
endif()
if(NOT TARGET md4c-html)
message(FATAL_ERROR "Target \"md4c-html\" referenced by \"gui\" does not exist!")
endif()
target_link_libraries(gui PRIVATE
Qt5::Widgets
Qt5::WinExtras
zydis_wrapper
bridge
md4c-html
winmm
wininet
)
@ -977,6 +995,8 @@ if(MSVC) # msvc
"/DELAYLOAD:user32.dll"
"/DELAYLOAD:wintrust.dll"
"/DELAYLOAD:$<TARGET_FILE_NAME:bridge>"
"/NOIMPLIB"
"/NOEXP"
)
endif()

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -4,6 +4,7 @@ cmkr-include = "cmake/cmkr.cmake"
[options]
X64DBG_BUILD_IN_TREE = true
X64DBG_RELEASE = false
[variables]
CMAKE_MODULE_PATH = "${CMAKE_SOURCE_DIR}/cmake"
@ -26,24 +27,8 @@ x64 = "CMAKE_SIZEOF_VOID_P EQUAL 8"
[find-package]
Qt5 = { components = ["Widgets", "WinExtras"] }
[target.zydis_wrapper]
type = "static"
sources = [
"src/zydis_wrapper/*.cpp",
"src/zydis_wrapper/*.h",
"src/zydis_wrapper/Zydis/Zydis.h",
"src/zydis_wrapper/zydis/Zydis.c",
]
include-directories = [
"src/zydis_wrapper",
]
private-include-directories = [
"src/zydis_wrapper/Zydis",
]
compile-definitions = [
"ZYCORE_STATIC_BUILD",
"ZYDIS_STATIC_BUILD",
]
[subdir."src/zydis_wrapper"]
[subdir."src/gui/Src/ThirdPartyLibs/md4c"]
[target.bridge]
type = "shared"
@ -105,6 +90,7 @@ private-link-libraries = [
"Shlwapi",
"Ws2_32",
"Wininet",
"Iphlpapi",
]
x86.private-link-libraries = [
"src/dbg/dbghelp/dbghelp_x86.lib",
@ -128,6 +114,7 @@ x64.private-link-libraries = [
]
private-compile-definitions = [
"BUILD_DBG",
"NOMINMAX",
]
private-include-directories = [
"src/dbg",
@ -158,6 +145,7 @@ private-link-libraries = [
"Qt5::WinExtras",
"::zydis_wrapper",
"::bridge",
"::md4c-html",
"winmm",
"wininet",
]
@ -182,7 +170,9 @@ private-include-directories = [
private-compile-definitions = [
"BUILD_LIB",
"NOMINMAX",
"X64DBG",
]
X64DBG_RELEASE.compile-definitions = ["X64DBG_RELEASE"]
include-after = ["cmake/deps.cmake"]
[target.gui.properties]
@ -235,6 +225,8 @@ msvc.link-options = [
"/DELAYLOAD:user32.dll",
"/DELAYLOAD:wintrust.dll",
"/DELAYLOAD:$<TARGET_FILE_NAME:bridge>",
"/NOIMPLIB",
"/NOEXP",
]
msvc.link-libraries = [
"Delayimp",

View File

@ -23,13 +23,13 @@ if(Qt5_FIND_REQUIRED AND MSVC)
set(FETCHCONTENT_QUIET OFF)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
FetchContent_Declare(Qt5
URL "https://github.com/x64dbg/deps/releases/download/dependencies/qt5.12.12-msvc2017_64.7z"
URL_HASH SHA256=bf302d02366dc09e112a1146e202429717c2097446edba8da3c3168d9a9996b4
URL "https://github.com/x64dbg/deps/releases/download/2025.07.02/qt5.12.12-msvc2017_64.7z"
URL_HASH SHA256=770490bf09514982c8192ebde9a1fac8821108ba42b021f167bac54e85ada48a
)
else()
FetchContent_Declare(Qt5
URL "https://github.com/x64dbg/deps/releases/download/dependencies/qt5.12.12-msvc2017.7z"
URL_HASH SHA256=0ea8bf7ea3ac5d7dfeb87af4ce471eefdadbf0809524fda2b0ca07aaf4654cfb
URL "https://github.com/x64dbg/deps/releases/download/2025.07.02/qt5.12.12-msvc2017.7z"
URL_HASH SHA256=3ff2a58e5ed772be475643cd7bb2df3e5499d7169d794ddf1ed5df5c5e862cb6
)
endif()
FetchContent_MakeAvailable(Qt5)

View File

@ -1,3 +1,48 @@
option(ENABLE_SANITIZERS "Enable sanitizers" OFF)
if(ENABLE_SANITIZERS)
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
if(CMAKE_CXX_COMPILER_FRONTEND_VARIANT MATCHES "^MSVC$")
# NOTE: There is bug in Clang-CL that makes address sanitizers not work for all projects.
# The main issue is the 'world' project, which has WINDOWS_EXPORT_ALL_SYMBOLS.
# This issue will likely be fixed in a later version of Clang-CL, but for now you should
# configure with -DCMAKE_C_COMPILER=clang.exe -DCMAKE_CXX_COMPILER=clang++.exe to enable
# UB sanitizers.
message(WARNING "Enabling Clang-CL sanitizers (Clang works better)...")
add_compile_options(-fsanitize=address,undefined)
# Reference: https://devblogs.microsoft.com/cppblog/addresssanitizer-asan-for-windows-with-msvc/
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(ASAN_LIB_SUFFIX "x86_64")
else()
set(ASAN_LIB_SUFFIX "i386")
endif()
set(ASAN_LINKER_FLAGS "/wholearchive:clang_rt.asan-${ASAN_LIB_SUFFIX}.lib /wholearchive:clang_rt.asan_cxx-${ASAN_LIB_SUFFIX}.lib")
else()
message(STATUS "Enabling Clang sanitizers...")
add_compile_options(-fsanitize=address,undefined -fno-omit-frame-pointer)
set(ASAN_LINKER_FLAGS "-fsanitize=address,undefined")
endif()
# NOTE: Only set linker flags for executables and shared libraries
# the add_link_options command would add flags to static libraries as well
# which causes issues with symbols being defined in multiple places.
set(CMAKE_EXE_LINKER_FLAGS "${ASAN_LINKER_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS "${ASAN_LINKER_FLAGS}")
if(WIN32)
# NOTE: The sanitizer library only supports the static release runtime
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded")
endif()
elseif(MSVC)
# Reference: https://learn.microsoft.com/en-us/cpp/build/reference/fsanitize
message(WARNING "Enabling MSVC sanitizers (Clang has better support)...")
add_compile_options(/fsanitize=address)
add_link_options(/INCREMENTAL:NO)
else()
message (FATAL_ERROR "Unsupported compiler for sanitizers: ${CMAKE_CXX_COMPILER_ID}")
endif()
endif()
# Visual Studio generator specific flags
if (CMAKE_GENERATOR MATCHES "Visual Studio")
# HACK: DO NOT this to add compiler flags/definitions, use target_compile_options on a
@ -16,6 +61,8 @@ if(MSVC)
$<$<CONFIG:Release,MinSizeRel,RelWithDebInfo>:/OPT:REF>
$<$<CONFIG:Release,MinSizeRel,RelWithDebInfo>:/OPT:ICF>
)
# Enable big objects (unity build)
add_compile_options(/bigobj)
endif()
# Make the project look nicer in IDEs

View File

@ -1,5 +1,5 @@
function(init_submodule folder)
set(full_path "${CMAKE_CURRENT_SOURCE_DIR}/${folder}")
set(full_path "${CMAKE_CURRENT_LIST_DIR}/../${folder}")
if(NOT EXISTS ${full_path})
message(FATAL_ERROR "Submodule folder does not exist: ${full_path}")
endif()
@ -9,7 +9,7 @@ function(init_submodule folder)
message(STATUS "Submodule '${folder}' not initialized, running git...")
execute_process(
COMMAND "${GIT_EXECUTABLE}" rev-parse --show-toplevel
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/.."
OUTPUT_VARIABLE git_root
OUTPUT_STRIP_TRAILING_WHITESPACE
COMMAND_ERROR_IS_FATAL ANY

9
cmake/msvc-wine.cmake Normal file
View File

@ -0,0 +1,9 @@
set(CMAKE_SYSTEM_NAME Windows)
set(MSVC_BIN_DIR $ENV{MSVC_BIN_DIR})
set(CMAKE_C_COMPILER ${MSVC_BIN_DIR}/cl)
set(CMAKE_CXX_COMPILER ${MSVC_BIN_DIR}/cl)
set(CMAKE_RC_COMPILER ${MSVC_BIN_DIR}/rc)
set(CMAKE_PROJECT_INCLUDE ${CMAKE_CURRENT_LIST_DIR}/qt-wine.cmake)

29
cmake/qt-wine.cmake Normal file
View File

@ -0,0 +1,29 @@
include_guard()
message(STATUS "Configuring Qt for Wine cross-compilation...")
set(QT_HOST_BIN_DIR ${CMAKE_CURRENT_LIST_DIR}/wine)
function(qt5_host_tool name)
if (NOT TARGET Qt5::${name})
add_executable(Qt5::${name} IMPORTED)
set(imported_location ${QT_HOST_BIN_DIR}/${name})
# FIXME run after deps.cmake to enable next
#if(NOT EXISTS ${imported_location})
# message(FATAL_ERROR "Qt5 tool not found: ${imported_location}")
#endif()
set_target_properties(Qt5::${name} PROPERTIES
IMPORTED_LOCATION ${imported_location}
)
endif()
endfunction()
qt5_host_tool(windeployqt)
qt5_host_tool(qmake)
qt5_host_tool(moc)
qt5_host_tool(rcc)
qt5_host_tool(uic)

View File

@ -1,3 +1,5 @@
cmake_minimum_required(VERSION 3.15)
# Get the root directory
get_filename_component(ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/.." ABSOLUTE)
set(RELEASE_DIR "${ROOT_DIR}/release")
@ -9,11 +11,8 @@ file(MAKE_DIRECTORY "${RELEASE_DIR}")
# Setup pluginsdk directories
set(PLUGINSDK_DIR "${RELEASE_DIR}/pluginsdk")
file(MAKE_DIRECTORY "${PLUGINSDK_DIR}")
file(MAKE_DIRECTORY "${PLUGINSDK_DIR}/dbghelp")
file(MAKE_DIRECTORY "${PLUGINSDK_DIR}/DeviceNameResolver")
file(MAKE_DIRECTORY "${PLUGINSDK_DIR}/jansson")
file(MAKE_DIRECTORY "${PLUGINSDK_DIR}/lz4")
file(MAKE_DIRECTORY "${PLUGINSDK_DIR}/TitanEngine")
file(MAKE_DIRECTORY "${PLUGINSDK_DIR}/XEDParse")
# Setup release directories
@ -26,16 +25,10 @@ file(MAKE_DIRECTORY "${RELEASE_DIR}/release/x64")
set(PLUGINSDK_DIR "${RELEASE_DIR}/pluginsdk")
# Copy directories
file(COPY "${ROOT_DIR}/src/dbg/dbghelp/" DESTINATION "${PLUGINSDK_DIR}/dbghelp")
file(COPY "${ROOT_DIR}/src/dbg/DeviceNameResolver/" DESTINATION "${PLUGINSDK_DIR}/DeviceNameResolver")
file(COPY "${ROOT_DIR}/src/dbg/jansson/" DESTINATION "${PLUGINSDK_DIR}/jansson")
file(COPY "${ROOT_DIR}/src/dbg/lz4/" DESTINATION "${PLUGINSDK_DIR}/lz4")
file(COPY "${ROOT_DIR}/src/dbg/TitanEngine/" DESTINATION "${PLUGINSDK_DIR}/TitanEngine")
file(COPY "${ROOT_DIR}/src/dbg/XEDParse/" DESTINATION "${PLUGINSDK_DIR}/XEDParse")
# Remove TitanEngine.txt
file(REMOVE "${PLUGINSDK_DIR}/TitanEngine/TitanEngine.txt")
# Copy headers
file(GLOB PLUGIN_HEADERS
"${ROOT_DIR}/src/dbg/_plugin_types.h"
@ -55,12 +48,15 @@ file(COPY "${ROOT_DIR}/bin/x64/x64dbg.lib" DESTINATION "${PLUGINSDK_DIR}")
set(RELEASE_MAIN_DIR "${RELEASE_DIR}/release")
# Handle deps_copied
set(DEPS_BLACKLIST libGLESV2.dll libEGL.dll d3dcompiler_47.dll)
function(handle_deps_copied arch)
file(READ "${ROOT_DIR}/bin/${arch}/.deps_copied" DEPS_COPIED)
string(REGEX REPLACE "\n" ";" DEPS_COPIED "${DEPS_COPIED}")
foreach(DEP ${DEPS_COPIED})
get_filename_component(reldir ${DEP} DIRECTORY)
file(COPY "${ROOT_DIR}/bin/${arch}/${DEP}" DESTINATION "${RELEASE_MAIN_DIR}/${arch}/${reldir}")
if(NOT ${DEP} IN_LIST DEPS_BLACKLIST)
get_filename_component(reldir ${DEP} DIRECTORY)
file(COPY "${ROOT_DIR}/bin/${arch}/${DEP}" DESTINATION "${RELEASE_MAIN_DIR}/${arch}/${reldir}")
endif()
endforeach()
endfunction()

1
cmake/wine/moc Symbolic link
View File

@ -0,0 +1 @@
run

1
cmake/wine/qmake Symbolic link
View File

@ -0,0 +1 @@
run

1
cmake/wine/rcc Symbolic link
View File

@ -0,0 +1 @@
run

52
cmake/wine/run Executable file
View File

@ -0,0 +1,52 @@
#!/usr/bin/env bash
#
# Copyright (c) 2018 Martin Storsjo
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice appear in all copies.
#
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#. msvcenv.sh
# /showIncludes
unixify_path='/^Note: including file: /{ s/z:([\\/])/\1/i; s,\\,/,g; }'
# /E
unixify_line='/^[[:blank:]]*#[[:blank:]]*line[[:blank:]]/{ s/z:([\\/])/\1/i; s,\\\\,/,g; }'
# Warnings and Errors
unixify_note='/^[zZ]:.*\([[:digit:]]+\): (note|error C[[:digit:]]{4}|warning C[[:digit:]]{4}): /{ s/z:([\\/])/\1/ig; s,\\,/,g; }'
export WINE_MSVC_STDOUT_SED="$unixify_path;$unixify_line;$unixify_note"
export WINE_MSVC_STDERR_SED="$unixify_path"
"$MSVC_BIN_DIR"/wine-msvc.sh "$QT_BIN_DIR"/$(basename $0).exe "$@"
ec=$?
[ $ec -ne 0 ] && exit $ec
# Postprocess
for a in "$@"; do
case $a in
[-/]P) arg_P=$a ;;
[-/]Fi*) arg_Fi=${a:3} ;;
esac
done
# Unixify paths for /P
if [ -n "$arg_P" ] && [ -f "$arg_Fi" ]; then
if sed --help 2>&1 | grep '\-i extension' >/dev/null; then
inplace=(-i '') # BSD sed
else
inplace=(-i) # GNU sed
fi
sed "${inplace[@]}" -E 's/\r//;'"$unixify_line" "$arg_Fi"
fi
exit $ec

1
cmake/wine/uic Symbolic link
View File

@ -0,0 +1 @@
run

1
cmake/wine/windeployqt Symbolic link
View File

@ -0,0 +1 @@
run

2
deps

@ -1 +1 @@
Subproject commit c22755230eaa70ea3e7cc7ef6995dad2862d958b
Subproject commit 31f6cc57999d78dd5f99f59ab56e8465fbb9256f

7
docs/.editorconfig Normal file
View File

@ -0,0 +1,7 @@
; Top-most EditorConfig file
root = true
; Windows-style newlines
[*]
end_of_line = CRLF

7
docs/.gitignore vendored Normal file
View File

@ -0,0 +1,7 @@
_build*/
*.chm
python-2.7.18.amd64.portable/
hha.dll
hhc.exe
itcc.dll
*.7z

23
docs/.readthedocs.yaml Normal file
View File

@ -0,0 +1,23 @@
# Read the Docs configuration file
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
# Required
version: 2
# Set the version of Python and other tools you might need
build:
os: ubuntu-22.04
tools:
python: "2.7"
# Build documentation in the docs/ directory with Sphinx
sphinx:
builder: html
configuration: docs/conf.py
fail_on_warning: false
# We recommend specifying your dependencies to enable reproducible builds:
# https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
python:
install:
- requirements: docs/requirements.txt

37
docs/COMPILE-linux.md Normal file
View File

@ -0,0 +1,37 @@
## Prerequisites
```sh
sudo apt update
sudo apt install cmake ninja-build wine
```
## Install MSVC
Download https://github.com/mstorsjo/msvc-wine
```sh
cd msvc-wine
./vsdownload.py --accept-license --dest ~/opt/msvc Microsoft.VisualStudio.Workload.VCTools Microsoft.VisualStudio.Component.VC.ATL
./install.sh ~/opt/msvc
```
## Build
x86
```sh
cd x64dbg
export MSVC_BIN_DIR=~/opt/msvc/bin/x86
export QT_BIN_DIR=~/src/x64dbg/build32/_deps/qt5-src/bin
cmake -B build32 -DCMAKE_TOOLCHAIN_FILE=cmake/msvc-wine.cmake -G Ninja
cmake --build build32 -j4
```
x64
```sh
cd x64dbg
export MSVC_BIN_DIR=~/opt/msvc/bin/x64
export QT_BIN_DIR=~/src/x64dbg/build64/_deps/qt5-src/bin
cmake -B build64 -DCMAKE_TOOLCHAIN_FILE=cmake/msvc-wine.cmake -G Ninja
cmake --build build64 -j4
```
## Issues
- ```LINK : fatal error LNK1158: cannot run 'rc.exe'```
> Fix: winecfg -> Drives -> Remove drives with alternative path to x64dbg src (like: E: -> ~/src)

13
docs/README.md Normal file
View File

@ -0,0 +1,13 @@
# docs
Documentation repository for [x64dbg](http://x64dbg.com) at [Read the Docs](https://readthedocs.org/projects/x64dbg).
## Building
1. Download https://github.com/x64dbg/docs/releases/download/python27-portable/python-2.7.18.amd64.portable.7z
2. Extract to the `python-2.7.18.amd64.portable` folder
3. run `makechm.bat`. It will build the .CHM help file.
Note: The following patch was applied:
Add `relpath = relpath.replace(os.path.sep, '/')` after `C:\Python27\Lib\site-packages\recommonmark\transform.py` line `63`

0
docs/_static/EMPTY vendored Normal file
View File

0
docs/_templates/EMPTY vendored Normal file
View File

View File

@ -0,0 +1,11 @@
# GetRelocSize/grs
Get the correct size of a relocation table. This is useful while unpacking and restoring the original relocation table.
## arguments
`arg1` The address of the relocation table to analyze.
## results
The found size of the relocation table is stored in `$result`.

View File

@ -0,0 +1,11 @@
# analadv
Do function analysis, embedded data analysis and xref analysis.
## arguments
This command has no arguments.
## results
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# analrecur/analr
Do single function analysis.
## arguments
`arg1` The base address of the function to analyze.
## results
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# analxrefs/analx
Do xrefs analysis in the module selected in the disassembly view.
## arguments
This command has no arguments.
## results
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# analyse/analyze/anal
Do function analysis.
## arguments
This command has no arguments.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# analyse_nukem/analyze_nukem/anal_nukem
Do function analysis using nukem's algorithm.
## arguments
This command has no arguments.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# cfanalyze/cfanalyse/cfanal
Do control flow analysis in the module selected in the disassembly view.
## arguments
This command has no arguments.
## results
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# exanalyse/exanalyze/exanal
Do exception directory analysis. This kind of analysis doesn't work on 32-bit executables.
## arguments
This command has no arguments.
## results
This command does not set any result variables.

View File

@ -0,0 +1,12 @@
exhandlers
==========
Print all exception handlers, including SEH(StructuredExceptionHandler), VEH(VectoredExceptionHandler),
VCH(VectoredContinueHandler) and UnhandledExceptionFilter, into the log.
arguments
---------
This command has no arguments
results
-------
This command does not set any result variables.

View File

@ -0,0 +1,24 @@
# exinfo
Print the `EXCEPTION_DEBUG_INFO` structure from the last exception.
Sample output:
```
EXCEPTION_DEBUG_INFO:
dwFirstChance: 1
ExceptionCode: 80000001 (EXCEPTION_GUARD_PAGE)
ExceptionFlags: 00000000
ExceptionAddress: 00007FFE16FB1B91 ntdll.00007FFE16FB1B91
NumberParameters: 2
ExceptionInformation[00]: 0000000000000008
ExceptionInformation[01]: 00007FFE16FB1B91 ntdll.00007FFE16FB1B91
```
arguments
---------
This command has no arguments
results
-------
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# imageinfo
Output the image information for a module. The information describes the Characteristics and DLL Characteristics fields in the PE header structure.
## arguments
`[arg1]` The base of the module. If not specified the module at CIP will be used.
## results
This command does not set any result variables.

View File

@ -0,0 +1,25 @@
Analysis
========
This section contains commands that are used for analysis.
**Contents:**
.. toctree::
:maxdepth: 1
analyse
exanalyse
cfanalyze
analyse_nukem
analxrefs
analrecur
analadv
virtualmod
symdownload
symload
symunload
imageinfo
GetRelocSize
exhandlers
exinfo
traceexecute

View File

@ -0,0 +1,13 @@
# symdownload/downloadsym
Attempt to download a symbol from a Symbol Store.
## arguments
`[arg1]` Module name (with or without extension) to attempt to download symbols for. When not specified, an attempt will be done to download symbols for all loaded modules.
`[arg2]` Symbol Store URL. When not specified, the default store will be used.
## result
This command does not set any result variables.

View File

@ -0,0 +1,15 @@
# symload/loadsym
Attempt to load a symbol from disk.
## arguments
`arg1` Module name (with or without extension) to attempt to load symbols for.
`arg2` Path to the symbol file.
`[arg3]` Force load. Set to `1` to skip symbol validation.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# symunload/unloadsym
Unload a symbol.
## arguments
`arg1` Module name (with or without extension) to unload symbols from.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# traceexecute
Tell the debugger that an address has been traced.
## arguments
`arg1` The address.
## result
This command does not set any result variables.

View File

@ -0,0 +1,15 @@
# virtualmod
Tell the debugger to treat a memory range as a virtual module.
## arguments
`arg1` the user-supplied module name.
`arg2` the base of the memory range.
`[arg3]` the size of the memory range.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# DeleteBPX/bpc/bc
Delete a breakpoint set using the SetBPX command.
## arguments
`[arg1]` Name or address of the breakpoint to delete. If this argument is not specified, all breakpoints will be deleted.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# DeleteExceptionBPX
Delete an exception breakpoint set using the SetExceptionBPX command.
## arguments
`[arg1]` Name, exception name or code of the exception breakpoint to delete. If this argument is not specified, all exception breakpoints will be deleted.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# DeleteHardwareBreakpoint/bphc/bphwc
Delete a hardware breakpoint set using the SetHardwareBreakpoint command.
## arguments
`[arg1]` Name or address of the hardware breakpoint to delete. If this argument is not specified, all hardware breakpoints will be deleted.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# DeleteMemoryBPX/membpc/bpmc
Delete a memory breakpoint set using the SetMemoryBPX command.
## arguments
`[arg1]` Name or (base) address of the memory breakpoint to delete. If this argument is not specified, all memory breakpoints will be deleted.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# DisableBPX/bpd/bd
Disable a breakpoint set using the SetBPX command.
## arguments
`[arg1]` Name or address of the breakpoint to disable. If this argument is not specified, all breakpoints will be disabled.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# DisableExceptionBPX
Disable an exception breakpoint set using the SetExceptionBPX command.
## arguments
`[arg1]` Name, exception name or code of the exception breakpoint to enable. If this argument is not specified, all exception breakpoints will be disabled.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# DisableHardwareBreakpoint/bphd/bphwd
Disable a hardware breakpoint.
## arguments
`[arg1]` Address of the hardware breakpoint to disable. If this argument is not specified, all hardware breakpoints will be disabled.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# DisableMemoryBreakpoint/membpd/bpmd
Disable a memory breakpoint.
## arguments
`[arg1]` Address of the memory breakpoint to disable. If this argument is not specified, all memory breakpoints will be disabled.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# EnableBPX/bpe/be
Enable a breakpoint set using the SetBPX command.
## arguments
`[arg1]` Name or address of the breakpoint to enable. If this argument is not specified, all breakpoints will be enabled.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# EnableExceptionBPX
Enable an exception breakpoint set using the SetExceptionBPX command.
## arguments
`[arg1]` Name, exception name or code of the exception breakpoint to enable. If this argument is not specified, all exception breakpoints will be enabled.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# EnableHardwareBreakpoint/bphe/bphwe
Enable a previously disabled hardware breakpoint.
## arguments
`[arg1]` Address of the hardware breakpoint to enable. If this argument is not specified, as many as possible hardware breakpoints will be enabled.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# EnableMemoryBreakpoint/membpe/bpme
Enable a previously disabled memory breakpoint.
## arguments
`[arg1]` Address of the memory breakpoint to enable. If this argument is not specified, all memory breakpoints will be enabled.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# LibrarianDisableBreakpoint/bpddll
Enable a DLL breakpoint set using the LibrarianSetBreakpoint command.
## arguments
`[arg1]` DLL Name of the DLL breakpoint to disable. If this argument is not specified, all DLL breakpoints will be disabled.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# LibrarianEnableBreakpoint/bpedll
Enable a DLL breakpoint set using the LibrarianSetBreakpoint command.
## arguments
`[arg1]` DLL Name of the DLL breakpoint to enable. If this argument is not specified, all DLL breakpoints will be enabled.
## result
This command does not set any result variables.

View File

@ -0,0 +1,11 @@
# LibrarianRemoveBreakpoint/bcdll
Remove a DLL breakpoint.
## arguments
`arg1` DLL Name to remove the breakpoint from.
## result
This command does not set any result variables.

View File

@ -0,0 +1,15 @@
# LibrarianSetBreakpoint/bpdll
Set a singleshoot breakpoint on DLL load/unload.
## arguments
`arg1` DLL Name to break on.
`[arg2]` `a` means on load and unload, `l` means on load, `u` means on unload. When not specified, x64dbg will break on both load and unload.
`[arg3]` When specified, the breakpoint will be singleshoot. When not specified the breakpoint will not be removed after it has been hit.
## result
This command does not set any result variables.

View File

@ -0,0 +1,15 @@
# SetBPX/bp/bpx
Set an INT3 (SHORT/LONG) or UD2 breakpoint and optionally assign a name to it.
## arguments
`arg1` Address to put a breakpoint on. This can be an API name.
`[arg2]` Name of the breakpoint, use quotation marks to include spaces. This name can be used by the EnableBPX, DisableBPX and DeleteBPX functions as alias, but is mainly intended to provide a single line of information about the currently-hit breakpoint. When arg2 equals to a valid type (arg3) the type is used and arg2 is ignored.
`[arg3]` Breakpoint type. Can be one of the following options in random order: "ss" (single shot breakpoint), "long" (CD03), "ud2" (0F0B) and "short" (CC). You can combine the "ss" option with one of the type options in one string. Example: "SetBPX 00401000,"entrypoint",ssud2" will set a single shot UD2 breakpoint at 00401000 with the name "entrypoint". When specifying no type or just the type "ss" the default type will be used. Per default this equals to the "short" type. You can change the default type using the "SetBPXOptions" command.
## result
This command does not any result variables.

View File

@ -0,0 +1,11 @@
# SetBPXOptions/bptype
Set the default type for the "SetBPX" command.
## arguments
`arg1` Default type. This can be "short" (CC), "long" (CD03) or "ud2" (0F0B). Type default type affects both NORMAL and SINGLESHOT breakpoints.
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetExceptionBPX
Set an exception breakpoint. If an exception breakpoint is active, all the exceptions with the same chance and code will be captured as a breakpoint event and will not be handled by the default exception handling policy.
## arguments
`arg1` Exception name or code of the new exception breakpoint
`[arg2]` Chance. Set to `first`/`1` to capture first-chance exceptions, `second`/`2` to capture second-chance exceptions, `all`/`3` to capture all exceptions. Default value is `first`.
## result
This command does not any result variables.

View File

@ -0,0 +1,15 @@
# SetHardwareBreakpoint/bph/bphws
Set a hardware breakpoint (using debug registers).
## arguments
`arg1` Address of the hardware breakpoint.
`[arg2]` Hardware breakpoint type. Can be either 'r' (readwrite), 'w' (write) or 'x' (execute). When not specified, 'x' is assumed.
`[arg3]` Hardware breakpoint size. Can be either '1', '2', '4' or '8' (x64 only). Per default, '1' is assumed. The address you're putting the hardware breakpoint on must be aligned to the specified size.
## result
This command does not set any result variables.

View File

@ -0,0 +1,15 @@
# SetMemoryBPX/membp/bpm
Set a memory breakpoint (GUARD_PAGE) on the whole memory region the provided address is in.
## arguments
`arg1` Address of or inside a memory region that will be watched.
`[arg2]` 1/0 restore the memory breakpoint once it's hit? When this value is not equal to '1' or '0', it's assumed to be arg3. This means "bpm eax,r" would be the same command as: "bpm eax,0,r".
`[arg3]` Breakpoint type, it can be 'a' (read+write+execute) 'r' (read), 'w' (write) or 'x' (execute). Per default, it's 'a' (read+write+execute)
## result
This command does not set any result variables.

View File

@ -0,0 +1,15 @@
# SetMemoryRangeBPX/memrangebp/bpmrange
Set a memory breakpoint (GUARD_PAGE) on a specific memory range.
## arguments
`start` Start of the memory range.
`size` Size of the memory range.
`[type]` Breakpoint type, it can be 'a' (read+write+execute) 'r' (read), 'w' (write) or 'x' (execute). Per default, it's 'a' (read+write+execute). Append `ss` for a singleshot breakpoint (you can also use [`SetMemoryBreakpointSingleshoot`](../conditional-breakpoint-control/SetMemoryBreakpointSingleshoot.md) to do this).
## result
This command does not set any result variables.

View File

@ -0,0 +1,20 @@
# bpgoto
Configure the breakpoint so that when the program reaches it, the program will be directed to a new location. It is equivallent to the following commands:
```
SetBreakpointCondition arg1, 0
SetBreakpointCommand arg1, "CIP=arg2"
SetBreakpointCommandCondition arg1, 1
SetBreakpointFastResume arg1, 0
```
## arguments
`arg1` The address of the breakpoint.
`arg2` The new address to execute if the breakpoint is reached.
## results
This command does not set any result variables.

View File

@ -0,0 +1,21 @@
# bplist
Get a list of breakpoints. This list includes their state (enabled/disabled), their type, their address and (optionally) their names.
## arguments
This command has no arguments.
## result
This command does not set any result variables. A list entry has the following format:
STATE:TYPE:ADDRESS\[:NAME\]
STATEcan be 0 or 1. 0 means disabled, 1 means enabled. Only singleshoot and 'normal' breakpoints can be disabled.
TYPEcan be one of the following values: BP, SS, HW and GP. BP stands for a normal breakpoint (set using the SetBPX command), SS stands for SINGLESHOT, HW stands for HARDWARE and GP stand for Guard Page, the way of setting memory breakpoints.
ADDRESSis the breakpoint address, given in 32 and 64 bits for the x32 and x64 debugger respectively.
NAMEis the name assigned to the breakpoint.

View File

@ -0,0 +1,34 @@
Breakpoint Control
==================
This section contains breakpoint control (set/delete/enable/disable) commands.
**Context:**
.. toctree::
:maxdepth: 0
SetBPX
DeleteBPX
EnableBPX
DisableBPX
SetHardwareBreakpoint
DeleteHardwareBreakpoint
EnableHardwareBreakpoint
DisableHardwareBreakpoint
SetMemoryBPX
SetMemoryRangeBPX
DeleteMemoryBPX
EnableMemoryBreakpoint
DisableMemoryBreakpoint
LibrarianSetBreakpoint
LibrarianRemoveBreakpoint
LibrarianEnableBreakpoint
LibrarianDisableBreakpoint
SetExceptionBPX
DeleteExceptionBPX
EnableExceptionBPX
DisableExceptionBPX
bpgoto
bplist
SetBPXOptions

View File

@ -0,0 +1,11 @@
# GetBreakpointHitCount
Gets the hit counter of a software breakpoint.
## arguments
`arg1` The address of the breakpoint.
## result
`$result` will be set to the current value of the hit counter.

View File

@ -0,0 +1,11 @@
# GetExceptionBreakpointHitCount
Gets the hit counter of an exception breakpoint.
## arguments
`arg1` The name, exception name or code of the exception breakpoint.
## result
`$result` will be set to the current value of the hit counter.

View File

@ -0,0 +1,11 @@
# GetHardwareBreakpointHitCount
Gets the hit counter of a hardware breakpoint.
## arguments
`arg1` The address of the breakpoint.
## result
`$result` will be set to the current value of the hit counter.

View File

@ -0,0 +1,11 @@
# GetLibrarianBreakpointHitCount
Gets the hit counter of a librarian breakpoint.
## arguments
`arg1` The DLL name.
## result
`$result` will be set to the current value of the hit counter.

View File

@ -0,0 +1,11 @@
# GetMemoryBreakpointHitCount
Gets the hit counter of a memory breakpoint.
## arguments
`arg1` The address of the breakpoint.
## result
`$result` will be set to the current value of the hit counter.

View File

@ -0,0 +1,13 @@
# ResetBreakpointHitCount
Resets the hit counter of a software breakpoint.
## arguments
`arg1` The address of the breakpoint.
`[arg2]` The new hit count (zero when not specified).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# ResetExceptionBreakpointHitCount
Resets the hit counter of an exception breakpoint.
## arguments
`arg1` The name, exception code or name of the exception breakpoint.
`[arg2]` The new hit count (zero when not specified).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# ResetHardwareBreakpointHitCount
Resets the hit counter of a hardware breakpoint.
## arguments
`arg1` The address of the breakpoint.
`[arg2]` The new hit count (zero when not specified).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# ResetLibrarianBreakpointHitCount
Resets the hit counter of a librarian breakpoint.
## arguments
`arg1` The DLL name.
`[arg2]` The new hit count (zero when not specified).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# ResetMemoryBreakpointHitCount
Resets the hit counter of a memory breakpoint.
## arguments
`arg1` The address of the breakpoint.
`[arg2]` The new hit count (zero when not specified).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetBreakpointCommand
Sets the command to execute when a software breakpoint is hit. If the command condition is not specified, it will be executed when the debugger breaks, otherwise it will be executed when the condition is satisfied.
## arguments
`arg1` The address of the breakpoint.
`[arg2]` The command (empty when not specified).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetBreakpointCommandCondition
Sets the command condition of a software breakpoint. When command condition is not specified, the command will be executed when the debugger would break, otherwise it will be executed when the condition is satisfied.
## arguments
`arg1` The address of the breakpoint.
`[arg2]` The command condition (default condition when not specified).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetBreakpointCondition/bpcond/bpcnd
Sets the software breakpoint condition. When this condition is set, it is evaluated every time the breakpoint hits and the debugger would stop only if condition is not 0.
## arguments
`arg1` The address of the breakpoint.
`[arg2]` The condition expression.
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetBreakpointFastResume
Sets the fast resume flag of a software breakpoint. If this flag is set and the break condition doesn't evaluate to break, no GUI, plugin, logging or any other action will be performed, except for incrementing the hit counter.
## arguments
`arg1` The address of the breakpoint.
`[arg2]` The fast resume flag. If it is 0 (default), fast resume is disabled, otherwise it is enabled
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetBreakpointLog/bplog/bpl
Sets log text when a software breakpoint is hit. When log condition is not specified, it will always be logged regardless of the break condition, otherwise it will be logged when the logging condition is satisfied.
## arguments
`arg1` The address of the breakpoint.
`[arg2]` The log format string (see introduction/formatting).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetBreakpointLogCondition/bplogcondition
Sets the logging condition of a software breakpoint. When log condition is not specified, log text always be logged regardless of the break condition, otherwise it will be logged when the logging condition is satisfied.
## arguments
`arg1` The address of the breakpoint.
`[arg2]` The logging condition (default condition when not specified).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetBreakpointName/bpname
Sets the name of a software breakpoint. It will be displayed in the breakpoints view and in the log when the breakpoint is hit.
## arguments
`arg1` The address of an existing software breakpoint.
`[arg2]` The name of the breakpoint (empty when not specified).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetBreakpointSilent
Sets the silent flag of a software breakpoint. If this flag is set, the default log message will not appear. User-defined log is not affected.
## arguments
`arg1` The address of the breakpoint.
`[arg2]` The silent flag. If it is 0 (default), silent is disabled, otherwise it is enabled
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetBreakpointSingleshoot
Sets the singleshoot flag of a software breakpoint. If this flag is set the breakpoint will be removed on the first hit.
## arguments
`arg1` The address of the breakpoint.
`[arg2]` The singleshoot flag. If it is 0 (default), singleshoot is disabled, otherwise it is enabled
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetExceptionBreakpointCommand
Sets the command to execute when an exception breakpoint is hit. If the command condition is not specified, it will be executed when the debugger breaks, otherwise it will be executed when the condition is satisfied.
## arguments
`arg1` The name, exception name or code of the exception breakpoint.
`[arg2]` The command (empty when not specified).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetExceptionBreakpointCommandCondition
Sets the command condition of an exception breakpoint. When command condition is not specified, the command will be executed when the debugger would break, otherwise it will be executed when the condition is satisfied.
## arguments
`arg1` The name, exception name or code of the exception breakpoint.
`[arg2]` The command condition (default condition when not specified).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetExceptionBreakpointCondition
Sets the exception breakpoint condition. When this condition is set, it is evaluated every time the exception occurs (chance must match) and the debugger would stop only if condition is not 0.
## arguments
`arg1` The name, exception name or code of the exception breakpoint.
`[arg2]` The condition expression.
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetExceptionBreakpointFastResume
Sets the fast resume flag of an exception breakpoint. If this flag is set and the break condition doesn't evaluate to break, no GUI, plugin, logging or any other action will be performed, except for incrementing the hit counter.
## arguments
`arg1` The name, exception name or code of the exception breakpoint.
`[arg2]` The fast resume flag. If it is 0 (default), fast resume is disabled, otherwise it is enabled
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetExceptionBreakpointLog
Sets log text when an exception breakpoint is hit. When log condition is not specified, it will always be logged regardless of the break condition, otherwise it will be logged when the logging condition is satisfied.
## arguments
`arg1` The name, exception name or code of the exception breakpoint.
`[arg2]` The log format string (see introduction/formatting).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetExceptionBreakpointLogCondition
Sets the logging condition of an exception breakpoint. When log condition is not specified, log text always be logged regardless of the break condition, otherwise it will be logged when the logging condition is satisfied.
## arguments
`arg1` The name, exception name or code of the exception breakpoint.
`[arg2]` The logging condition (default condition when not specified).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetExceptionBreakpointName
Sets the name of an exception breakpoint. It will be displayed in the breakpoints view and in the log when the breakpoint is hit.
## arguments
`arg1` The name, exception name or code of the exception breakpoint.
`[arg2]` The name of the breakpoint (empty when not specified).
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetExceptionBreakpointSilent
Sets the silent flag of an exception breakpoint. If this flag is set, the default log message will not appear. User-defined log is not affected.
## arguments
`arg1` The name, exception name or code of the exception breakpoint.
`[arg2]` The silent flag. If it is 0 (default), silent is disabled, otherwise it is enabled
## result
This command does not set any result variables.

View File

@ -0,0 +1,13 @@
# SetExceptionBreakpointSingleshoot
Sets the singleshoot flag of an exception breakpoint. If this flag is set the exception breakpoint will be removed on the first hit.
## arguments
`arg1` The name, exception name or code of the exception breakpoint.
`[arg2]` The singleshoot flag. If it is 0 (default), singleshoot is disabled, otherwise it is enabled
## result
This command does not set any result variables.

Some files were not shown because too many files have changed in this diff Show More