小编Beh*_*ooz的帖子

x64驱动程序中的钩子ZwTerminateProcess(没有SSDT)

我发现并阅读了这个问题,但我没有找到我的答案SSDT挂钩替代x64系统

我想保护我的申请免受其他程序的终止.在32位版本的Windows中我使用了SSDT hooking挂钩ZwTerminateProcessZwOpenProcess.我现在要将程序升级为64位版本的Windows.不幸的是在64位窗口中我们不能使用SSDThook(因为Patch Guard(KPP)),请注意我不想在这种情况下绕过PG并且我只使用内核模式挂钩.例如,我不希望我的程序通过以下代码开始终止(偶数):

NTSTATUS drvTerminateProcess( ULONG ulProcessID )
{
    NTSTATUS          ntStatus = STATUS_SUCCESS;
    HANDLE            hProcess;
    OBJECT_ATTRIBUTES ObjectAttributes;
    CLIENT_ID         ClientId;

    DbgPrint( "drvTerminateProcess( %u )", ulProcessID );

    InitializeObjectAttributes( &ObjectAttributes, NULL, OBJ_INHERIT, NULL, NULL ); 

    ClientId.UniqueProcess = (HANDLE)ulProcessID;
    ClientId.UniqueThread  = NULL;

    __try
    {
        ntStatus = ZwOpenProcess( &hProcess, PROCESS_ALL_ACCESS, &ObjectAttributes, &ClientId );
        if( NT_SUCCESS(ntStatus) )
        {
            ntStatus = ZwTerminateProcess( hProcess, 0 );
            if( !NT_SUCCESS(ntStatus) )
                DbgPrint( "ZwTerminateProcess failed with status : %08X\n", …
Run Code Online (Sandbox Code Playgroud)

64-bit hook driver kernel-mode sql-server-data-tools

6
推荐指数
1
解决办法
1万
查看次数

按默认值创建一个常量的TDictionary数组

我想TDictionary在Delphi项目中使用a .但我有一个问题,我怎么能创建一个TDictionary默认值的常量数组?

例如,我想为字典分配4项,如波纹管代码(对于常数数组TItem):

...
type
  TItem = record
    _Key: string;
    _Value: string;
  end;
var
  Dic: array [0..3]of TItem=(
  (_Key:'A' ; _Value:'Apple'),
  (_Key:'B' ; _Value:'Book'),
  (_Key:'C' ; _Value:'C++'),
  (_Key:'D' ; _Value:'Delphi')
  );
...
Run Code Online (Sandbox Code Playgroud)

有没有办法做这个工作TDictionary?我想创建一个常量数组Dic(但),如波纹管结构.

  ...
    var
      Dic: TDictionary<string, string>;
    begin
      Dic := TDictionary<string, string>.Create;
      try
        Dic.Add('A', 'Apple');
        Dic.Add('B', 'Book');
        Dic.Add('C', 'C++');
        Dic.Add('D', 'Delphi');
      finally
         ///
      end;
    ...
Run Code Online (Sandbox Code Playgroud)

有人对我有什么建议吗?(对不起,如果我的英语很差!)

arrays delphi constants tdictionary

5
推荐指数
2
解决办法
2224
查看次数

OMF格式为COFF格式

有没有像Borland"coff2omf.exe"这样的工具将Borland OMF LIB格式转换为MS VC++ COFF LIB格式?

实际上我想在delphi中创建.obj文件并在MSVC++中使用它.

delphi coff visual-c++ omf

4
推荐指数
1
解决办法
2420
查看次数

流程监控CreateProcessNotifyRoutineEx

我正在开发一个用于监视流程创建的驱动程序,我编写了一个简单的代码来做到这一点。我使用PsSetCreateProcessNotifyRoutineEx。但这是行不通的!我正是在此链接上关注Microsoft帮助

#include <ntddk.h>

NTSTATUS DriverEntry(
    IN PDRIVER_OBJECT DriverObject,  
    IN PUNICODE_STRING RegistryPath
    );

VOID UnloadRoutine(
    IN PDRIVER_OBJECT DriverObject
    );

VOID CreateProcessNotifyEx(
    __inout   PEPROCESS Process,
    __in      HANDLE ProcessId,
    __in_opt  PPS_CREATE_NOTIFY_INFO CreateInfo
);



VOID CreateProcessNotifyEx(
    __inout   PEPROCESS Process,
    __in      HANDLE ProcessId,
    __in_opt  PPS_CREATE_NOTIFY_INFO CreateInfo

)
{
    if (CreateInfo)
    {
        if(CreateInfo->FileOpenNameAvailable==TRUE)
        {
            DbgPrintEx( 
                DPFLTR_IHVDRIVER_ID,  
                DPFLTR_INFO_LEVEL,
                "PID : 0x%X (%d)  ImageName :%wZ CmdLine : %wZ \n",
                ProcessId,ProcessId,
                CreateInfo->ImageFileName,
                CreateInfo->CommandLine
                );
        }
    }

}


VOID UnloadRoutine(IN PDRIVER_OBJECT DriverObject)
{
    PsSetCreateProcessNotifyRoutineEx((PCREATE_PROCESS_NOTIFY_ROUTINE_EX)  CreateProcessNotifyEx, TRUE); …
Run Code Online (Sandbox Code Playgroud)

monitoring driver process

3
推荐指数
1
解决办法
1675
查看次数