目录
[GrkProDlg.cpp(MFC 界面文件)](#GrkProDlg.cpp(MFC 界面文件))
[GrkProDig.cpp 包含 Pack.h 文件](#GrkProDig.cpp 包含 Pack.h 文件)

GrkProDlg.cpp(MFC 界面文件)
-
作用 :这是整个加壳器程序的界面层。
-
干嘛的:
-
负责绘制"选择文件"和"文件加壳"两个按钮。
-
用户选择要加壳的 .exe 文件。
-
用户点击"文件加壳"按钮后,调用 Pack() 函数开始加壳。
-
-
地位 :用户与加壳器的交互入口(最上层)。
MFC-环境创建以及配置
画界面


添加变量


生成DLL放入到加壳器的位置


新建头文件


包含对应的库文件
#include "pch.h"
#include "Pack.h"
#include <Psapi.h>
#pragma comment(lib,"psapi.lib") // 包含静态库
#include "../Stub/Stub.h" //导入我们自己的头文件
#pragma comment(lib,"../x64/Release/Stub.lib") // 导入自己的lib库
MFC画界面
GrkProDig.cpp 包含 Pack.h 文件
- 这个文件是MFC代码端
cpp
#include "pch.h"
#include "framework.h"
#include "12.GrkPro.h"
#include "12.GrkProDlg.h"
#include "afxdialogex.h"
#include "Pack.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
MFC资源上面的2个按钮

使用选择文件这个按钮代码实现

选择文件

cpp
void CMy12GrkProDlg::OnBnClickedCheckfilebutton()
{
UpdateData(TRUE);
CFileDialog fileDlg(true, L"exe", L"*.exe", OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, L"exe files(*.exe)||", NULL);
if (fileDlg.DoModal() == IDOK)
{
m_ExeFilePath = fileDlg.GetPathName();
}
UpdateData(FALSE);
}
文件加壳
cpp
UpdateData(TRUE);
if (Pack(m_ExeFilePath,0x45))
{
MessageBox(L"Success!", L"Msg", MB_OK);
}
else
{
MessageBox(L"Failed!", L"Msg", MB_OK);
}
UpdateData(FALSE);
界面输出
