feat: Initialize Ryujin GUI with basic layout and functionality
- Set up base GUI project structure using wxWidgets. - Implement main window with custom styles and fixed dimensions. - Add input fields for EXE, PDB, and output paths. - Include obfuscation options with styled checkboxes. - Add procedure list with add/remove functionality. - Implement progress bar and "Run Obfuscator" button. - Bind events for file selection, procedure management, and obfuscation run.
This commit is contained in:
@@ -7,6 +7,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RyujinConsole", "RyujinCons
|
|||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RyujinCore", "..\RyujinCore\RyujinCore.vcxproj", "{AEFF626B-1317-4C8F-94B3-B3D405AE65B2}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RyujinCore", "..\RyujinCore\RyujinCore.vcxproj", "{AEFF626B-1317-4C8F-94B3-B3D405AE65B2}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "RyujinGUI", "RyujinGUI\RyujinGUI.vcxproj", "{04712D9F-1C08-4605-B938-1EC74F2B0ACF}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|x64 = Debug|x64
|
Debug|x64 = Debug|x64
|
||||||
@@ -31,6 +33,14 @@ Global
|
|||||||
{AEFF626B-1317-4C8F-94B3-B3D405AE65B2}.Release|x64.Build.0 = Release|x64
|
{AEFF626B-1317-4C8F-94B3-B3D405AE65B2}.Release|x64.Build.0 = Release|x64
|
||||||
{AEFF626B-1317-4C8F-94B3-B3D405AE65B2}.Release|x86.ActiveCfg = Release|Win32
|
{AEFF626B-1317-4C8F-94B3-B3D405AE65B2}.Release|x86.ActiveCfg = Release|Win32
|
||||||
{AEFF626B-1317-4C8F-94B3-B3D405AE65B2}.Release|x86.Build.0 = Release|Win32
|
{AEFF626B-1317-4C8F-94B3-B3D405AE65B2}.Release|x86.Build.0 = Release|Win32
|
||||||
|
{04712D9F-1C08-4605-B938-1EC74F2B0ACF}.Debug|x64.ActiveCfg = Debug|x64
|
||||||
|
{04712D9F-1C08-4605-B938-1EC74F2B0ACF}.Debug|x64.Build.0 = Debug|x64
|
||||||
|
{04712D9F-1C08-4605-B938-1EC74F2B0ACF}.Debug|x86.ActiveCfg = Debug|Win32
|
||||||
|
{04712D9F-1C08-4605-B938-1EC74F2B0ACF}.Debug|x86.Build.0 = Debug|Win32
|
||||||
|
{04712D9F-1C08-4605-B938-1EC74F2B0ACF}.Release|x64.ActiveCfg = Release|x64
|
||||||
|
{04712D9F-1C08-4605-B938-1EC74F2B0ACF}.Release|x64.Build.0 = Release|x64
|
||||||
|
{04712D9F-1C08-4605-B938-1EC74F2B0ACF}.Release|x86.ActiveCfg = Release|Win32
|
||||||
|
{04712D9F-1C08-4605-B938-1EC74F2B0ACF}.Release|x86.Build.0 = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|||||||
632
RyujinConsole/RyujinGUI/RyujinApp.cc
Normal file
632
RyujinConsole/RyujinGUI/RyujinApp.cc
Normal file
@@ -0,0 +1,632 @@
|
|||||||
|
#include "RyujinApp.hh"
|
||||||
|
|
||||||
|
bool RyujinApp::OnInit() {
|
||||||
|
|
||||||
|
auto* frame = new wxFrame(
|
||||||
|
|
||||||
|
nullptr,
|
||||||
|
wxID_ANY,
|
||||||
|
"Ryujin Obfuscator",
|
||||||
|
wxDefaultPosition,
|
||||||
|
wxSize(
|
||||||
|
|
||||||
|
850,
|
||||||
|
580
|
||||||
|
|
||||||
|
),
|
||||||
|
wxDEFAULT_FRAME_STYLE & ~(wxRESIZE_BORDER | wxMAXIMIZE_BOX)
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
frame->SetBackgroundColour(
|
||||||
|
wxColour(
|
||||||
|
|
||||||
|
25,
|
||||||
|
25,
|
||||||
|
25
|
||||||
|
|
||||||
|
));
|
||||||
|
|
||||||
|
frame->SetFont(
|
||||||
|
wxFont(
|
||||||
|
|
||||||
|
10,
|
||||||
|
wxFONTFAMILY_SWISS,
|
||||||
|
wxFONTSTYLE_NORMAL,
|
||||||
|
wxFONTWEIGHT_NORMAL
|
||||||
|
|
||||||
|
));
|
||||||
|
|
||||||
|
auto* topSizer = new wxBoxSizer(
|
||||||
|
|
||||||
|
wxVERTICAL
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
auto* title = new wxStaticText(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
wxID_ANY,
|
||||||
|
"Ryujin Obfuscator"
|
||||||
|
|
||||||
|
);
|
||||||
|
title->SetFont(
|
||||||
|
wxFont(
|
||||||
|
|
||||||
|
18,
|
||||||
|
wxFONTFAMILY_SWISS,
|
||||||
|
wxFONTSTYLE_NORMAL,
|
||||||
|
wxFONTWEIGHT_BOLD
|
||||||
|
|
||||||
|
));
|
||||||
|
title->SetForegroundColour(
|
||||||
|
|
||||||
|
*wxWHITE
|
||||||
|
|
||||||
|
);
|
||||||
|
topSizer->Add(
|
||||||
|
|
||||||
|
title,
|
||||||
|
0,
|
||||||
|
wxALIGN_CENTER | wxTOP,
|
||||||
|
20
|
||||||
|
|
||||||
|
);
|
||||||
|
topSizer->Add(
|
||||||
|
|
||||||
|
new wxStaticLine(
|
||||||
|
|
||||||
|
frame
|
||||||
|
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
wxEXPAND | wxLEFT | wxRIGHT | wxTOP,
|
||||||
|
15
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
auto* pathBox = new wxStaticBoxSizer(
|
||||||
|
|
||||||
|
wxVERTICAL,
|
||||||
|
frame,
|
||||||
|
"Paths"
|
||||||
|
|
||||||
|
);
|
||||||
|
pathBox->GetStaticBox()->SetForegroundColour(
|
||||||
|
|
||||||
|
*wxWHITE
|
||||||
|
|
||||||
|
);
|
||||||
|
m_input = DrawnPathRow(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
pathBox,
|
||||||
|
"Input EXE:",
|
||||||
|
wxID_HIGHEST + 1
|
||||||
|
|
||||||
|
);
|
||||||
|
m_pdb = DrawnPathRow(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
pathBox,
|
||||||
|
"PDB File:",
|
||||||
|
wxID_HIGHEST + 2
|
||||||
|
|
||||||
|
);
|
||||||
|
m_output = DrawnPathRow(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
pathBox,
|
||||||
|
"Output EXE:",
|
||||||
|
wxID_HIGHEST + 3
|
||||||
|
|
||||||
|
);
|
||||||
|
topSizer->Add(
|
||||||
|
|
||||||
|
pathBox,
|
||||||
|
0,
|
||||||
|
wxEXPAND | wxALL,
|
||||||
|
15
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
auto* optionsBox = new wxStaticBoxSizer(
|
||||||
|
|
||||||
|
wxVERTICAL,
|
||||||
|
frame,
|
||||||
|
"Obfuscation Options"
|
||||||
|
|
||||||
|
);
|
||||||
|
optionsBox->GetStaticBox()->SetForegroundColour(
|
||||||
|
|
||||||
|
*wxWHITE
|
||||||
|
|
||||||
|
);
|
||||||
|
auto* optionsSizer = new wxGridSizer(
|
||||||
|
|
||||||
|
2,
|
||||||
|
3,
|
||||||
|
10,
|
||||||
|
10
|
||||||
|
|
||||||
|
);
|
||||||
|
m_virtualize = DrawnStyledCheckbox(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
"Virtualize"
|
||||||
|
|
||||||
|
);
|
||||||
|
m_junk = DrawnStyledCheckbox(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
"Junk Code"
|
||||||
|
|
||||||
|
);
|
||||||
|
m_encrypt = DrawnStyledCheckbox(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
"Encrypt"
|
||||||
|
|
||||||
|
);
|
||||||
|
m_randomSection = DrawnStyledCheckbox(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
"Random Section"
|
||||||
|
|
||||||
|
);
|
||||||
|
m_obfuscateIat = DrawnStyledCheckbox(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
"Obfuscate IAT"
|
||||||
|
|
||||||
|
);
|
||||||
|
m_ignoreOriginalCodeRemove = DrawnStyledCheckbox(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
"Ignore Original Code Removal"
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
optionsSizer->Add(
|
||||||
|
|
||||||
|
m_virtualize
|
||||||
|
|
||||||
|
);
|
||||||
|
optionsSizer->Add(
|
||||||
|
|
||||||
|
m_junk
|
||||||
|
|
||||||
|
);
|
||||||
|
optionsSizer->Add(
|
||||||
|
|
||||||
|
m_encrypt
|
||||||
|
|
||||||
|
);
|
||||||
|
optionsSizer->Add(
|
||||||
|
|
||||||
|
m_randomSection
|
||||||
|
|
||||||
|
);
|
||||||
|
optionsSizer->Add(
|
||||||
|
|
||||||
|
m_obfuscateIat
|
||||||
|
|
||||||
|
);
|
||||||
|
optionsSizer->Add(
|
||||||
|
|
||||||
|
m_ignoreOriginalCodeRemove
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
optionsBox->Add(
|
||||||
|
|
||||||
|
optionsSizer,
|
||||||
|
0,
|
||||||
|
wxEXPAND | wxALL,
|
||||||
|
10
|
||||||
|
|
||||||
|
);
|
||||||
|
topSizer->Add(
|
||||||
|
|
||||||
|
optionsBox,
|
||||||
|
0,
|
||||||
|
wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM,
|
||||||
|
15
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
auto* procBox = new wxStaticBoxSizer(
|
||||||
|
|
||||||
|
wxVERTICAL,
|
||||||
|
frame,
|
||||||
|
"Procedures to Obfuscate"
|
||||||
|
|
||||||
|
);
|
||||||
|
procBox->GetStaticBox()->SetForegroundColour(
|
||||||
|
|
||||||
|
*wxWHITE
|
||||||
|
|
||||||
|
);
|
||||||
|
m_procList = new wxListBox(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
wxID_ANY,
|
||||||
|
wxDefaultPosition,
|
||||||
|
wxDefaultSize,
|
||||||
|
0,
|
||||||
|
nullptr,
|
||||||
|
wxBORDER_NONE
|
||||||
|
|
||||||
|
);
|
||||||
|
m_procList->SetBackgroundColour(
|
||||||
|
wxColour(
|
||||||
|
|
||||||
|
40,
|
||||||
|
40,
|
||||||
|
40
|
||||||
|
|
||||||
|
));
|
||||||
|
m_procList->SetForegroundColour(
|
||||||
|
|
||||||
|
*wxWHITE
|
||||||
|
|
||||||
|
);
|
||||||
|
procBox->Add(
|
||||||
|
|
||||||
|
m_procList,
|
||||||
|
1,
|
||||||
|
wxEXPAND | wxBOTTOM,
|
||||||
|
5
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
auto* procBtnRow = new wxBoxSizer(
|
||||||
|
|
||||||
|
wxHORIZONTAL
|
||||||
|
|
||||||
|
);
|
||||||
|
procBtnRow->Add(
|
||||||
|
DrawnRyujinButton(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
"Add",
|
||||||
|
wxID_HIGHEST + 4
|
||||||
|
|
||||||
|
),
|
||||||
|
0,
|
||||||
|
wxRIGHT,
|
||||||
|
10
|
||||||
|
|
||||||
|
);
|
||||||
|
procBtnRow->Add(
|
||||||
|
DrawnRyujinButton(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
"Remove",
|
||||||
|
wxID_HIGHEST + 5
|
||||||
|
|
||||||
|
));
|
||||||
|
procBox->Add(
|
||||||
|
|
||||||
|
procBtnRow,
|
||||||
|
0,
|
||||||
|
wxALIGN_RIGHT
|
||||||
|
|
||||||
|
);
|
||||||
|
topSizer->Add(
|
||||||
|
|
||||||
|
procBox,
|
||||||
|
1,
|
||||||
|
wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM,
|
||||||
|
15
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
m_progress = new wxGauge(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
wxID_ANY,
|
||||||
|
100
|
||||||
|
|
||||||
|
);
|
||||||
|
m_progress->SetMinSize(
|
||||||
|
wxSize(
|
||||||
|
|
||||||
|
-1,
|
||||||
|
14
|
||||||
|
|
||||||
|
));
|
||||||
|
m_progress->SetForegroundColour(
|
||||||
|
wxColour(
|
||||||
|
|
||||||
|
0,
|
||||||
|
150,
|
||||||
|
255
|
||||||
|
|
||||||
|
));
|
||||||
|
m_progress->SetBackgroundColour(
|
||||||
|
wxColour(
|
||||||
|
|
||||||
|
45,
|
||||||
|
45,
|
||||||
|
45
|
||||||
|
|
||||||
|
));
|
||||||
|
|
||||||
|
auto* runBtn = DrawnRyujinButton(
|
||||||
|
|
||||||
|
frame,
|
||||||
|
"Run Obfuscator",
|
||||||
|
wxID_HIGHEST + 6
|
||||||
|
|
||||||
|
);
|
||||||
|
runBtn->SetMinSize(
|
||||||
|
wxSize(
|
||||||
|
|
||||||
|
160,
|
||||||
|
42
|
||||||
|
|
||||||
|
));
|
||||||
|
runBtn->SetFont(
|
||||||
|
wxFont(
|
||||||
|
|
||||||
|
11,
|
||||||
|
wxFONTFAMILY_SWISS,
|
||||||
|
wxFONTSTYLE_NORMAL,
|
||||||
|
wxFONTWEIGHT_BOLD
|
||||||
|
|
||||||
|
));
|
||||||
|
|
||||||
|
auto* runRow = new wxBoxSizer(
|
||||||
|
|
||||||
|
wxHORIZONTAL
|
||||||
|
|
||||||
|
);
|
||||||
|
runRow->Add(
|
||||||
|
|
||||||
|
runBtn,
|
||||||
|
0,
|
||||||
|
wxRIGHT,
|
||||||
|
20
|
||||||
|
|
||||||
|
);
|
||||||
|
runRow->Add(
|
||||||
|
|
||||||
|
m_progress,
|
||||||
|
1,
|
||||||
|
wxALIGN_CENTER_VERTICAL
|
||||||
|
|
||||||
|
);
|
||||||
|
topSizer->Add(
|
||||||
|
|
||||||
|
runRow,
|
||||||
|
0,
|
||||||
|
wxLEFT | wxRIGHT | wxBOTTOM | wxEXPAND,
|
||||||
|
20
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
frame->CreateStatusBar();
|
||||||
|
frame->SetSizerAndFit(
|
||||||
|
|
||||||
|
topSizer
|
||||||
|
|
||||||
|
);
|
||||||
|
frame->Centre();
|
||||||
|
frame->Show();
|
||||||
|
|
||||||
|
BindFileDialogs(
|
||||||
|
|
||||||
|
frame
|
||||||
|
|
||||||
|
);
|
||||||
|
BindListEvents(
|
||||||
|
|
||||||
|
frame
|
||||||
|
|
||||||
|
);
|
||||||
|
BindRunEvent(
|
||||||
|
|
||||||
|
frame
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto RyujinApp::DrawnPathRow(wxWindow* parent, wxBoxSizer* sizer, const wxString& label, int buttonId) -> wxTextCtrl* {
|
||||||
|
|
||||||
|
auto* row = new wxBoxSizer(
|
||||||
|
|
||||||
|
wxHORIZONTAL
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
auto* lbl = new wxStaticText(
|
||||||
|
|
||||||
|
parent,
|
||||||
|
wxID_ANY,
|
||||||
|
label
|
||||||
|
|
||||||
|
);
|
||||||
|
lbl->SetForegroundColour(
|
||||||
|
|
||||||
|
*wxWHITE
|
||||||
|
|
||||||
|
);
|
||||||
|
auto* txt = new wxTextCtrl(
|
||||||
|
|
||||||
|
parent,
|
||||||
|
wxID_ANY,
|
||||||
|
"",
|
||||||
|
wxDefaultPosition,
|
||||||
|
wxSize(
|
||||||
|
|
||||||
|
-1,
|
||||||
|
28
|
||||||
|
|
||||||
|
),
|
||||||
|
wxBORDER_NONE
|
||||||
|
|
||||||
|
);
|
||||||
|
txt->SetBackgroundColour(
|
||||||
|
wxColour(
|
||||||
|
|
||||||
|
40,
|
||||||
|
40,
|
||||||
|
40
|
||||||
|
|
||||||
|
));
|
||||||
|
txt->SetForegroundColour(
|
||||||
|
|
||||||
|
*wxWHITE
|
||||||
|
|
||||||
|
);
|
||||||
|
auto* btn = DrawnRyujinButton(
|
||||||
|
|
||||||
|
parent,
|
||||||
|
"Browse",
|
||||||
|
buttonId
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
row->Add(
|
||||||
|
|
||||||
|
lbl,
|
||||||
|
0,
|
||||||
|
wxALIGN_CENTER_VERTICAL | wxRIGHT,
|
||||||
|
10
|
||||||
|
|
||||||
|
);
|
||||||
|
row->Add(
|
||||||
|
|
||||||
|
txt,
|
||||||
|
1,
|
||||||
|
wxRIGHT,
|
||||||
|
10
|
||||||
|
|
||||||
|
);
|
||||||
|
row->Add(
|
||||||
|
|
||||||
|
btn
|
||||||
|
|
||||||
|
);
|
||||||
|
sizer->Add(
|
||||||
|
|
||||||
|
row,
|
||||||
|
0,
|
||||||
|
wxEXPAND | wxALL,
|
||||||
|
8
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
return txt;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto RyujinApp::DrawnStyledCheckbox(wxWindow* parent, const wxString& label) -> wxCheckBox* {
|
||||||
|
|
||||||
|
auto* box = new wxCheckBox(
|
||||||
|
|
||||||
|
parent,
|
||||||
|
wxID_ANY,
|
||||||
|
label
|
||||||
|
|
||||||
|
);
|
||||||
|
box->SetForegroundColour(
|
||||||
|
|
||||||
|
*wxWHITE
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
return box;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto RyujinApp::DrawnRyujinButton(wxWindow* parent, const wxString& label, int id) -> wxButton* {
|
||||||
|
|
||||||
|
auto* btn = new wxButton(
|
||||||
|
|
||||||
|
parent,
|
||||||
|
id,
|
||||||
|
label,
|
||||||
|
wxDefaultPosition,
|
||||||
|
wxDefaultSize,
|
||||||
|
wxBORDER_NONE
|
||||||
|
|
||||||
|
);
|
||||||
|
btn->SetBackgroundColour(
|
||||||
|
wxColour(
|
||||||
|
|
||||||
|
60,
|
||||||
|
60,
|
||||||
|
60
|
||||||
|
|
||||||
|
));
|
||||||
|
btn->SetForegroundColour(
|
||||||
|
|
||||||
|
*wxWHITE
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
|
return btn;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto RyujinApp::BindFileDialogs(wxFrame* frame) -> void {
|
||||||
|
|
||||||
|
auto bind = [=](int id, wxTextCtrl* target, const wxString& ext, bool save = false) {
|
||||||
|
|
||||||
|
frame->Bind(wxEVT_BUTTON, [=](wxCommandEvent&) {
|
||||||
|
|
||||||
|
wxFileDialog dlg(frame, save ? "Save file" : "Select file", "", "", "*." + ext + "|*." + ext,
|
||||||
|
save ? wxFD_SAVE | wxFD_OVERWRITE_PROMPT : wxFD_OPEN);
|
||||||
|
|
||||||
|
if (dlg.ShowModal() == wxID_OK)
|
||||||
|
target->SetValue(dlg.GetPath());
|
||||||
|
|
||||||
|
}, id);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
bind(wxID_HIGHEST + 1, m_input, "exe");
|
||||||
|
bind(wxID_HIGHEST + 2, m_pdb, "pdb");
|
||||||
|
bind(wxID_HIGHEST + 3, m_output, "exe", true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
auto RyujinApp::BindListEvents(wxFrame* frame) -> void {
|
||||||
|
|
||||||
|
frame->Bind(wxEVT_BUTTON, [=](wxCommandEvent&) {
|
||||||
|
|
||||||
|
wxTextEntryDialog dlg(frame, "Enter comma-separated procedures or a unique procedure name:");
|
||||||
|
if (dlg.ShowModal() == wxID_OK) {
|
||||||
|
|
||||||
|
wxArrayString list = wxSplit(dlg.GetValue(), ',');
|
||||||
|
for (auto& p : list)
|
||||||
|
m_procList->Append(p.Trim());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}, wxID_HIGHEST + 4);
|
||||||
|
|
||||||
|
frame->Bind(wxEVT_BUTTON, [=](wxCommandEvent&) {
|
||||||
|
|
||||||
|
int sel = m_procList->GetSelection();
|
||||||
|
if (sel != wxNOT_FOUND)
|
||||||
|
m_procList->Delete(sel);
|
||||||
|
|
||||||
|
}, wxID_HIGHEST + 5);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
auto RyujinApp::BindRunEvent(wxFrame* frame) -> void {
|
||||||
|
|
||||||
|
frame->Bind(wxEVT_BUTTON, [=](wxCommandEvent&) {
|
||||||
|
|
||||||
|
frame->SetStatusText("Starting obfuscation...");
|
||||||
|
m_progress->Pulse();
|
||||||
|
wxMilliSleep(1000);
|
||||||
|
m_progress->SetValue(100);
|
||||||
|
frame->SetStatusText("Obfuscation complete.");
|
||||||
|
|
||||||
|
}, wxID_HIGHEST + 6);
|
||||||
|
|
||||||
|
}
|
||||||
34
RyujinConsole/RyujinGUI/RyujinApp.hh
Normal file
34
RyujinConsole/RyujinGUI/RyujinApp.hh
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
#include <wx/wx.h>
|
||||||
|
#include <wx/filedlg.h>
|
||||||
|
#include <wx/gauge.h>
|
||||||
|
#include <wx/textdlg.h>
|
||||||
|
#include <wx/statline.h>
|
||||||
|
|
||||||
|
class RyujinApp : public wxApp {
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxTextCtrl* m_input = nullptr;
|
||||||
|
wxTextCtrl* m_pdb = nullptr;
|
||||||
|
wxTextCtrl* m_output = nullptr;
|
||||||
|
wxCheckBox* m_virtualize = nullptr;
|
||||||
|
wxCheckBox* m_junk = nullptr;
|
||||||
|
wxCheckBox* m_encrypt = nullptr;
|
||||||
|
wxCheckBox* m_randomSection = nullptr;
|
||||||
|
wxCheckBox* m_obfuscateIat = nullptr;
|
||||||
|
wxCheckBox* m_ignoreOriginalCodeRemove = nullptr;
|
||||||
|
wxListBox* m_procList = nullptr;
|
||||||
|
wxGauge* m_progress = nullptr;
|
||||||
|
|
||||||
|
auto DrawnPathRow(wxWindow* parent, wxBoxSizer* sizer, const wxString& label, int buttonId) -> wxTextCtrl*;
|
||||||
|
auto DrawnStyledCheckbox(wxWindow* parent, const wxString& label) -> wxCheckBox*;
|
||||||
|
auto DrawnRyujinButton(wxWindow* parent, const wxString& label, int id) -> wxButton*;
|
||||||
|
auto BindFileDialogs(wxFrame* frame) -> void;
|
||||||
|
auto BindListEvents(wxFrame* frame) -> void;
|
||||||
|
auto BindRunEvent(wxFrame* frame) -> void;
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool OnInit() override;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
wxIMPLEMENT_APP(RyujinApp);
|
||||||
158
RyujinConsole/RyujinGUI/RyujinGUI.vcxproj
Normal file
158
RyujinConsole/RyujinGUI/RyujinGUI.vcxproj
Normal file
@@ -0,0 +1,158 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Debug|Win32">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|Win32">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>Win32</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<VCProjectVersion>17.0</VCProjectVersion>
|
||||||
|
<Keyword>Win32Proj</Keyword>
|
||||||
|
<ProjectGuid>{04712d9f-1c08-4605-b938-1ec74f2b0acf}</ProjectGuid>
|
||||||
|
<RootNamespace>RyujinGUI</RootNamespace>
|
||||||
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<ImportGroup Label="ExtensionSettings">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="Shared">
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<OutDir>..\..\compiled\release</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<OutDir>..\..\compiled\release</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<OutDir>..\..\compiled\release</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<OutDir>..\..\compiled\release</OutDir>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>$(WXWIN)\include\msvc;$(WXWIN)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>$(WXWIN)\lib\vc_lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>$(WXWIN)\include\msvc;$(WXWIN)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>$(WXWIN)\lib\vc_lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>_DEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>$(WXWIN)\include\msvc;$(WXWIN)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>$(WXWIN)\lib\vc_x64_lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||||
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
||||||
|
<SDLCheck>true</SDLCheck>
|
||||||
|
<PreprocessorDefinitions>NDEBUG;_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<ConformanceMode>true</ConformanceMode>
|
||||||
|
<AdditionalIncludeDirectories>$(WXWIN)\include\msvc;$(WXWIN)\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<AdditionalLibraryDirectories>$(WXWIN)\lib\vc_x64_lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
</Link>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="RyujinApp.cc" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="RyujinApp.hh" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<ImportGroup Label="ExtensionTargets">
|
||||||
|
</ImportGroup>
|
||||||
|
</Project>
|
||||||
27
RyujinConsole/RyujinGUI/RyujinGUI.vcxproj.filters
Normal file
27
RyujinConsole/RyujinGUI/RyujinGUI.vcxproj.filters
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||||
|
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="RyujinApp.cc">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="RyujinApp.hh">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
||||||
Reference in New Issue
Block a user