Skip to content

Commit a92a2c1

Browse files
committed
DBG: fixed privilege stuff
1 parent 9f3da84 commit a92a2c1

File tree

1 file changed

+32
-17
lines changed

1 file changed

+32
-17
lines changed

src/dbg/instruction.cpp

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2397,20 +2397,25 @@ CMDRESULT cbInstrMnemonicbrief(int argc, char* argv[])
23972397

23982398
CMDRESULT cbGetPrivilegeState(int argc, char* argv[])
23992399
{
2400+
if(argc < 2)
2401+
{
2402+
dputs("Not enough arguments");
2403+
return STATUS_ERROR;
2404+
}
24002405
DWORD returnLength;
24012406
LUID luid;
24022407
if(LookupPrivilegeValueW(nullptr, StringUtils::Utf8ToUtf16(argv[1]).c_str(), &luid) == 0)
24032408
{
24042409
varset("$result", (duint)0, false);
2405-
return CMDRESULT::STATUS_CONTINUE;
2410+
return STATUS_CONTINUE;
24062411
}
24072412
Memory <TOKEN_PRIVILEGES*> Privileges(64 * 16 + 8, "_dbg_getprivilegestate");
24082413
if(GetTokenInformation(hProcessToken, TokenPrivileges, Privileges(), 64 * 16 + 8, &returnLength) == 0)
24092414
{
24102415
if(returnLength > 4 * 1024 * 1024)
24112416
{
24122417
varset("$result", (duint)0, false);
2413-
return CMDRESULT::STATUS_CONTINUE;
2418+
return STATUS_CONTINUE;
24142419
}
24152420
Privileges.realloc(returnLength, "_dbg_getprivilegestate");
24162421
if(GetTokenInformation(hProcessToken, TokenPrivileges, Privileges(), returnLength, &returnLength) == 0)
@@ -2432,32 +2437,42 @@ CMDRESULT cbGetPrivilegeState(int argc, char* argv[])
24322437

24332438
CMDRESULT cbEnablePrivilege(int argc, char* argv[])
24342439
{
2440+
if(argc < 2)
2441+
{
2442+
dputs("Not enough arguments");
2443+
return STATUS_ERROR;
2444+
}
24352445
LUID luid;
24362446
if(LookupPrivilegeValueW(nullptr, StringUtils::Utf8ToUtf16(argv[1]).c_str(), &luid) == 0)
24372447
{
24382448
dprintf("Could not find the specified privilege: %s\n", argv[1]);
2439-
return CMDRESULT::STATUS_ERROR;
2449+
return STATUS_ERROR;
24402450
}
2441-
Memory<TOKEN_PRIVILEGES*> Privilege(sizeof(LUID_AND_ATTRIBUTES), "_dbg_enableprivilege");
2442-
Privilege()->PrivilegeCount = 1;
2443-
Privilege()->Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
2444-
Privilege()->Privileges[0].Luid = luid;
2445-
bool ret = AdjustTokenPrivileges(hProcessToken, FALSE, Privilege(), sizeof(LUID_AND_ATTRIBUTES) + 4, nullptr, nullptr) != NO_ERROR;
2446-
return ret ? CMDRESULT::STATUS_CONTINUE : CMDRESULT::STATUS_CONTINUE;
2451+
TOKEN_PRIVILEGES Privilege;
2452+
Privilege.PrivilegeCount = 1;
2453+
Privilege.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
2454+
Privilege.Privileges[0].Luid = luid;
2455+
bool ret = AdjustTokenPrivileges(hProcessToken, FALSE, &Privilege, sizeof(TOKEN_PRIVILEGES), nullptr, nullptr) != NO_ERROR;
2456+
return ret ? STATUS_CONTINUE : STATUS_CONTINUE;
24472457
}
24482458

24492459
CMDRESULT cbDisablePrivilege(int argc, char* argv[])
24502460
{
2461+
if(argc < 2)
2462+
{
2463+
dputs("Not enough arguments");
2464+
return STATUS_ERROR;
2465+
}
24512466
LUID luid;
24522467
if(LookupPrivilegeValueW(nullptr, StringUtils::Utf8ToUtf16(argv[1]).c_str(), &luid) == 0)
24532468
{
24542469
dprintf("Could not find the specified privilege: %s\n", argv[1]);
2455-
return CMDRESULT::STATUS_ERROR;
2456-
}
2457-
Memory<TOKEN_PRIVILEGES*> Privilege(sizeof(LUID_AND_ATTRIBUTES), "_dbg_disableprivilege");
2458-
Privilege()->PrivilegeCount = 1;
2459-
Privilege()->Privileges[0].Attributes = 0;
2460-
Privilege()->Privileges[0].Luid = luid;
2461-
bool ret = AdjustTokenPrivileges(hProcessToken, FALSE, Privilege(), sizeof(LUID_AND_ATTRIBUTES) + 4, nullptr, nullptr) != NO_ERROR;
2462-
return ret ? CMDRESULT::STATUS_CONTINUE : CMDRESULT::STATUS_CONTINUE;
2470+
return STATUS_ERROR;
2471+
}
2472+
TOKEN_PRIVILEGES Privilege;
2473+
Privilege.PrivilegeCount = 1;
2474+
Privilege.Privileges[0].Attributes = 0;
2475+
Privilege.Privileges[0].Luid = luid;
2476+
bool ret = AdjustTokenPrivileges(hProcessToken, FALSE, &Privilege, sizeof(TOKEN_PRIVILEGES), nullptr, nullptr) != NO_ERROR;
2477+
return ret ? STATUS_CONTINUE : STATUS_CONTINUE;
24632478
}

0 commit comments

Comments
 (0)