"x64_dbg"->"x64dbg" + added Nukem

This commit is contained in:
Mr. eXoDia 2015-04-10 01:51:35 +02:00
parent 7e7f475995
commit 6ade97b1cd
21 changed files with 58 additions and 54 deletions

View File

@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8
# title of most generated pages and in a few other places. # title of most generated pages and in a few other places.
# The default value is: My Project. # The default value is: My Project.
PROJECT_NAME = x64_dbg PROJECT_NAME = x64dbg
# The PROJECT_NUMBER tag can be used to enter a project or revision number. This # The PROJECT_NUMBER tag can be used to enter a project or revision number. This
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
@ -1253,7 +1253,7 @@ GENERATE_HTMLHELP = NO
# written to the html output directory. # written to the html output directory.
# This tag requires that the tag GENERATE_HTMLHELP is set to YES. # This tag requires that the tag GENERATE_HTMLHELP is set to YES.
CHM_FILE = x64_dbg_src.chm CHM_FILE = x64dbg_src.chm
# The HHC_LOCATION tag can be used to specify the location (absolute path # The HHC_LOCATION tag can be used to specify the location (absolute path
# including file name) of the HTML help compiler ( hhc.exe). If non-empty # including file name) of the HTML help compiler ( hhc.exe). If non-empty

View File

@ -156,8 +156,8 @@ same work.
2. Treatment of plugins 2. Treatment of plugins
This license does not affect plugins, i.e., dynamically linked This license does not affect plugins, i.e., dynamically linked
libraries, that use the provided plugin interface mechanism of x64_dbg libraries, that use the provided plugin interface mechanism of x64dbg
for contibuting additional features to the x64_dbg project and can only for contibuting additional features to the x64dbg project and can only
be run from x64dbg. In fact you are allowed to create and share be run from x64dbg. In fact you are allowed to create and share
(non-)commercial, non-standalone closed-source plugins for x64dbg under (non-)commercial, non-standalone closed-source plugins for x64dbg under
your own license. your own license.

View File

@ -1,18 +1,18 @@
# x64_dbg # x64dbg
## Note ## Note
Please run `install.bat` before you start committing code, this ensures your code is auto-formatted to the *x64_dbg* [standards](https://bitbucket.org/mrexodia/x64_dbg/wiki/x64_dbg_coding_guidelines). Please run `install.bat` before you start committing code, this ensures your code is auto-formatted to the *x64dbg* [standards](https://bitbucket.org/mrexodia/x64dbg/wiki/x64dbg_coding_guidelines).
## Compiling ## Compiling
For a complete guide on compiling *x64_dbg* read [this](https://bitbucket.org/mrexodia/x64_dbg/wiki/Compiling%20the%20whole%20project). For a complete guide on compiling *x64dbg* read [this](https://bitbucket.org/mrexodia/x64dbg/wiki/Compiling%20the%20whole%20project).
## Downloads ## Downloads
Releases of *x64_dbg* can be found [here](http://download.x64dbg.com). Releases of *x64dbg* can be found [here](http://download.x64dbg.com).
Snapshots of *x64_dbg* can be found [here](http://snapshots.x64dbg.com). Snapshots of *x64dbg* can be found [here](http://snapshots.x64dbg.com).
Jenkins build server can be found [here](http://jenkins.x64dbg.com). Jenkins build server can be found [here](http://jenkins.x64dbg.com).
## Overview ## Overview
*x64_dbg* is an open-source x32/x64 debugger for Windows. *x64dbg* is an open-source x32/x64 debugger for Windows.
## Features ## Features
- Open-source - Open-source
@ -41,7 +41,7 @@ Jenkins build server can be found [here](http://jenkins.x64dbg.com).
- Memory breakpoints sometimes fail (TitanEngine bug) - Memory breakpoints sometimes fail (TitanEngine bug)
## License ## License
*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. *x64dbg* is licensed under GLPv3, which means you can freely distribute and/or modify the source of *x64dbg*, 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 *x64dbg*. In that case you would still have to share the changes to *x64dbg* with us.
## Credits ## Credits
- Debugger core by [TitanEngine Community Edition](https://bitbucket.org/mrexodia/titanengine-update) - Debugger core by [TitanEngine Community Edition](https://bitbucket.org/mrexodia/titanengine-update)
@ -70,4 +70,5 @@ Jenkins build server can be found [here](http://jenkins.x64dbg.com).
- [Mr. eXoDia](http://mrexodia.cf) - [Mr. eXoDia](http://mrexodia.cf)
- Sigma - Sigma
- [tr4ceflow](http://blog.tr4ceflow.com) - [tr4ceflow](http://blog.tr4ceflow.com)
- [Dreg](http://www.fr33project.org) - [Dreg](http://www.fr33project.org)
- Nukem

View File

@ -20,7 +20,7 @@ breakpoint on DLL load/unload.</P>
<P><U>arguments</U><BR>&nbsp; arg1: DLL Name to break <P><U>arguments</U><BR>&nbsp; arg1: DLL Name to break
on.</P> on.</P>
<P>[arg2]: 'l' means on load, 'u' means on unload. When not <P>[arg2]: 'l' means on load, 'u' means on unload. When not
specified, x64_dbg will break on both load and unload.</P> specified, x64dbg will break on both load and unload.</P>
<P>[arg3]: When specified, the breakpoint will not be singleshoot. When not specified the <P>[arg3]: When specified, the breakpoint will not be singleshoot. When not specified the
breakpoint will be removed after it has been hit.</P> breakpoint will be removed after it has been hit.</P>
<P><U>result<BR></U>This command does not set any result <P><U>result<BR></U>This command does not set any result

View File

@ -16,7 +16,7 @@ html,body {
<body> <body>
<P><STRONG>Plugins<BR></STRONG>This section describes <P><STRONG>Plugins<BR></STRONG>This section describes
various plugin functions for x64_dbg.</P> various plugin functions for x64dbg.</P>
<P>You can install plugins by copying the *.dp32 (x32 <P>You can install plugins by copying the *.dp32 (x32
plugins) or *.dp64 (x64 plugins) or *.dp64 (x64
plugins) to the 'plugins' directory.</P></body> plugins) to the 'plugins' directory.</P></body>

View File

@ -16,6 +16,6 @@ html,body {
<body> <body>
<P><STRONG>Scripting</STRONG><BR>This sections provides an overview of automating tasks with <P><STRONG>Scripting</STRONG><BR>This sections provides an overview of automating tasks with
x64_dbg using scripts. See Commands for a description of all possible script commands. See Introduction for an introduction to x64dbg using scripts. See Commands for a description of all possible script commands. See Introduction for an introduction to
expressions.</P></body> expressions.</P></body>
</html> </html>

View File

@ -16,7 +16,7 @@ html,body {
<body> <body>
<P><STRONG>Credits</STRONG><BR> <P><STRONG>Credits</STRONG><BR>
This page is reserved for people/organisations that contributed to x64_dbg.</P> This page is reserved for people/organisations that contributed to x64dbg.</P>
<UL> <UL>
<LI> <LI>
<DIV>Debugger core by&nbsp;<A <DIV>Debugger core by&nbsp;<A
@ -77,4 +77,7 @@ Sigma </DIV>
<LI> <LI>
<DIV><A href="http://www.fr33project.org" <DIV><A href="http://www.fr33project.org"
target=_blank>Dreg</A> target=_blank>Dreg</A>
</DIV>
<LI>
<DIV>Nukem
</DIV></LI></UL></body></HTML> </DIV></LI></UL></body></HTML>

View File

@ -17,7 +17,7 @@ html,body {
<body> <body>
<P><STRONG>The basics</STRONG><BR>This page covers the <P><STRONG>The basics</STRONG><BR>This page covers the
basic principles of plugin development for x64_dbg.</P> basic principles of plugin development for x64dbg.</P>
<P><STRONG>Exports</STRONG><BR>A plugin has at least one <P><STRONG>Exports</STRONG><BR>A plugin has at least one
export. This export must be called <U>pluginit</U>. See the PLUG_INITSTRUCT and export. This export must be called <U>pluginit</U>. See the PLUG_INITSTRUCT and
the plugin headers for the plugin headers for

View File

@ -17,7 +17,7 @@ html,body {
<body> <body>
<P><STRONG>_plugin_debugpause<BR></STRONG>This function returns debugger control to the <P><STRONG>_plugin_debugpause<BR></STRONG>This function returns debugger control to the
user. You would use this function when you write an unpacker that needs support user. You would use this function when you write an unpacker that needs support
from x64_dbg (for example in development). Calling this function will set the from x64dbg (for example in development). Calling this function will set the
debug state to 'paused' and <U>it will <STRONG>not</STRONG> return until the debug state to 'paused' and <U>it will <STRONG>not</STRONG> return until the
user runs the debuggee using the 'run' command</U> user runs the debuggee using the 'run' command</U>

View File

@ -52,7 +52,7 @@ window.onafterprint = d_onafterprint;
<p><FONT face=Courier>($content$)</FONT></p> <p><FONT face=Courier>($content$)</FONT></p>
<hr> <hr>
<font face="Courier" color="#808080" size="1"><A <font face="Courier" color="#808080" size="1"><A
href="http://x64dbg.com" target=_blank>x64_dbg</A>,&nbsp;GPLv3</font>&nbsp; </div> href="http://x64dbg.com" target=_blank>x64dbg</A>,&nbsp;GPLv3</font>&nbsp; </div>
</body> </body>

View File

@ -9,7 +9,7 @@
#include <new> #include <new>
/** /**
\brief x64_dbg library instance. \brief x64dbg library instance.
*/ */
HINSTANCE hInst; HINSTANCE hInst;
@ -24,7 +24,7 @@ char dbbasepath[deflen] = "";
char dbpath[3 * deflen] = ""; char dbpath[3 * deflen] = "";
/** /**
\brief Number of allocated buffers by emalloc(). This should be 0 when x64_dbg ends. \brief Number of allocated buffers by emalloc(). This should be 0 when x64dbg ends.
*/ */
static int emalloc_count = 0; static int emalloc_count = 0;
@ -287,13 +287,13 @@ arch GetFileArchitecture(const char* szFileName)
} }
/** /**
\brief Query if x64_dbg is running in Wow64 mode. \brief Query if x64dbg is running in Wow64 mode.
\return true if running in Wow64, false otherwise. \return true if running in Wow64, false otherwise.
*/ */
bool IsWow64() bool IsWow64()
{ {
BOOL bIsWow64Process = FALSE; BOOL bIsWow64Process = FALSE;
//x64_dbg supports WinXP SP3 and later only, so ignore the GetProcAddress crap :D //x64dbg supports WinXP SP3 and later only, so ignore the GetProcAddress crap :D
IsWow64Process(GetCurrentProcess(), &bIsWow64Process); IsWow64Process(GetCurrentProcess(), &bIsWow64Process);
return !!bIsWow64Process; return !!bIsWow64Process;
} }

View File

@ -1116,9 +1116,9 @@ DWORD WINAPI threadDebugLoop(void* lpParameter)
if((mewow64 and !wow64) or (!mewow64 and wow64)) if((mewow64 and !wow64) or (!mewow64 and wow64))
{ {
#ifdef _WIN64 #ifdef _WIN64
dputs("Use x32_dbg to debug this process!"); dputs("Use x32dbg to debug this process!");
#else #else
dputs("Use x64_dbg to debug this process!"); dputs("Use x64dbg to debug this process!");
#endif // _WIN64 #endif // _WIN64
unlock(WAITID_STOP); unlock(WAITID_STOP);
return 0; return 0;

View File

@ -68,10 +68,10 @@ CMDRESULT cbDebugInit(int argc, char* argv[])
return STATUS_ERROR; return STATUS_ERROR;
#ifdef _WIN64 #ifdef _WIN64
case x32: case x32:
dputs("Use x32_dbg to debug this file!"); dputs("Use x32dbg to debug this file!");
#else //x86 #else //x86
case x64: case x64:
dputs("Use x64_dbg to debug this file!"); dputs("Use x64dbg to debug this file!");
#endif //_WIN64 #endif //_WIN64
return STATUS_ERROR; return STATUS_ERROR;
default: default:
@ -924,9 +924,9 @@ CMDRESULT cbDebugAttach(int argc, char* argv[])
if((mewow64 and !wow64) or (!mewow64 and wow64)) if((mewow64 and !wow64) or (!mewow64 and wow64))
{ {
#ifdef _WIN64 #ifdef _WIN64
dputs("Use x32_dbg to debug this process!"); dputs("Use x32dbg to debug this process!");
#else #else
dputs("Use x64_dbg to debug this process!"); dputs("Use x64dbg to debug this process!");
#endif // _WIN64 #endif // _WIN64
return STATUS_ERROR; return STATUS_ERROR;
} }

View File

@ -324,7 +324,7 @@ extern "C" DLL_EXPORT void _dbg_dbgexitsignal()
if(memleaks()) if(memleaks())
{ {
char msg[256] = ""; char msg[256] = "";
sprintf(msg, "%d memory leak(s) found!\n\nPlease send contact the authors of x64_dbg.", memleaks()); sprintf(msg, "%d memory leak(s) found!\n\nPlease send contact the authors of x64dbg.", memleaks());
MessageBoxA(0, msg, "error", MB_ICONERROR | MB_SYSTEMMODAL); MessageBoxA(0, msg, "error", MB_ICONERROR | MB_SYSTEMMODAL);
} }
else else

View File

@ -83,10 +83,10 @@ BEGIN
BEGIN BEGIN
BLOCK "040904b0" BLOCK "040904b0"
BEGIN BEGIN
VALUE "FileDescription", "x64_dbg" VALUE "FileDescription", "x64dbg"
VALUE "FileVersion", "0.0.2.5" VALUE "FileVersion", "0.0.2.5"
VALUE "LegalCopyright", "x64dbg.com" VALUE "LegalCopyright", "x64dbg.com"
VALUE "ProductName", "x64_dbg" VALUE "ProductName", "x64dbg"
VALUE "ProductVersion", "0.0.2.5" VALUE "ProductVersion", "0.0.2.5"
END END
END END

View File

@ -60,7 +60,7 @@ CommandHelpView::CommandHelpView(QWidget* parent) : QWidget(parent), ui(new Ui::
//fill with example data //fill with example data
mModuleList->setRowCount(2); mModuleList->setRowCount(2);
mModuleList->setCellContent(0, 0, "x64_dbg"); mModuleList->setCellContent(0, 0, "x64dbg");
mModuleList->setCellContent(1, 0, "testplugin"); mModuleList->setCellContent(1, 0, "testplugin");
mModuleList->setSingleSelection(0); mModuleList->setSingleSelection(0);
@ -75,7 +75,7 @@ void CommandHelpView::moduleSelectionChanged(int index)
{ {
mSearchListView->mList->setRowCount(0); mSearchListView->mList->setRowCount(0);
if(index == 0) //x64_dbg if(index == 0) //x64dbg
{ {
mCurrentMode = 0; mCurrentMode = 0;
mSearchListView->mList->setRowCount(3); mSearchListView->mList->setRowCount(3);
@ -101,7 +101,7 @@ void CommandHelpView::moduleSelectionChanged(int index)
void CommandHelpView::symbolSelectionChanged(int index) void CommandHelpView::symbolSelectionChanged(int index)
{ {
QString info = ""; QString info = "";
if(mCurrentMode == 0) //x64_dbg if(mCurrentMode == 0) //x64dbg
{ {
switch(index) switch(index)
{ {

View File

@ -36,9 +36,9 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
this->showMaximized(); this->showMaximized();
#ifdef _WIN64 #ifdef _WIN64
mWindowMainTitle = "x64_dbg"; mWindowMainTitle = "x64dbg";
#else #else
mWindowMainTitle = "x32_dbg"; mWindowMainTitle = "x32dbg";
#endif #endif
//Set window title //Set window title
@ -498,9 +498,9 @@ void MainWindow::displayScriptWidget()
void MainWindow::displayAboutWidget() void MainWindow::displayAboutWidget()
{ {
#ifdef _WIN64 #ifdef _WIN64
QString title = "About x64_dbg"; QString title = "About x64dbg";
#else #else
QString title = "About x32_dbg"; QString title = "About x32dbg";
#endif #endif
title += QString().sprintf(" v%d", BridgeGetDbgVersion()); title += QString().sprintf(" v%d", BridgeGetDbgVersion());
QMessageBox msg(QMessageBox::Information, title, "Website:\nhttp://x64dbg.com\n\nAttribution:\nIcons8 (http://icons8.com)\nYusuke Kamiyamane (http://p.yusukekamiyamane.com)\n\nCompiled on:\n"__DATE__", "__TIME__); QMessageBox msg(QMessageBox::Information, title, "Website:\nhttp://x64dbg.com\n\nAttribution:\nIcons8 (http://icons8.com)\nYusuke Kamiyamane (http://p.yusukekamiyamane.com)\n\nCompiled on:\n"__DATE__", "__TIME__);
@ -985,7 +985,7 @@ void MainWindow::displayCallstack()
void MainWindow::donate() void MainWindow::donate()
{ {
QMessageBox msg(QMessageBox::Information, "Donate", "All the money will go to x64_dbg development."); QMessageBox msg(QMessageBox::Information, "Donate", "All the money will go to x64dbg development.");
msg.setWindowIcon(QIcon(":/icons/images/donate.png")); msg.setWindowIcon(QIcon(":/icons/images/donate.png"));
msg.setParent(this, Qt::Dialog); msg.setParent(this, Qt::Dialog);
msg.setWindowFlags(msg.windowFlags() & (~Qt::WindowContextHelpButtonHint)); msg.setWindowFlags(msg.windowFlags() & (~Qt::WindowContextHelpButtonHint));

View File

@ -14,7 +14,7 @@
<enum>Qt::NoContextMenu</enum> <enum>Qt::NoContextMenu</enum>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>x64_dbg</string> <string>x64dbg</string>
</property> </property>
<widget class="QWidget" name="centralWidget"/> <widget class="QWidget" name="centralWidget"/>
<widget class="QMenuBar" name="menuBar"> <widget class="QMenuBar" name="menuBar">

View File

@ -409,7 +409,7 @@
<item> <item>
<widget class="QCheckBox" name="chkSetJIT"> <widget class="QCheckBox" name="chkSetJIT">
<property name="text"> <property name="text">
<string>Set x64_dbg as Just In Time Debugger</string> <string>Set x64dbg as Just In Time Debugger</string>
</property> </property>
</widget> </widget>
</item> </item>

View File

@ -45,9 +45,9 @@ void UpdateChecker::finishedSlot(QNetworkReply* reply)
if(version > dbgVersion) if(version > dbgVersion)
info = QString().sprintf("New version v%d available!\nDownload at http://x64dbg.com\n\nYou are now on version v%d", version, dbgVersion); info = QString().sprintf("New version v%d available!\nDownload at http://x64dbg.com\n\nYou are now on version v%d", version, dbgVersion);
else if(version < dbgVersion) else if(version < dbgVersion)
info = QString().sprintf("You have a development version (v%d) of x64_dbg!", dbgVersion); info = QString().sprintf("You have a development version (v%d) of x64dbg!", dbgVersion);
else else
info = QString().sprintf("You have the latest version (%d) of x64_dbg!", version); info = QString().sprintf("You have the latest version (%d) of x64dbg!", version);
QMessageBox msg(QMessageBox::Information, "Information", info); QMessageBox msg(QMessageBox::Information, "Information", info);
msg.setWindowIcon(QIcon(":/icons/images/information.png")); msg.setWindowIcon(QIcon(":/icons/images/information.png"));
msg.setParent(mParent, Qt::Dialog); msg.setParent(mParent, Qt::Dialog);

View File

@ -152,7 +152,7 @@ static bool BrowseFileOpen(HWND owner, const wchar_t* filter, const wchar_t* def
@brief A macro that defines shellext executable key. @brief A macro that defines shellext executable key.
*/ */
#define SHELLEXT_EXE_KEY L"exefile\\shell\\Debug with x64_dbg\\Command" #define SHELLEXT_EXE_KEY L"exefile\\shell\\Debug with x64dbg\\Command"
/** /**
@def SHELLEXT_DLL_KEY @def SHELLEXT_DLL_KEY
@ -160,7 +160,7 @@ static bool BrowseFileOpen(HWND owner, const wchar_t* filter, const wchar_t* def
@brief A macro that defines shellext DLL key. @brief A macro that defines shellext DLL key.
*/ */
#define SHELLEXT_DLL_KEY L"dllfile\\shell\\Debug with x64_dbg\\Command" #define SHELLEXT_DLL_KEY L"dllfile\\shell\\Debug with x64dbg\\Command"
/** /**
@fn static void RegisterShellExtension(const wchar_t* key, const wchar_t* command) @fn static void RegisterShellExtension(const wchar_t* key, const wchar_t* command)
@ -297,13 +297,13 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
//Load settings //Load settings
bool bDoneSomething = false; bool bDoneSomething = false;
wchar_t sz32Path[MAX_PATH] = L""; wchar_t sz32Path[MAX_PATH] = L"";
if(!GetPrivateProfileStringW(L"Launcher", L"x32_dbg", L"", sz32Path, MAX_PATH, szIniPath)) if(!GetPrivateProfileStringW(L"Launcher", L"x32dbg", L"", sz32Path, MAX_PATH, szIniPath))
{ {
wcscpy_s(sz32Path, szCurrentDir); wcscpy_s(sz32Path, szCurrentDir);
PathAppendW(sz32Path, L"x32\\x32_dbg.exe"); PathAppendW(sz32Path, L"x32\\x32_dbg.exe");
if(FileExists(sz32Path)) if(FileExists(sz32Path))
{ {
WritePrivateProfileStringW(L"Launcher", L"x32_dbg", sz32Path, szIniPath); WritePrivateProfileStringW(L"Launcher", L"x32dbg", sz32Path, szIniPath);
bDoneSomething = true; bDoneSomething = true;
} }
} }
@ -315,13 +315,13 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
if(len) if(len)
sz32Dir[len] = L'\0'; sz32Dir[len] = L'\0';
wchar_t sz64Path[MAX_PATH] = L""; wchar_t sz64Path[MAX_PATH] = L"";
if(!GetPrivateProfileStringW(L"Launcher", L"x64_dbg", L"", sz64Path, MAX_PATH, szIniPath)) if(!GetPrivateProfileStringW(L"Launcher", L"x64dbg", L"", sz64Path, MAX_PATH, szIniPath))
{ {
wcscpy_s(sz64Path, szCurrentDir); wcscpy_s(sz64Path, szCurrentDir);
PathAppendW(sz64Path, L"x64\\x64_dbg.exe"); PathAppendW(sz64Path, L"x64\\x64_dbg.exe");
if(FileExists(sz64Path)) if(FileExists(sz64Path))
{ {
WritePrivateProfileStringW(L"Launcher", L"x64_dbg", sz64Path, szIniPath); WritePrivateProfileStringW(L"Launcher", L"x64dbg", sz64Path, szIniPath);
bDoneSomething = true; bDoneSomething = true;
} }
} }
@ -340,12 +340,12 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
{ {
if(!FileExists(sz32Path) && BrowseFileOpen(0, L"x32_dbg.exe\0x32_dbg.exe\0\0", 0, sz32Path, MAX_PATH, szCurrentDir)) if(!FileExists(sz32Path) && BrowseFileOpen(0, L"x32_dbg.exe\0x32_dbg.exe\0\0", 0, sz32Path, MAX_PATH, szCurrentDir))
{ {
WritePrivateProfileStringW(L"Launcher", L"x32_dbg", sz32Path, szIniPath); WritePrivateProfileStringW(L"Launcher", L"x32dbg", sz32Path, szIniPath);
bDoneSomething = true; bDoneSomething = true;
} }
if(!FileExists(sz64Path) && BrowseFileOpen(0, L"x64_dbg.exe\0x64_dbg.exe\0\0", 0, sz64Path, MAX_PATH, szCurrentDir)) if(!FileExists(sz64Path) && BrowseFileOpen(0, L"x64_dbg.exe\0x64_dbg.exe\0\0", 0, sz64Path, MAX_PATH, szCurrentDir))
{ {
WritePrivateProfileStringW(L"Launcher", L"x64_dbg", sz64Path, szIniPath); WritePrivateProfileStringW(L"Launcher", L"x64dbg", sz64Path, szIniPath);
bDoneSomething = true; bDoneSomething = true;
} }
if(MessageBoxW(0, L"Do you want to register a shell extension?", L"Question", MB_YESNO | MB_ICONQUESTION) == IDYES) if(MessageBoxW(0, L"Do you want to register a shell extension?", L"Question", MB_YESNO | MB_ICONQUESTION) == IDYES)
@ -374,14 +374,14 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
if(sz32Path[0]) if(sz32Path[0])
ShellExecuteW(0, L"open", sz32Path, cmdLine.c_str(), sz32Dir, SW_SHOWNORMAL); ShellExecuteW(0, L"open", sz32Path, cmdLine.c_str(), sz32Dir, SW_SHOWNORMAL);
else else
MessageBoxW(0, L"Path to x32_dbg not specified in launcher configuration...", L"Error!", MB_ICONERROR); MessageBoxW(0, L"Path to x32dbg not specified in launcher configuration...", L"Error!", MB_ICONERROR);
break; break;
case x64: case x64:
if(sz64Path[0]) if(sz64Path[0])
ShellExecuteW(0, L"open", sz64Path, cmdLine.c_str(), sz64Dir, SW_SHOWNORMAL); ShellExecuteW(0, L"open", sz64Path, cmdLine.c_str(), sz64Dir, SW_SHOWNORMAL);
else else
MessageBoxW(0, L"Path to x64_dbg not specified in launcher configuration...", L"Error!", MB_ICONERROR); MessageBoxW(0, L"Path to x64dbg not specified in launcher configuration...", L"Error!", MB_ICONERROR);
break; break;
case invalid: case invalid: