Skip to content

Commit a7f010f

Browse files
committed
PROJECT: AStyle
1 parent 5272dc9 commit a7f010f

File tree

8 files changed

+626
-620
lines changed

8 files changed

+626
-620
lines changed

src/bridge/_global.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ typedef bool (*DBGDBGCMDEXECDIRECT)(const char* cmd);
3636
typedef duint(*DBGGETBRANCHDESTINATION)(duint addr);
3737
typedef duint(*DBGSENDMESSAGE)(DBGMSG type, void* param1, void* param2);
3838

39-
typedef long (*DBGGETHANDLECOUNT)();
40-
typedef long (*DBGENUMHANDLES)(duint* handles, unsigned char* typeNumbers, unsigned int* grantedAccess, unsigned int maxcount);
41-
typedef bool(*DBGGETHANDLENAME)(char *name, char* typeName, size_t buffersize, duint remotehandle);
39+
typedef long(*DBGGETHANDLECOUNT)();
40+
typedef long(*DBGENUMHANDLES)(duint* handles, unsigned char* typeNumbers, unsigned int* grantedAccess, unsigned int maxcount);
41+
typedef bool(*DBGGETHANDLENAME)(char* name, char* typeName, size_t buffersize, duint remotehandle);
4242
typedef PROCESS_INFORMATION* (*DBGGETPROCESSINFORMATION)();
4343

4444
//DBG functions

src/bridge/bridgemain.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -860,7 +860,7 @@ BRIDGE_IMPEXP long DbgEnumHandles(duint* handles, unsigned char* typeNumbers, un
860860
return _dbg_enumhandles(handles, typeNumbers, grantedAccess, maxcount);
861861
}
862862

863-
BRIDGE_IMPEXP bool DbgGetHandleName(char *name, char* typeName, size_t buffersize, duint remotehandle)
863+
BRIDGE_IMPEXP bool DbgGetHandleName(char* name, char* typeName, size_t buffersize, duint remotehandle)
864864
{
865865
return _dbg_gethandlename(name, typeName, buffersize, remotehandle);
866866
}

src/dbg/_exports.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ DLL_EXPORT bool _dbg_addrinfoget(duint addr, SEGMENTREG segment, ADDRINFO* addri
2020
DLL_EXPORT bool _dbg_addrinfoset(duint addr, ADDRINFO* addrinfo);
2121
DLL_EXPORT long _dbg_gethandlecount();
2222
DLL_EXPORT long _dbg_enumhandles(duint* handles, unsigned char* typeNumbers, unsigned int* grantedAccess, unsigned int maxcount);
23-
DLL_EXPORT bool _dbg_gethandlename(char *name, char* typeName, size_t buffersize, duint remotehandle);
23+
DLL_EXPORT bool _dbg_gethandlename(char* name, char* typeName, size_t buffersize, duint remotehandle);
2424
DLL_EXPORT PROCESS_INFORMATION* _dbg_getProcessInformation();
2525
DLL_EXPORT int _dbg_bpgettypeat(duint addr);
2626
DLL_EXPORT bool _dbg_getregdump(REGDUMP* regdump);

src/dbg/debugger.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1862,7 +1862,7 @@ static void debugLoopFunction(void* lpParameter, bool attach)
18621862
varset("$hp", (duint)fdProcessInfo->hProcess, true);
18631863
varset("$pid", fdProcessInfo->dwProcessId, true);
18641864

1865-
if (!OpenProcessToken(fdProcessInfo->hProcess, TOKEN_ALL_ACCESS, &hProcessToken))
1865+
if(!OpenProcessToken(fdProcessInfo->hProcess, TOKEN_ALL_ACCESS, &hProcessToken))
18661866
hProcessToken = 0;
18671867
}
18681868

src/dbg/enumhandles.cpp

Lines changed: 124 additions & 122 deletions
Original file line numberDiff line numberDiff line change
@@ -1,122 +1,124 @@
1-
#include "_global.h"
2-
#include "debugger.h"
3-
#include "TitanEngine\TitanEngine.h"
4-
5-
struct SYSTEM_HANDLE_INFORMATION{
6-
ULONG ProcessId;
7-
UCHAR ObjectTypeNumber;
8-
UCHAR Flags;
9-
USHORT Handle;
10-
PVOID Object;
11-
DWORD GrantedAccess;
12-
};
13-
14-
struct OBJECT_TYPE_INFORMATION
15-
{
16-
UNICODE_STRING Name;
17-
ULONG TotalNumberOfObjects;
18-
ULONG TotalNumberOfHandles;
19-
ULONG TotalPagedPoolUsage;
20-
ULONG TotalNonPagedPoolUsage;
21-
ULONG TotalNamePoolUsage;
22-
ULONG TotalHandleTableUsage;
23-
ULONG HighWaterNumberOfObjects;
24-
ULONG HighWaterNumberOfHandles;
25-
ULONG HighWaterPagedPoolUsage;
26-
ULONG HighWaterNonPagedPoolUsage;
27-
ULONG HighWaterNamePoolUsage;
28-
ULONG HighWaterHandleTableUsage;
29-
ULONG InvalidAttributes;
30-
GENERIC_MAPPING GenericMapping;
31-
ULONG ValidAccess;
32-
BOOLEAN SecurityRequired;
33-
BOOLEAN MaintainHandleCount;
34-
USHORT MaintainTypeList;
35-
DWORD PoolType;
36-
ULONG PagedPoolUsage;
37-
ULONG NonPagedPoolUsage;
38-
};
39-
40-
struct MYHANDLES{
41-
DWORD_PTR HandleCount;
42-
SYSTEM_HANDLE_INFORMATION Handles[1];
43-
};
44-
45-
#ifdef _WIN64
46-
DWORD (*NtQuerySystemInformation)(DWORD SystemInfoClass, void* SystemInfo, DWORD SystemInfoSize, DWORD* ReturnedSize) = nullptr;
47-
#else //x86
48-
DWORD(__stdcall *NtQuerySystemInformation)(DWORD SystemInfoClass, void* SystemInfo, DWORD SystemInfoSize, DWORD* ReturnedSize) = nullptr;
49-
#endif //_WIN64
50-
#ifdef _WIN64
51-
DWORD (*NtQueryObject)(HANDLE ObjectHandle, ULONG ObjectInformationClass, PVOID ObjectInformation, ULONG ObjectInformationLength, PULONG ReturnLength) = nullptr;
52-
#else //x86
53-
DWORD(__stdcall *NtQueryObject)(HANDLE ObjectHandle, ULONG ObjectInformationClass, PVOID ObjectInformation, ULONG ObjectInformationLength, PULONG ReturnLength) = nullptr;
54-
#endif //_WIN64
55-
56-
extern "C" DLL_EXPORT long _dbg_enumhandles(duint* handles, unsigned char* typeNumbers, unsigned int* grantedAccess, unsigned int maxcount)
57-
{
58-
MYHANDLES* myhandles = (MYHANDLES*)emalloc(16384, "_dbg_enumhandles");
59-
DWORD size = 16384;
60-
DWORD errcode = 0xC0000004;
61-
if (NtQuerySystemInformation == nullptr)
62-
*(FARPROC*)&NtQuerySystemInformation = GetProcAddress(GetModuleHandleW(L"ntdll.dll"), "NtQuerySystemInformation");
63-
while (errcode == 0xC0000004)
64-
{
65-
errcode = NtQuerySystemInformation(16, myhandles, size, &size);
66-
if (errcode == 0xC0000004)
67-
{
68-
myhandles = (MYHANDLES*)erealloc(myhandles, size + 16384, "_dbg_enumhandles");
69-
size += 16384;
70-
}
71-
else
72-
{
73-
break;
74-
}
75-
}
76-
if (errcode != 0)
77-
{
78-
efree(myhandles, "_dbg_enumhandles");
79-
return 0;
80-
}
81-
else
82-
{
83-
unsigned int j = 0;
84-
for (unsigned int i = 0; i < myhandles->HandleCount; i++)
85-
{
86-
DWORD pid = fdProcessInfo->dwProcessId;
87-
if (myhandles->Handles[i].ProcessId == pid)
88-
{
89-
handles[j] = myhandles->Handles[j].Handle;
90-
typeNumbers[j] = myhandles->Handles[j].ObjectTypeNumber;
91-
grantedAccess[j] = myhandles->Handles[j].GrantedAccess;
92-
if (++j == maxcount) break;
93-
}
94-
}
95-
efree(myhandles, "_dbg_enumhandles");
96-
return j;
97-
}
98-
}
99-
100-
extern "C" DLL_EXPORT bool _dbg_gethandlename(char *name, char* typeName, size_t buffersize, duint remotehandle)
101-
{
102-
HANDLE hLocalHandle;
103-
if (typeName && DuplicateHandle(fdProcessInfo->hProcess, (HANDLE)remotehandle, GetCurrentProcess(), &hLocalHandle, DUPLICATE_SAME_ACCESS, FALSE, 0))
104-
{
105-
OBJECT_TYPE_INFORMATION* objectTypeInfo = (OBJECT_TYPE_INFORMATION*)emalloc(128, "_dbg_gethandlename");
106-
if (NtQueryObject == nullptr)
107-
*(FARPROC*)&NtQueryObject = GetProcAddress(GetModuleHandleW(L"ntdll.dll"), "NtQueryObject");
108-
if (NtQueryObject(hLocalHandle, 2, objectTypeInfo, 128, NULL) >= 0)
109-
strcpy_s(typeName, buffersize, StringUtils::Utf16ToUtf8(objectTypeInfo->Name.Buffer).c_str());
110-
efree(objectTypeInfo, "_dbg_gethandlename");
111-
CloseHandle(hLocalHandle);
112-
}
113-
wchar_t *buffer;
114-
buffer = (wchar_t*)HandlerGetHandleNameW(fdProcessInfo->hProcess, fdProcessInfo->dwProcessId, (HANDLE)remotehandle, false);
115-
if (buffer)
116-
{
117-
strcpy_s(name, buffersize, StringUtils::Utf16ToUtf8(buffer).c_str());
118-
VirtualFree(buffer, 0, MEM_RELEASE);
119-
return true;
120-
}
121-
return true;
122-
}
1+
#include "_global.h"
2+
#include "debugger.h"
3+
#include "TitanEngine\TitanEngine.h"
4+
5+
struct SYSTEM_HANDLE_INFORMATION
6+
{
7+
ULONG ProcessId;
8+
UCHAR ObjectTypeNumber;
9+
UCHAR Flags;
10+
USHORT Handle;
11+
PVOID Object;
12+
DWORD GrantedAccess;
13+
};
14+
15+
struct OBJECT_TYPE_INFORMATION
16+
{
17+
UNICODE_STRING Name;
18+
ULONG TotalNumberOfObjects;
19+
ULONG TotalNumberOfHandles;
20+
ULONG TotalPagedPoolUsage;
21+
ULONG TotalNonPagedPoolUsage;
22+
ULONG TotalNamePoolUsage;
23+
ULONG TotalHandleTableUsage;
24+
ULONG HighWaterNumberOfObjects;
25+
ULONG HighWaterNumberOfHandles;
26+
ULONG HighWaterPagedPoolUsage;
27+
ULONG HighWaterNonPagedPoolUsage;
28+
ULONG HighWaterNamePoolUsage;
29+
ULONG HighWaterHandleTableUsage;
30+
ULONG InvalidAttributes;
31+
GENERIC_MAPPING GenericMapping;
32+
ULONG ValidAccess;
33+
BOOLEAN SecurityRequired;
34+
BOOLEAN MaintainHandleCount;
35+
USHORT MaintainTypeList;
36+
DWORD PoolType;
37+
ULONG PagedPoolUsage;
38+
ULONG NonPagedPoolUsage;
39+
};
40+
41+
struct MYHANDLES
42+
{
43+
DWORD_PTR HandleCount;
44+
SYSTEM_HANDLE_INFORMATION Handles[1];
45+
};
46+
47+
#ifdef _WIN64
48+
DWORD (*NtQuerySystemInformation)(DWORD SystemInfoClass, void* SystemInfo, DWORD SystemInfoSize, DWORD* ReturnedSize) = nullptr;
49+
#else //x86
50+
DWORD(__stdcall* NtQuerySystemInformation)(DWORD SystemInfoClass, void* SystemInfo, DWORD SystemInfoSize, DWORD* ReturnedSize) = nullptr;
51+
#endif //_WIN64
52+
#ifdef _WIN64
53+
DWORD (*NtQueryObject)(HANDLE ObjectHandle, ULONG ObjectInformationClass, PVOID ObjectInformation, ULONG ObjectInformationLength, PULONG ReturnLength) = nullptr;
54+
#else //x86
55+
DWORD(__stdcall* NtQueryObject)(HANDLE ObjectHandle, ULONG ObjectInformationClass, PVOID ObjectInformation, ULONG ObjectInformationLength, PULONG ReturnLength) = nullptr;
56+
#endif //_WIN64
57+
58+
extern "C" DLL_EXPORT long _dbg_enumhandles(duint* handles, unsigned char* typeNumbers, unsigned int* grantedAccess, unsigned int maxcount)
59+
{
60+
MYHANDLES* myhandles = (MYHANDLES*)emalloc(16384, "_dbg_enumhandles");
61+
DWORD size = 16384;
62+
DWORD errcode = 0xC0000004;
63+
if(NtQuerySystemInformation == nullptr)
64+
*(FARPROC*)&NtQuerySystemInformation = GetProcAddress(GetModuleHandleW(L"ntdll.dll"), "NtQuerySystemInformation");
65+
while(errcode == 0xC0000004)
66+
{
67+
errcode = NtQuerySystemInformation(16, myhandles, size, &size);
68+
if(errcode == 0xC0000004)
69+
{
70+
myhandles = (MYHANDLES*)erealloc(myhandles, size + 16384, "_dbg_enumhandles");
71+
size += 16384;
72+
}
73+
else
74+
{
75+
break;
76+
}
77+
}
78+
if(errcode != 0)
79+
{
80+
efree(myhandles, "_dbg_enumhandles");
81+
return 0;
82+
}
83+
else
84+
{
85+
unsigned int j = 0;
86+
for(unsigned int i = 0; i < myhandles->HandleCount; i++)
87+
{
88+
DWORD pid = fdProcessInfo->dwProcessId;
89+
if(myhandles->Handles[i].ProcessId == pid)
90+
{
91+
handles[j] = myhandles->Handles[j].Handle;
92+
typeNumbers[j] = myhandles->Handles[j].ObjectTypeNumber;
93+
grantedAccess[j] = myhandles->Handles[j].GrantedAccess;
94+
if(++j == maxcount) break;
95+
}
96+
}
97+
efree(myhandles, "_dbg_enumhandles");
98+
return j;
99+
}
100+
}
101+
102+
extern "C" DLL_EXPORT bool _dbg_gethandlename(char* name, char* typeName, size_t buffersize, duint remotehandle)
103+
{
104+
HANDLE hLocalHandle;
105+
if(typeName && DuplicateHandle(fdProcessInfo->hProcess, (HANDLE)remotehandle, GetCurrentProcess(), &hLocalHandle, DUPLICATE_SAME_ACCESS, FALSE, 0))
106+
{
107+
OBJECT_TYPE_INFORMATION* objectTypeInfo = (OBJECT_TYPE_INFORMATION*)emalloc(128, "_dbg_gethandlename");
108+
if(NtQueryObject == nullptr)
109+
*(FARPROC*)&NtQueryObject = GetProcAddress(GetModuleHandleW(L"ntdll.dll"), "NtQueryObject");
110+
if(NtQueryObject(hLocalHandle, 2, objectTypeInfo, 128, NULL) >= 0)
111+
strcpy_s(typeName, buffersize, StringUtils::Utf16ToUtf8(objectTypeInfo->Name.Buffer).c_str());
112+
efree(objectTypeInfo, "_dbg_gethandlename");
113+
CloseHandle(hLocalHandle);
114+
}
115+
wchar_t* buffer;
116+
buffer = (wchar_t*)HandlerGetHandleNameW(fdProcessInfo->hProcess, fdProcessInfo->dwProcessId, (HANDLE)remotehandle, false);
117+
if(buffer)
118+
{
119+
strcpy_s(name, buffersize, StringUtils::Utf16ToUtf8(buffer).c_str());
120+
VirtualFree(buffer, 0, MEM_RELEASE);
121+
return true;
122+
}
123+
return true;
124+
}

src/dbg/instruction.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1405,7 +1405,7 @@ static bool cbModCallFind(Capstone* disasm, BASIC_INSTRUCTION_INFO* basicinfo, R
14051405
GuiReferenceSetRowCount(refinfo->refcount + 1);
14061406
GuiReferenceSetCellContent(refinfo->refcount, 0, addrText);
14071407
char disassembly[GUI_MAX_DISASSEMBLY_SIZE] = "";
1408-
if (GuiGetDisassembly((duint)disasm->Address(), disassembly))
1408+
if(GuiGetDisassembly((duint)disasm->Address(), disassembly))
14091409
{
14101410
GuiReferenceSetCellContent(refinfo->refcount, 1, disassembly);
14111411
GuiReferenceSetCellContent(refinfo->refcount, 2, label);
@@ -2398,34 +2398,34 @@ CMDRESULT cbGetPrivilegeState(int argc, char* argv[])
23982398
TOKEN_PRIVILEGES* Privileges;
23992399
DWORD returnLength;
24002400
LUID luid;
2401-
if (LookupPrivilegeValueW(nullptr, StringUtils::Utf8ToUtf16(argv[1]).c_str(), &luid) == 0)
2401+
if(LookupPrivilegeValueW(nullptr, StringUtils::Utf8ToUtf16(argv[1]).c_str(), &luid) == 0)
24022402
{
24032403
varset("$result", (duint)0, false);
24042404
return CMDRESULT::STATUS_CONTINUE;
24052405
}
24062406
Privileges = (TOKEN_PRIVILEGES*)emalloc(64 * 16 + 8, "_dbg_getprivilegestate");
2407-
if (GetTokenInformation(hProcessToken, TokenPrivileges, Privileges, 64 * 16 + 8, &returnLength) == 0)
2407+
if(GetTokenInformation(hProcessToken, TokenPrivileges, Privileges, 64 * 16 + 8, &returnLength) == 0)
24082408
{
2409-
if (returnLength > 4 * 1024 * 1024)
2409+
if(returnLength > 4 * 1024 * 1024)
24102410
{
24112411
varset("$result", (duint)0, false);
24122412
return CMDRESULT::STATUS_CONTINUE;
24132413
}
24142414
Privileges = (TOKEN_PRIVILEGES*)erealloc(Privileges, returnLength, "_dbg_getprivilegestate");
2415-
if (GetTokenInformation(hProcessToken, TokenPrivileges, Privileges, returnLength, &returnLength) == 0)
2415+
if(GetTokenInformation(hProcessToken, TokenPrivileges, Privileges, returnLength, &returnLength) == 0)
24162416
{
24172417
efree(Privileges, "_dbg_getprivilegestate");
24182418
return STATUS_ERROR;
24192419
}
24202420
}
2421-
for (unsigned int i = 0; i < Privileges->PrivilegeCount; i++)
2421+
for(unsigned int i = 0; i < Privileges->PrivilegeCount; i++)
24222422
{
2423-
if (4 + sizeof(LUID_AND_ATTRIBUTES) * i > returnLength)
2423+
if(4 + sizeof(LUID_AND_ATTRIBUTES) * i > returnLength)
24242424
{
24252425
efree(Privileges, "_dbg_getprivilegestate");
24262426
return STATUS_ERROR;
24272427
}
2428-
if (memcmp(&Privileges->Privileges[i].Luid, &luid, sizeof(LUID)) == 0)
2428+
if(memcmp(&Privileges->Privileges[i].Luid, &luid, sizeof(LUID)) == 0)
24292429
{
24302430
efree(Privileges, "_dbg_getprivilegestate");
24312431
varset("$result", (duint)(Privileges->Privileges[i].Attributes + 1), false); // 2=enabled, 3=default, 1=disabled
@@ -2440,7 +2440,7 @@ CMDRESULT cbGetPrivilegeState(int argc, char* argv[])
24402440
CMDRESULT cbEnablePrivilege(int argc, char* argv[])
24412441
{
24422442
LUID luid;
2443-
if (LookupPrivilegeValueW(nullptr, StringUtils::Utf8ToUtf16(argv[1]).c_str(), &luid) == 0)
2443+
if(LookupPrivilegeValueW(nullptr, StringUtils::Utf8ToUtf16(argv[1]).c_str(), &luid) == 0)
24442444
{
24452445
dprintf("Could not find the specified privilege: %s\n", argv[1]);
24462446
return CMDRESULT::STATUS_ERROR;
@@ -2458,7 +2458,7 @@ CMDRESULT cbEnablePrivilege(int argc, char* argv[])
24582458
CMDRESULT cbDisablePrivilege(int argc, char* argv[])
24592459
{
24602460
LUID luid;
2461-
if (LookupPrivilegeValueW(nullptr, StringUtils::Utf8ToUtf16(argv[1]).c_str(), &luid) == 0)
2461+
if(LookupPrivilegeValueW(nullptr, StringUtils::Utf8ToUtf16(argv[1]).c_str(), &luid) == 0)
24622462
{
24632463
dprintf("Could not find the specified privilege: %s\n", argv[1]);
24642464
return CMDRESULT::STATUS_ERROR;

0 commit comments

Comments
 (0)