我在C#中使用easyhook获得了一个不安全的程序集。此代码波纹管运行良好 但是总的来说,调用此方法时出现了NullReferenceException。
此类的实例是Singleton模式 它经过了几次,有一点得到了空引用
该类是否用于拦截所有在某些I / O文件中的写入以进行某些操作
任何想法 查看代码。
仅在执行SQLCOMMAND时出现
at .... SystemHook.WriteFileHook(IntPtr hFile,Void * lpBuffer,UInt32 nNumberOfBytesToWrite,UInt32&lpNumberOfBytesWritten, NativeOverlapped和lpOverlapped)
在 SNIWriteSyncOverAsync(SNI_ConnWrapper *,SNI_Packet *)
在 SNINativeMethodWrapper.SNIWritePacket(SafeHandle pConn,SafeHandle 数据包,布尔同步)
在 System.Data.SqlClient.TdsParserStateObject.SNIWritePacket(SNIHandle 句柄,SNIPacket数据包,UInt32&sniError,布尔值canAccumulate, 布尔值调用者HasConnectionLock)
在 System.Data.SqlClient.TdsParserStateObject.WriteSni(布尔 canAccumulate)
在 System.Data.SqlClient.TdsParserStateObject.WritePacket(字节flushMode, 布尔值canAccumulate)
在 System.Data.SqlClient.TdsParserStateObject.ExecuteFlush()
位于 System.Data.SqlClient.TdsParser.TdsExecuteSQLBatch(字符串文本,Int32 超时,SqlNotificationRequest notificationRequest, TdsParserStateObject stateObj,布尔同步,布尔 callerHasConnectionLock,Byte [] enclavePackage)
在 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior,RunBehavior,runBehavior,布尔returnStream,布尔 异步,Int32超时,任务和任务,布尔asyncWrite,布尔inRetry, SqlDataReader ds,布尔值describeParameterEncryptionRequest)
在 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior,runBehavior,布尔值returnStream,字符串 方法,TaskCompletionSource`1完成,Int32超时,任务和任务, 布尔值和usedCache,布尔值asyncWrite,布尔值inRetry)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior,RunBehavior,runBehavior,布尔值returnStream,字符串 方法)
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior 行为,字符串方法)
在 System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior 行为)
,位于System.Data.Common.DbCommand.ExecuteReader()
bool WriteFileHook(IntPtr hFile, void* lpBuffer, uint nNumberOfBytesToWrite, out uint lpNumberOfBytesWritten, [In] ref System.Threading.NativeOverlapped lpOverlapped)
{
bool results = false;
bool write = true;
lpNumberOfBytesWritten = 0; // CRASH!!!
...
}