mirror of
https://github.com/BeneficialCode/WinArk.git
synced 2026-10-29 12:39:51 +08:00
Check the offset value
This commit is contained in:
@@ -538,6 +538,10 @@ bool EnumObCallbackNotify(POBJECT_TYPE objectType,ULONG callbackListOffset,ObCal
|
||||
POB_CALLBACK_ENTRY callbackEntry = nullptr;
|
||||
ULONG count = 0;
|
||||
|
||||
if (callbackListOffset == -1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!objectType) {
|
||||
return false;
|
||||
}
|
||||
@@ -576,7 +580,12 @@ LONG GetObCallbackCount(POBJECT_TYPE objectType, ULONG callbackListOffset) {
|
||||
return count;
|
||||
}
|
||||
|
||||
if (callbackListOffset == -1) {
|
||||
return count;
|
||||
}
|
||||
|
||||
callbackListHead = (PLIST_ENTRY)((PUCHAR)objectType + callbackListOffset);
|
||||
|
||||
nextEntry = callbackListHead->Flink;
|
||||
|
||||
while (nextEntry != callbackListHead) {
|
||||
|
||||
@@ -387,7 +387,7 @@ LRESULT CKernelNotifyTable::OnRemove(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*
|
||||
auto& p = m_Table.data.info[selected];
|
||||
|
||||
CString text;
|
||||
text.Format(L"移除回调:%p?", p.Routine);
|
||||
text.Format(L"Remove notify:%p?", p.Routine);
|
||||
if (AtlMessageBox(*this, (PCWSTR)text, IDS_TITLE, MB_ICONWARNING | MB_OKCANCEL | MB_DEFBUTTON2) == IDCANCEL)
|
||||
return 0;
|
||||
|
||||
@@ -413,12 +413,20 @@ LRESULT CKernelNotifyTable::OnRemove(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*
|
||||
data.Type = NotifyType::ProcessObjectNotify;
|
||||
data.Address = p.Address;
|
||||
data.Offset = SymbolHelper::GetKernelStructMemberOffset("_OBJECT_TYPE", "CallbackList");
|
||||
if (data.Offset == -1) {
|
||||
AtlMessageBox(*this, L"Please delete the ntoskrnl.pdb, then launch the WinArk again", IDS_TITLE, MB_ICONWARNING | MB_OK | MB_DEFBUTTON2);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
case CallbackType::ThreadObPostOperationNotify:
|
||||
case CallbackType::ThreadObPreOperationNotify:
|
||||
data.Type = NotifyType::ThreadObjectNotify;
|
||||
data.Address = p.Address;
|
||||
data.Offset = SymbolHelper::GetKernelStructMemberOffset("_OBJECT_TYPE", "CallbackList");
|
||||
if (data.Offset == -1) {
|
||||
AtlMessageBox(*this, L"Please delete the ntoskrnl.pdb, then launch the WinArk again", IDS_TITLE, MB_ICONWARNING | MB_OK | MB_DEFBUTTON2);
|
||||
return 0;
|
||||
}
|
||||
break;
|
||||
|
||||
case CallbackType::RegistryNotify:
|
||||
|
||||
Reference in New Issue
Block a user