void XXX_DuoKai(void)
{

/*004AEF36 |. E8 4F1E3800 CALL <JMP.&AppUtil.HelpUserSetting::GetValueByKey>
004AEF3B 8B45 E8 MOV EAX, DWORD PTR SS:[EBP-0x18] ; 当前已登录数量
004AEF3E 83C4 0C ADD ESP, 0xC
004AEF41 |. 3B45 E0 CMP EAX, DWORD PTR SS:[EBP-0x20] ; 比较登录数量
004AEF44 |. C645 FC 02 MOV BYTE PTR SS:[EBP-0x4], 0x2
004AEF48 |. 8D4D B8 LEA ECX, DWORD PTR SS:[EBP-0x48]
004AEF4B 72 60 JB SHORT BaiduHi.004AEFAD ; 将72改成EB即可多开
*/

char szLog[1024] = {0};
PBYTE pAddr = (PBYTE)0x004A0000; // 开始搜索地址
while((int)pAddr < 0x004FFFFF)
{
if (*pAddr == 0xE8 && *(pAddr + 21) == 0x72 && *(pAddr + 22) == 0x60)
{

DWORD dwOldProtect = 0;
VirtualProtect(pAddr, 128, PAGE_EXECUTE_READWRITE, &dwOldProtect); // 写内存之前必须先设置写权限哈
*(pAddr + 21) = 0xEB; // JB改成JMP
VirtualProtect(pAddr, 128, dwOldProtect, NULL); // 记得恢复内存权限


sprintf(szLog, "恭喜找到多开地址:0x%X, %X %X", (int)(pAddr + 21), *(pAddr + 21), *(pAddr + 22));
OutputDebugString(szLog);
break;

}
pAddr++;
}

OutputDebugString("完成XXX多开");

}