Skip to content

Commit f35bc34

Browse files
author
Nukem9
committed
Merged mrexodia/x64_dbg into master
2 parents a848832 + f62d070 commit f35bc34

File tree

482 files changed

+43651
-22020
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

482 files changed

+43651
-22020
lines changed

.gitignore

Lines changed: 33 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
#ignore directories
2-
*/obj/
3-
bin/*/*
4-
ipch/*
5-
x64_dbg_*/Win32/*
6-
x64_dbg_*/x64/*
2+
bin/
3+
obj/
4+
ipch/
5+
Win32/
6+
x64/
7+
release/
8+
build/
9+
debug/
10+
*XE Results*/
711

812
#global filetypes to ignore
913
*.depend
1014
*.layout
15+
*.patch
1116
*.cscope_file_list
1217
*.bmarks
1318
*.chw
@@ -16,19 +21,22 @@ x64_dbg_*/x64/*
1621
*.opensdf
1722
*.sdf
1823
*.suo
24+
*.autosave
25+
*.~vsd
26+
*.dll
27+
*.exe
28+
*.pro.user.*
29+
*.orig
30+
coverity*
31+
cov-int*
32+
COV/
33+
*.pdb
34+
ui_*
1935

20-
#whitelisted bin files
21-
!bin/*/TitanEngine.dll
22-
!bin/*/test.dll
23-
!bin/*/test.exe
24-
!bin/*/dbghelp.dll
25-
!bin/*/sqlite.dll
26-
!bin/*/BeaEngine.dll
27-
!bin/*/Scylla.dll
28-
29-
#files to ignore
36+
#project to ignore
3037
todo_bridge.txt
3138
help/x64_dbg.chm
39+
help/output/
3240

3341
#debugger files to ignore
3442
x64_dbg_dbg/ODbgScript.chm
@@ -46,11 +54,17 @@ x64_dbg_gui/Project/GeneratedFiles/
4654
x64_dbg_gui/Project/release/
4755
x64_dbg_gui/Project/Win32/
4856
x64_dbg_gui/Project/x64/
57+
x64_dbg_gui/Project/Makefile
58+
x64_dbg_gui/Project/Makefile.Debug
59+
x64_dbg_gui/Project/Makefile.Release
4960
x64_dbg_gui/Project/Src/Bridge/libx32_bridge.a
5061
x64_dbg_gui/Project/Src/Bridge/libx64_bridge.a
5162
x64_dbg_gui/Project/Src/Bridge/x32_bridge.lib
5263
x64_dbg_gui/Project/Src/Bridge/x64_bridge.lib
53-
help/output/*
54-
*.autosave
55-
*.~vsd
56-
release/
64+
tools/
65+
RCa*
66+
*.aps
67+
68+
#exceptions
69+
!/AStyleWhore.exe
70+
!/AStyle.dll

AStyle.dll

174 KB
Binary file not shown.

AStyleWhore.exe

43 KB
Binary file not shown.

LICENSE

Lines changed: 685 additions & 0 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# x64_dbg
2+
3+
## Note
4+
**This is a new version of this repository. The old version can be found [here](https://bitbucket.org/mrexodia/x64_dbg_old).**
5+
6+
Also please run install.bat before you start committing code, this ensures your code is auto-formatted to the *x64_dbg* standards.
7+
8+
## Downloads
9+
Releases of *x64_dbg* can be found on [here](http://download.x64dbg.com).
10+
11+
## Overview
12+
*x64_dbg* is an open-source x32/x64 debugger for Windows.
13+
14+
## Features
15+
- Open-source
16+
- Intuitive and familiar, yet new user interface
17+
- C-like expression parser
18+
- Full-featured debugging of DLL and EXE files (TitanEngine)
19+
- IDA-like sidebar with jump arrows
20+
- IDA-like instruction token highlighter (highlight registers, etc.)
21+
- Memory map
22+
- Symbol view
23+
- Thread view
24+
- Content-sensitive register view
25+
- Fully customizable color scheme
26+
- Dynamically recognize modules and strings
27+
- Import reconstructor integrated (Scylla)
28+
- Fast disassembler (BeaEngine)
29+
- User database (JSON) for comments, labels, bookmarks, etc.
30+
- Plugin support with growing API
31+
- Extendable, debuggable scripting language for automation
32+
- Multi-datatype memory dump
33+
- Basic debug symbol (PDB) support
34+
- Dynamic stack view
35+
- Built-in assembler (XEDParse)
36+
37+
## Known bugs
38+
- Memory breakpoints sometimes fail (TitanEngine bug)
39+
40+
## License
41+
*x64_dbg* is licensed under GLPv3, which means you can freely distribute and/or modify the source of *x64_dbg*, as long as you share your changes with us. The only exception is that plugins you write do not have to comply with the GLPv3 license. They do not have to be open-source and they can be commercial and/or private. The only exception to this is when your plugin uses code copied from *x64_dbg*. In that case you would still have to share the changes to *x64_dbg* with us.
42+
43+
## Credits
44+
- Debugger core by TitanEngine Community Edition
45+
- Disassembly powered by BeaEngine (Updated)
46+
- Assembly powered by XEDParse
47+
- Import reconstruction powered by Scylla
48+
- JSON powered by Jansson
49+
- Database compression powered by lz4
50+
- Bug icon by VisualPharm
51+
- Interface icons by Fugue
52+
- Website by tr4ceflow
53+
54+
## Special Thanks
55+
- EXETools community
56+
- Tuts4You community
57+
- acidflash
58+
- cyberbob
59+
- Teddy Rogers
60+
- TEAM DVT
61+
- DMichael
62+
- Artic
63+
- Nukem
64+
- ahmadmansoor
65+
66+
## Developers (in order of joining)
67+
- [Mr. eXoDia](http://mrexodia.cf)
68+
- Sigma
69+
- [tr4ceflow](http://blog.tr4ceflow.com)
70+
- [Dreg](http://www.fr33project.org)

bin/x32/BeaEngine.dll

-249 KB
Binary file not shown.

bin/x32/Scylla.dll

-458 KB
Binary file not shown.

bin/x32/TitanEngine.dll

-596 KB
Binary file not shown.

bin/x32/dbghelp.dll

-1.2 MB
Binary file not shown.

bin/x32/sqlite.dll

-482 KB
Binary file not shown.

bin/x32/test.dll

-6.5 KB
Binary file not shown.

bin/x32/test.exe

-6 KB
Binary file not shown.

bin/x64/BeaEngine.dll

-511 KB
Binary file not shown.

bin/x64/Scylla.dll

-501 KB
Binary file not shown.

bin/x64/TitanEngine.dll

-664 KB
Binary file not shown.

bin/x64/dbghelp.dll

-1.44 MB
Binary file not shown.

bin/x64/sqlite.dll

-746 KB
Binary file not shown.

bin/x64/test.dll

-36 KB
Binary file not shown.

bin/x64/test.exe

-36 KB
Binary file not shown.

clean.bat

Lines changed: 30 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ del /Q *.sdf
44
del /Q *.layout
55
del /Q /A H *.suo
66
rmdir /S /Q ipch
7+
rmdir /S /Q release
78
echo cleaning x64_dbg_bridge...
89
cd x64_dbg_bridge
910
rmdir /S /Q obj
@@ -44,35 +45,37 @@ del /Q Project\Src\Bridge\libx64_bridge.a
4445
del /Q Project\Src\Bridge\x32_bridge.lib
4546
del /Q Project\Src\Bridge\x64_bridge.lib
4647
cd ..
48+
echo cleaning bin\
49+
del /Q bin\*.pdb
50+
del /Q bin\*.exp
51+
del /Q bin\*.a
52+
del /Q bin\*.lib
53+
del /Q bin\*.def
54+
del /Q bin\x96_dbg.exe
4755
echo cleaning bin\x32...
48-
cd bin\x32
49-
rmdir /S /Q db
50-
del /Q *.pdb
51-
del /Q *.exp
52-
del /Q *.a
53-
del /Q *.lib
54-
del /Q *.def
55-
del /Q x32_dbg.exe
56-
del /Q x32_dbg.dll
57-
del /Q x32_gui.dll
58-
del /Q x32_bridge.dll
59-
cd ..
60-
cd ..
56+
rmdir /S /Q bin\x32\db
57+
del /Q bin\x32\*.pdb
58+
del /Q bin\x32\*.exp
59+
del /Q bin\x32\*.a
60+
del /Q bin\x32\*.lib
61+
del /Q bin\x32\*.def
62+
del /Q bin\x32\x32_dbg.exe
63+
del /Q bin\x32\x32_dbg.dll
64+
del /Q bin\x32\x32_gui.dll
65+
del /Q bin\x32\x32_bridge.dll
6166
echo cleaning bin\x64...
62-
cd bin\x64
63-
rmdir /S /Q db
64-
del /Q *.pdb
65-
del /Q *.exp
66-
del /Q *.a
67-
del /Q *.lib
68-
del /Q *.def
69-
del /Q x64_dbg.exe
70-
del /Q x64_dbg.dll
71-
del /Q x64_gui.dll
72-
del /Q x64_bridge.dll
73-
cd ..
74-
cd ..
67+
rmdir /S /Q bin\x64\db
68+
del /Q bin\x64\*.pdb
69+
del /Q bin\x64\*.exp
70+
del /Q bin\x64\*.a
71+
del /Q bin\x64\*.lib
72+
del /Q bin\x64\*.def
73+
del /Q bin\x64\x64_dbg.exe
74+
del /Q bin\x64\x64_dbg.dll
75+
del /Q bin\x64\x64_gui.dll
76+
del /Q bin\x64\x64_bridge.dll
7577
echo cleaning help...
7678
cd help
7779
del /Q *.chm
78-
rmdir /S /Q output
80+
rmdir /S /Q output
81+
exit 0

help/AttachDebugger_attach.htm

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
debugger to a running process.</P>
2020
<P><U>arguments</U><BR>&nbsp; arg1: Process Identifier
2121
(PID) of the running process.</P>
22+
<P>[arg2]: Handle to an Event Object to signal (this
23+
is for internal use only).</P>
2224
<P><U>result</U> <BR>This command will give control back to the user&nbsp;after
2325
the&nbsp;system breakpoint&nbsp;is reached. It will
2426
set&nbsp;<U>$pid</U>&nbsp;and&nbsp;<U>$hp/$hProcess</U>&nbsp;variables.

help/Calculations.htm

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,19 @@
2121
calculations, it allows quick&nbsp;variable changes using a C-like syntax.</P>
2222
<P><STRONG>Operators</STRONG><BR> You can use the
2323
following operators in your expression. They are processed in the following order:</P>
24+
<P><U>0:negative</U>
25+
: Negative numbers can be prefixed by a
26+
'-' sign.</P>
2427
<P><U>1:</U><U>brackets</U>: '(' and ')' Brackets are
2528
resolved first, there is no need for a terminating bracket, unless you want to
2629
use one.</P>
2730
<P><U>2:not</U>: '~' The not operator can be used before a
2831
number of a variable, like in C.</P>
2932
<P><U>3:muliplication/devision</U>: '*' = regular
30-
multiplication (signed/unsigned), '$' = get the higher part of the
33+
multiplication (signed/unsigned), '`' = get the higher part of the
3134
multiplication, '/' = regular devision (signed/unsigned, devide by zero=error)
3235
and '%' = get the modulo (remainder) of the devision.</P>
33-
<P><U>4:addition/substraction</U>
34-
: '+' and '-'</P>
36+
<P><U>4:addition/substraction</U>: '+' and '-'</P>
3537
<P><U>5:shift</U>: '&lt;' = shift left (shl for unsigned,
3638
sal for signed), '&gt;' = shift right (shr for unsigned, sar for signed).</P>
3739
<P><U>6:and</U>: '&amp;' Just the regular AND operation like
@@ -47,4 +49,4 @@
4749
can be any register, flag, variable or memory location. 'b' can be anything that is recognized as a mathmatical
4850
input.</P>
4951
<P><U>a++/a--</U>: 'a' can be any register, flag, variable or memory
50-
location.</P></BODY></HTML>
52+
location.</P></body>

help/Callbacks.htm

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,4 +116,20 @@
116116
<STRONG>DEBUG_EVENT*</STRONG> DebugEvent;<BR>};</P>
117117
<P>//Called when a menu entry created by the plugin has
118118
been clicked, the GUI will resume when this callback returns.<BR>struct <STRONG>PLUG_CB_MENUENTRY</STRONG><BR>{<BR>&nbsp;&nbsp;&nbsp;
119-
<STRONG>int</STRONG> hEntry;<BR>};</P></body></HTML>
119+
<STRONG>int</STRONG> hEntry;<BR>};</P>
120+
<P>//Called before TranslateMessage and DispatchMessage
121+
Windows functions (PreTranslateMessage). Avoid calling user32 functions without
122+
precautions here, there <STRONG>will</STRONG> be a recursive call if you fail
123+
to take countermeasures.<BR>struct
124+
<STRONG>PLUG_CB_WINEVENT<BR></STRONG>{<BR>&nbsp;&nbsp;&nbsp; <STRONG>MSG*</STRONG>
125+
message;<BR>&nbsp;&nbsp;&nbsp; <STRONG>long*</STRONG>
126+
result;<BR>&nbsp;&nbsp;&nbsp; <STRONG>bool</STRONG> retval; //only set this to true, never to
127+
false<BR>};</P>
128+
<P>//Called before TranslateMessage and DispatchMessage
129+
Windows functions (PreTranslateMessage). Avoid calling user32 functions without
130+
precautions here, there <STRONG>will</STRONG> be a
131+
recursive call if you fail to take countermeasures. This function is global, so it also captures hotkeys
132+
(see Qt documentation).<BR>struct
133+
<STRONG>PLUG_CB_WINEVENTGLOBAL<BR></STRONG>{<BR>&nbsp;&nbsp;&nbsp; <STRONG>MSG*</STRONG>
134+
message;<BR>&nbsp;&nbsp;&nbsp; <STRONG>bool</STRONG> retval; //only set this to true, never to
135+
false<BR>};</P></body></HTML>

help/Commands.htm

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,13 @@
1515
</head>
1616

1717
<body>
18-
<P class=rvps3><SPAN class=rvts10><STRONG>
19-
command[,alias1,alias2]</STRONG><BR></SPAN><SPAN class=rvts9>Command description
20-
here.</SPAN><SPAN class=rvts9><BR></SPAN></P>
21-
<P class=rvps3><SPAN class=rvts11><U>arguments</U><BR></SPAN><SPAN
22-
class=rvts9>&nbsp; arg1: </SPAN><SPAN class=rvts9>Argument description.</SPAN></P>
23-
<P class=rvps3><SPAN class=rvts9></SPAN><SPAN class=rvts9>[arg2]: </SPAN><SPAN
24-
class=rvts9></SPAN><SPAN class=rvts9>Optional argument.</SPAN></P>
25-
<P class=rvps3><SPAN class=rvts9></SPAN><SPAN
26-
class=rvts9>[arg3]: </SPAN><SPAN class=rvts9></SPAN><SPAN class=rvts9>Another optional argument (can only be given when the
27-
previous argument is also
28-
given).</SPAN><SPAN class=rvts9><BR></P></SPAN>
29-
<P class=rvps3><SPAN class=rvts11><U>result</U><BR></SPAN><SPAN
30-
class=rvts9>Description of the command result.</SPAN><SPAN
31-
class=rvts9><BR></SPAN></P>
32-
<P class=rvps3><SPAN class=rvts12><U><STRONG>REMARK</STRONG></U></SPAN><SPAN
33-
class=rvts9>: Commands cannot contain any of the following characters: "," (comma), " " (space) and
34-
"\" (backslash). These characters need to be prefixed using a backslash
35-
('\,').</SPAN></P></body></HTML>
18+
<P class=rvps3><STRONG>
19+
command[,alias1,alias2]</STRONG><BR>Command description here.</P>
20+
<P class=rvps3><U>arguments</U><BR>&nbsp; arg1: Argument description.</P>
21+
<P class=rvps3>[arg2]: Optional argument.</P>
22+
<P class=rvps3>[arg3]: Another optional argument (can only
23+
be given when the previous argument is also given).</P>
24+
<P class=rvps3><U>result</U><BR>Description of the command result.</P>
25+
<P class=rvps3><U><STRONG>REMARK</STRONG></U>: Commands cannot contain any of the
26+
following characters: "," (comma), " " (space) and "\" (backslash). These
27+
characters need to be prefixed using a backslash ('\,').</P></body></HTML>

help/Data.htm

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2+
<html>
3+
<head>
4+
<title>Data</title>
5+
<meta name="GENERATOR" content="WinCHM">
6+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7+
<style>
8+
html,body {
9+
/* Default Font */
10+
font-family: Courier New;
11+
font-size: 11pt;
12+
}
13+
</style>
14+
15+
</head>
16+
17+
<body>
18+
<P><STRONG>Data</STRONG><BR>This section contains commands
19+
that are used to analyze and manipulate data.</P></body>
20+
</html>

help/DebugContinue_con.htm

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2+
<html>
3+
<head>
4+
<title>DebugContinue/con</title>
5+
<meta name="GENERATOR" content="WinCHM">
6+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
7+
<style>
8+
html,body {
9+
/* Default Font */
10+
font-family: Courier New;
11+
font-size: 11pt;
12+
}
13+
</style>
14+
15+
</head>
16+
17+
18+
<body>
19+
<P><STRONG>DebugContinue[,con]</STRONG><BR>Set debugger
20+
continue status.</P>
21+
<P class=rvps3><U>arguments</U> <BR>[arg1]: When set, the exception will be handled by the
22+
program. Otherwise the exception will be swallowed. </P>
23+
<P class=rvps3><U>result
24+
<BR></U>This command does not set any result variables.</P></body>
25+
</html>

help/DeleteBPX_bpc_bc.htm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,5 @@
2020
<P><U>arguments</U><BR>[arg1]: Name or address of the breakpoint to delete. If this argument is not specified, all breakpoints will be
2121
deleted.</P>
2222
<P><U>result<BR></U>This command does not set any result variables.</P>
23-
<P>&nbsp;</P></head>
23+
</body>
24+
</html>

help/DeleteHardwareBreakpoint_bphc_bphwc.htm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@
2121
this argument is not specified, all hardware breakpoints will be deleted.</P>
2222
<P><U>result<BR></U>This command does not set any result
2323
variables.</P></body>
24+
</html>

help/DeleteMemoryBPX_membpc_bpmc.htm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,3 +37,4 @@
3737
<BR>
3838
</U>This command does not set any result
3939
variables.</P></body>
40+
</html>

help/DetachDebugger_detach.htm

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,4 @@
2020
<P><U>arguments</U><BR>This command has no arguments.</P>
2121
<P><U>result</U> <BR>This command does not set any result
2222
variables.</P></body>
23+
</html>

0 commit comments

Comments
 (0)