能力值:
( LV12,RANK:760 )
|
-
-
|
能力值:
( LV12,RANK:760 )
|
-
-
[原创] 精确逆向windows未公开函数 RtlpGetAssemblyStorageMapRootLocation
NTSTATUS RtlpGetAssemblyStorageMapRootLocation( HANDLE KeyHandle, PCUNICODE_STRING SubKeyName, PUNICODE_STRING Root ); NTSTATUS
RtlpGetAssemblyStorageMapRootLocation(
HANDLE KeyHandle,
PCUNICODE_STRING SubKeyName,
PUNICODE_STRING Root
)
{
NTSTATUS Status = STATUS_SUCCESS;
OBJECT_ATTRIBUTES Obja;
HANDLE SubKeyHandle = NULL;
ULONG ResultLength = 0;
struct {
KEY_VALUE_PARTIAL_INFORMATION kvpi;
WCHAR Buffer[DOS_MAX_PATH_LENGTH];
} ValueData;
static const WCHAR ValueNameBuffer[] = L"Location";
static const UNICODE_STRING ValueName = { sizeof(ValueNameBuffer) - sizeof(WCHAR), sizeof(ValueNameBuffer), (PWSTR) ValueNameBuffer };
if ((KeyHandle == NULL) ||
(SubKeyName == NULL) ||
(Root == NULL)) {
Status = STATUS_INVALID_PARAMETER;
goto Exit;
}
InitializeObjectAttributes(
&Obja,
(PUNICODE_STRING) &SubKeyName,
OBJ_CASE_INSENSITIVE,
KeyHandle,
NULL);
Status = NtOpenKey(&SubKeyHandle, KEY_QUERY_VALUE, &Obja);
if (!NT_SUCCESS(Status)) {
DbgPrintEx(
DPFLTR_SXS_ID,
DPFLTR_ERROR_LEVEL,
"SXS: Unable to open storage root subkey %wZ; Status = 0x%08lx\n", &SubKeyName, Status);
goto Exit;
}
Status = NtQueryValueKey(
SubKeyHandle,
(PUNICODE_STRING) &ValueName,
KeyValuePartialInformation,
&ValueData,
sizeof(ValueData),
&ResultLength);
if (!NT_SUCCESS(Status)) {
DbgPrintEx(
DPFLTR_SXS_ID,
DPFLTR_ERROR_LEVEL,
"SXS: Unabel to query location from storage root subkey %wZ; Status = 0x%08lx\n", &SubKeyName, Status);
goto Exit;
}
if (ValueData.kvpi.Type != REG_SZ) {
DbgPrintEx(
DPFLTR_SXS_ID,
DPFLTR_ERROR_LEVEL,
"SXS: Assembly storage root location value type is not REG_SZ\n");
Status = STATUS_OBJECT_PATH_NOT_FOUND;
goto Exit;
}
if ((ValueData.kvpi.DataLength % 2) != 0) {
DbgPrintEx(
DPFLTR_SXS_ID,
DPFLTR_ERROR_LEVEL,
"SXS: Assembly storage root location value has non-even size\n");
Status = STATUS_OBJECT_PATH_NOT_FOUND;
goto Exit;
}
if (ValueData.kvpi.DataLength > Root->MaximumLength) {
if (ValueData.kvpi.DataLength > UNICODE_STRING_MAX_BYTES) {
DbgPrintEx(
DPFLTR_SXS_ID,
DPFLTR_ERROR_LEVEL,
"SXS: Assembly storage root location for %wZ does not fit in a UNICODE STRING\n", &SubKeyName);
Status = STATUS_NAME_TOO_LONG;
goto Exit;
}
Root->MaximumLength = (USHORT) ValueData.kvpi.DataLength;
Root->Buffer = (PWSTR)(RtlAllocateStringRoutine)(Root->MaximumLength);
if (Root->Buffer == NULL) {
Status = STATUS_NO_MEMORY;
goto Exit;
}
}
RtlCopyMemory(
Root->Buffer,
ValueData.kvpi.Data,
ValueData.kvpi.DataLength);
Root->Length = (USHORT) ValueData.kvpi.DataLength;
Status = STATUS_SUCCESS;
Exit:
if (SubKeyHandle != NULL) {
RTL_SOFT_VERIFY(NT_SUCCESS(NtClose(SubKeyHandle)));
}
return Status;
}
最后于 2022-6-11 13:17
被cvcvxk编辑
,原因:
|
能力值:
( LV12,RANK:760 )
|
-
-
|
能力值:
( LV12,RANK:760 )
|
-
-
[分享]应对网络攻击减少数据丢失的3种关键方法
据说在C盘根目录建一个system权限才能read的flag.txt 内容写个随机的RW{xxxx-xxx-xx}就可以免疫被黑。
以上只是个玩笑
最后于 2021-12-3 15:02
被cvcvxk编辑
,原因:
|
能力值:
( LV12,RANK:760 )
|
-
-
|
能力值:
( LV12,RANK:760 )
|
-
-
|
能力值:
( LV12,RANK:760 )
|
-
-
[原创]从内核创建用户态线程
翻开老掉牙的书:Native Api Windows 2000 找到其中关于创建线程的代码复制粘贴到自己的R3线程代码里,ok,csrss通知完成。 VOID InformCsrss2(HANDLE hThread, ULONG pid, ULONG tid) { struct CSRSS_MESSAGE { ULONG Unknown1; ULONG Opcode; ULONG Status; ULONG Unknown2; }; struct { NT::PORT_MESSAGE PortMessage; CSRSS_MESSAGE CsrssMessage; THREAD_INFORMATION ProcessInformation; NT::CLIENT_ID Debugger; ULONG CreationFlags; ULONG VdmInfo[2]; } csrmsg = {{0}, {0}, {hThread, pid, tid}, {0}, 0, {0}}; NT::CsrClientCallServer(&csrmsg, 0, 0x10001, 0x24); }
最后于 2019-12-18 13:47
被cvcvxk编辑
,原因: InformCsrss用错了
|
能力值:
( LV12,RANK:760 )
|
-
-
|
能力值:
( LV12,RANK:760 )
|
-
-
[讨论]GDI 底层实现.
BDBig
关于设置UI线程问题。
PVOID
NTAPI
PsGetProcessWin32Process(PEPROCESS Process);
NTSTATUS
NTAPI
PsSetPro ...
操作太秀
|
能力值:
( LV12,RANK:760 )
|
-
-
|
能力值:
( LV12,RANK:760 )
|
-
-
|
能力值:
( LV12,RANK:760 )
|
-
-
[分享]GHIdra终于发布了
因为公开版没有很多东西,NSA开源只是框架,核心插件没有扔出来。
最后于 2019-3-6 15:04
被cvcvxk编辑
,原因:
|
能力值:
( LV12,RANK:760 )
|
-
-
|
能力值:
( LV12,RANK:760 )
|
-
-
|
能力值:
( LV12,RANK:760 )
|
-
-
|
能力值:
( LV12,RANK:760 )
|
-
-
|
能力值:
( LV12,RANK:760 )
|
-
-
|
能力值:
( LV12,RANK:760 )
|
-
-
|
能力值:
( LV12,RANK:760 )
|
-
-
|