"x64_dbg"->"x64dbg" + added Nukem
This commit is contained in:
parent
7e7f475995
commit
6ade97b1cd
4
Doxyfile
4
Doxyfile
|
@ -32,7 +32,7 @@ DOXYFILE_ENCODING = UTF-8
|
|||
# title of most generated pages and in a few other places.
|
||||
# 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
|
||||
# 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.
|
||||
# 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
|
||||
# including file name) of the HTML help compiler ( hhc.exe). If non-empty
|
||||
|
|
4
LICENSE
4
LICENSE
|
@ -156,8 +156,8 @@ same work.
|
|||
2. Treatment of plugins
|
||||
|
||||
This license does not affect plugins, i.e., dynamically linked
|
||||
libraries, that use the provided plugin interface mechanism of x64_dbg
|
||||
for contibuting additional features to the x64_dbg project and can only
|
||||
libraries, that use the provided plugin interface mechanism of x64dbg
|
||||
for contibuting additional features to the x64dbg project and can only
|
||||
be run from x64dbg. In fact you are allowed to create and share
|
||||
(non-)commercial, non-standalone closed-source plugins for x64dbg under
|
||||
your own license.
|
||||
|
|
15
README.md
15
README.md
|
@ -1,18 +1,18 @@
|
|||
# x64_dbg
|
||||
# x64dbg
|
||||
|
||||
## 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
|
||||
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
|
||||
Releases of *x64_dbg* can be found [here](http://download.x64dbg.com).
|
||||
Snapshots of *x64_dbg* can be found [here](http://snapshots.x64dbg.com).
|
||||
Releases of *x64dbg* can be found [here](http://download.x64dbg.com).
|
||||
Snapshots of *x64dbg* can be found [here](http://snapshots.x64dbg.com).
|
||||
Jenkins build server can be found [here](http://jenkins.x64dbg.com).
|
||||
|
||||
## Overview
|
||||
*x64_dbg* is an open-source x32/x64 debugger for Windows.
|
||||
*x64dbg* is an open-source x32/x64 debugger for Windows.
|
||||
|
||||
## Features
|
||||
- Open-source
|
||||
|
@ -41,7 +41,7 @@ Jenkins build server can be found [here](http://jenkins.x64dbg.com).
|
|||
- Memory breakpoints sometimes fail (TitanEngine bug)
|
||||
|
||||
## 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
|
||||
- Debugger core by [TitanEngine Community Edition](https://bitbucket.org/mrexodia/titanengine-update)
|
||||
|
@ -71,3 +71,4 @@ Jenkins build server can be found [here](http://jenkins.x64dbg.com).
|
|||
- Sigma
|
||||
- [tr4ceflow](http://blog.tr4ceflow.com)
|
||||
- [Dreg](http://www.fr33project.org)
|
||||
- Nukem
|
|
@ -20,7 +20,7 @@ breakpoint on DLL load/unload.</P>
|
|||
<P><U>arguments</U><BR> arg1: DLL Name to break
|
||||
on.</P>
|
||||
<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
|
||||
breakpoint will be removed after it has been hit.</P>
|
||||
<P><U>result<BR></U>This command does not set any result
|
||||
|
|
|
@ -16,7 +16,7 @@ html,body {
|
|||
|
||||
<body>
|
||||
<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
|
||||
plugins) or *.dp64 (x64
|
||||
plugins) to the 'plugins' directory.</P></body>
|
||||
|
|
|
@ -16,6 +16,6 @@ html,body {
|
|||
|
||||
<body>
|
||||
<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>
|
||||
</html>
|
|
@ -16,7 +16,7 @@ html,body {
|
|||
|
||||
<body>
|
||||
<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>
|
||||
<LI>
|
||||
<DIV>Debugger core by <A
|
||||
|
@ -77,4 +77,7 @@ Sigma </DIV>
|
|||
<LI>
|
||||
<DIV><A href="http://www.fr33project.org"
|
||||
target=_blank>Dreg</A>
|
||||
</DIV>
|
||||
<LI>
|
||||
<DIV>Nukem
|
||||
</DIV></LI></UL></body></HTML>
|
||||
|
|
|
@ -17,7 +17,7 @@ html,body {
|
|||
|
||||
<body>
|
||||
<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
|
||||
export. This export must be called <U>pluginit</U>. See the PLUG_INITSTRUCT and
|
||||
the plugin headers for
|
||||
|
|
|
@ -17,7 +17,7 @@ html,body {
|
|||
<body>
|
||||
<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
|
||||
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
|
||||
user runs the debuggee using the 'run' command</U>
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ window.onafterprint = d_onafterprint;
|
|||
<p><FONT face=Courier>($content$)</FONT></p>
|
||||
<hr>
|
||||
<font face="Courier" color="#808080" size="1"><A
|
||||
href="http://x64dbg.com" target=_blank>x64_dbg</A>, GPLv3</font> </div>
|
||||
href="http://x64dbg.com" target=_blank>x64dbg</A>, GPLv3</font> </div>
|
||||
|
||||
</body>
|
||||
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
#include <new>
|
||||
|
||||
/**
|
||||
\brief x64_dbg library instance.
|
||||
\brief x64dbg library instance.
|
||||
*/
|
||||
HINSTANCE hInst;
|
||||
|
||||
|
@ -24,7 +24,7 @@ char dbbasepath[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;
|
||||
|
||||
|
@ -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.
|
||||
*/
|
||||
bool IsWow64()
|
||||
{
|
||||
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);
|
||||
return !!bIsWow64Process;
|
||||
}
|
||||
|
|
|
@ -1116,9 +1116,9 @@ DWORD WINAPI threadDebugLoop(void* lpParameter)
|
|||
if((mewow64 and !wow64) or (!mewow64 and wow64))
|
||||
{
|
||||
#ifdef _WIN64
|
||||
dputs("Use x32_dbg to debug this process!");
|
||||
dputs("Use x32dbg to debug this process!");
|
||||
#else
|
||||
dputs("Use x64_dbg to debug this process!");
|
||||
dputs("Use x64dbg to debug this process!");
|
||||
#endif // _WIN64
|
||||
unlock(WAITID_STOP);
|
||||
return 0;
|
||||
|
|
|
@ -68,10 +68,10 @@ CMDRESULT cbDebugInit(int argc, char* argv[])
|
|||
return STATUS_ERROR;
|
||||
#ifdef _WIN64
|
||||
case x32:
|
||||
dputs("Use x32_dbg to debug this file!");
|
||||
dputs("Use x32dbg to debug this file!");
|
||||
#else //x86
|
||||
case x64:
|
||||
dputs("Use x64_dbg to debug this file!");
|
||||
dputs("Use x64dbg to debug this file!");
|
||||
#endif //_WIN64
|
||||
return STATUS_ERROR;
|
||||
default:
|
||||
|
@ -924,9 +924,9 @@ CMDRESULT cbDebugAttach(int argc, char* argv[])
|
|||
if((mewow64 and !wow64) or (!mewow64 and wow64))
|
||||
{
|
||||
#ifdef _WIN64
|
||||
dputs("Use x32_dbg to debug this process!");
|
||||
dputs("Use x32dbg to debug this process!");
|
||||
#else
|
||||
dputs("Use x64_dbg to debug this process!");
|
||||
dputs("Use x64dbg to debug this process!");
|
||||
#endif // _WIN64
|
||||
return STATUS_ERROR;
|
||||
}
|
||||
|
|
|
@ -324,7 +324,7 @@ extern "C" DLL_EXPORT void _dbg_dbgexitsignal()
|
|||
if(memleaks())
|
||||
{
|
||||
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);
|
||||
}
|
||||
else
|
||||
|
|
|
@ -83,10 +83,10 @@ BEGIN
|
|||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "FileDescription", "x64_dbg"
|
||||
VALUE "FileDescription", "x64dbg"
|
||||
VALUE "FileVersion", "0.0.2.5"
|
||||
VALUE "LegalCopyright", "x64dbg.com"
|
||||
VALUE "ProductName", "x64_dbg"
|
||||
VALUE "ProductName", "x64dbg"
|
||||
VALUE "ProductVersion", "0.0.2.5"
|
||||
END
|
||||
END
|
||||
|
|
|
@ -60,7 +60,7 @@ CommandHelpView::CommandHelpView(QWidget* parent) : QWidget(parent), ui(new Ui::
|
|||
|
||||
//fill with example data
|
||||
mModuleList->setRowCount(2);
|
||||
mModuleList->setCellContent(0, 0, "x64_dbg");
|
||||
mModuleList->setCellContent(0, 0, "x64dbg");
|
||||
mModuleList->setCellContent(1, 0, "testplugin");
|
||||
|
||||
mModuleList->setSingleSelection(0);
|
||||
|
@ -75,7 +75,7 @@ void CommandHelpView::moduleSelectionChanged(int index)
|
|||
{
|
||||
mSearchListView->mList->setRowCount(0);
|
||||
|
||||
if(index == 0) //x64_dbg
|
||||
if(index == 0) //x64dbg
|
||||
{
|
||||
mCurrentMode = 0;
|
||||
mSearchListView->mList->setRowCount(3);
|
||||
|
@ -101,7 +101,7 @@ void CommandHelpView::moduleSelectionChanged(int index)
|
|||
void CommandHelpView::symbolSelectionChanged(int index)
|
||||
{
|
||||
QString info = "";
|
||||
if(mCurrentMode == 0) //x64_dbg
|
||||
if(mCurrentMode == 0) //x64dbg
|
||||
{
|
||||
switch(index)
|
||||
{
|
||||
|
|
|
@ -36,9 +36,9 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
|
|||
this->showMaximized();
|
||||
|
||||
#ifdef _WIN64
|
||||
mWindowMainTitle = "x64_dbg";
|
||||
mWindowMainTitle = "x64dbg";
|
||||
#else
|
||||
mWindowMainTitle = "x32_dbg";
|
||||
mWindowMainTitle = "x32dbg";
|
||||
#endif
|
||||
|
||||
//Set window title
|
||||
|
@ -498,9 +498,9 @@ void MainWindow::displayScriptWidget()
|
|||
void MainWindow::displayAboutWidget()
|
||||
{
|
||||
#ifdef _WIN64
|
||||
QString title = "About x64_dbg";
|
||||
QString title = "About x64dbg";
|
||||
#else
|
||||
QString title = "About x32_dbg";
|
||||
QString title = "About x32dbg";
|
||||
#endif
|
||||
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__);
|
||||
|
@ -985,7 +985,7 @@ void MainWindow::displayCallstack()
|
|||
|
||||
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.setParent(this, Qt::Dialog);
|
||||
msg.setWindowFlags(msg.windowFlags() & (~Qt::WindowContextHelpButtonHint));
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<enum>Qt::NoContextMenu</enum>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>x64_dbg</string>
|
||||
<string>x64dbg</string>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralWidget"/>
|
||||
<widget class="QMenuBar" name="menuBar">
|
||||
|
|
|
@ -409,7 +409,7 @@
|
|||
<item>
|
||||
<widget class="QCheckBox" name="chkSetJIT">
|
||||
<property name="text">
|
||||
<string>Set x64_dbg as Just In Time Debugger</string>
|
||||
<string>Set x64dbg as Just In Time Debugger</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
@ -45,9 +45,9 @@ void UpdateChecker::finishedSlot(QNetworkReply* reply)
|
|||
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);
|
||||
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
|
||||
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);
|
||||
msg.setWindowIcon(QIcon(":/icons/images/information.png"));
|
||||
msg.setParent(mParent, Qt::Dialog);
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
||||
#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
|
||||
|
@ -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.
|
||||
*/
|
||||
|
||||
#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)
|
||||
|
@ -297,13 +297,13 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
|
|||
//Load settings
|
||||
bool bDoneSomething = false;
|
||||
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);
|
||||
PathAppendW(sz32Path, L"x32\\x32_dbg.exe");
|
||||
if(FileExists(sz32Path))
|
||||
{
|
||||
WritePrivateProfileStringW(L"Launcher", L"x32_dbg", sz32Path, szIniPath);
|
||||
WritePrivateProfileStringW(L"Launcher", L"x32dbg", sz32Path, szIniPath);
|
||||
bDoneSomething = true;
|
||||
}
|
||||
}
|
||||
|
@ -315,13 +315,13 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
|
|||
if(len)
|
||||
sz32Dir[len] = L'\0';
|
||||
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);
|
||||
PathAppendW(sz64Path, L"x64\\x64_dbg.exe");
|
||||
if(FileExists(sz64Path))
|
||||
{
|
||||
WritePrivateProfileStringW(L"Launcher", L"x64_dbg", sz64Path, szIniPath);
|
||||
WritePrivateProfileStringW(L"Launcher", L"x64dbg", sz64Path, szIniPath);
|
||||
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))
|
||||
{
|
||||
WritePrivateProfileStringW(L"Launcher", L"x32_dbg", sz32Path, szIniPath);
|
||||
WritePrivateProfileStringW(L"Launcher", L"x32dbg", sz32Path, szIniPath);
|
||||
bDoneSomething = true;
|
||||
}
|
||||
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;
|
||||
}
|
||||
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])
|
||||
ShellExecuteW(0, L"open", sz32Path, cmdLine.c_str(), sz32Dir, SW_SHOWNORMAL);
|
||||
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;
|
||||
|
||||
case x64:
|
||||
if(sz64Path[0])
|
||||
ShellExecuteW(0, L"open", sz64Path, cmdLine.c_str(), sz64Dir, SW_SHOWNORMAL);
|
||||
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;
|
||||
|
||||
case invalid:
|
||||
|
|
Loading…
Reference in New Issue