コード例 #1
0
ファイル: RequestHelper.cs プロジェクト: sihaisz/windbg-debug
        private _EXT_TYPED_DATA PerformRequest(_EXT_TYPED_DATA payload, byte[] additionalPayload)
        {
            var payloadBuffer = ToBytes(payload, additionalPayload);
            var resultBuffer  = new byte[Defaults.BufferSize * 50];
            int outSize;
            var hr = _advanced.Request(DEBUG_REQUEST.EXT_TYPED_DATA_ANSI, payloadBuffer, payloadBuffer.Length, resultBuffer, Defaults.BufferSize * 50, out outSize);

            return(FromBytes(resultBuffer));
        }
コード例 #2
0
ファイル: RequestHelper.cs プロジェクト: sihaisz/windbg-debug
        private static _EXT_TYPED_DATA FromBytes(byte[] data)
        {
            _EXT_TYPED_DATA result = default(_EXT_TYPED_DATA);

            int    size    = Marshal.SizeOf(result);
            IntPtr pointer = Marshal.AllocHGlobal(size);

            Marshal.Copy(data, 0, pointer, size);

            result = (_EXT_TYPED_DATA)Marshal.PtrToStructure(pointer, result.GetType());
            Marshal.FreeHGlobal(pointer);

            return(result);
        }
コード例 #3
0
ファイル: RequestHelper.cs プロジェクト: sihaisz/windbg-debug
        private static byte[] ToBytes(_EXT_TYPED_DATA data, byte[] additional)
        {
            int size = Marshal.SizeOf(data);

            byte[] result = new byte[size];

            IntPtr pointer = Marshal.AllocHGlobal(size);

            Marshal.StructureToPtr(data, pointer, true);
            Marshal.Copy(pointer, result, 0, size);
            Marshal.FreeHGlobal(pointer);

            if (additional.Length == 0)
            {
                return(result);
            }

            return(CombineArrays(additional, result));
        }
コード例 #4
0
ファイル: RequestHelper.cs プロジェクト: sihaisz/windbg-debug
        public _DEBUG_TYPED_DATA CreateTypedData(ulong modBase, ulong offset, uint typeId)
        {
            _EXT_TYPED_DATA result = default(_EXT_TYPED_DATA);

            result.Operation = _EXT_TDOP.EXT_TDOP_SET_FROM_TYPE_ID_AND_U64;
            result.Flags     = 0; // Virtual Memory
            result.InData    = new _DEBUG_TYPED_DATA()
            {
                ModBase = modBase,
                Offset  = offset,
                TypeId  = typeId,
            };

            // will be populated
            result.OutData = default(_DEBUG_TYPED_DATA);
            result.Status  = 0;

            var response = PerformRequest(result, Defaults.NoPayload);

            return(response.OutData);
        }