示例#1
0
 /// <summary>
 /// 指定したアドレスのメモリを sbyte 型の値として取得又は設定します。
 /// </summary>
 /// <param name="address">読み書き対象の仮想アドレスを指定します。</param>
 public float this[int address] {
     get {
         float value = default(float);
         mem.ReadMemory((void *)address, &value, sizeof(float));
         return(value);
     }
     set {
         mem.WriteMemory((void *)address, &value, sizeof(float));
     }
 }
示例#2
0
 /// <summary>
 /// 指定したアドレスのメモリを sbyte 型の値として取得又は設定します。
 /// </summary>
 /// <param name="address">読み書き対象の仮想アドレスを指定します。</param>
 public double this[int address] {
     get {
         double value = default(double);
         mem.ReadMemory((void *)address, &value, sizeof(double));
         return(value);
     }
     set {
         mem.WriteMemory((void *)address, &value, sizeof(double));
     }
 }
示例#3
0
 /// <summary>
 /// 指定したアドレスのメモリを sbyte 型の値として取得又は設定します。
 /// </summary>
 /// <param name="address">読み書き対象の仮想アドレスを指定します。</param>
 public sbyte this[int address] {
     get {
         sbyte value = default(sbyte);
         mem.ReadMemory((void *)address, &value, sizeof(sbyte));
         return(value);
     }
     set {
         mem.WriteMemory((void *)address, &value, sizeof(sbyte));
     }
 }
示例#4
0
 /// <summary>
 /// 指定したアドレスのメモリを sbyte 型の値として取得又は設定します。
 /// </summary>
 /// <param name="address">読み書き対象の仮想アドレスを指定します。</param>
 public ulong this[int address] {
     get {
         ulong value = default(ulong);
         mem.ReadMemory((void *)address, &value, sizeof(ulong));
         return(value);
     }
     set {
         mem.WriteMemory((void *)address, &value, sizeof(ulong));
     }
 }
示例#5
0
 /// <summary>
 /// 指定したアドレスのメモリを sbyte 型の値として取得又は設定します。
 /// </summary>
 /// <param name="address">読み書き対象の仮想アドレスを指定します。</param>
 public ushort this[int address] {
     get {
         ushort value = default(ushort);
         mem.ReadMemory((void *)address, &value, sizeof(ushort));
         return(value);
     }
     set {
         mem.WriteMemory((void *)address, &value, sizeof(ushort));
     }
 }
示例#6
0
        /// <summary>
        /// プロセスの指定した仮想アドレスにある内容を読み取ります。
        /// </summary>
        /// <param name="mem">読み取り元のプロセスへのメモリアクセスを提供する ProcessMemory を指定します。</param>
        /// <param name="addr">読み取り元の、指定したプロセス内に於ける仮想アドレスを指定します。</param>
        /// <returns>読み取った内容を返します。</returns>
        public static T Read(ProcessMemory mem, void *addr)
        {
            byte *p = stackalloc byte[size];

            mem.ReadMemory(addr, p, size);
            return((T)Interop::Marshal.PtrToStructure((System.IntPtr)p, read_type));
        }
示例#7
0
        public string ReadAnsiString()
        {
            const int SZ_BUFF = 0x100;
            byte *    prem    = _base;
            byte *    pbuff   = stackalloc byte[SZ_BUFF + 1];
            char *    pchar   = stackalloc char[SZ_BUFF];

            System.Text.StringBuilder build = new System.Text.StringBuilder();

            pbuff[SZ_BUFF] = 0;           // sentinel
            lock (dec){
                dec.Reset();
                int cByts, cChrs;
                do
                {
                    // prem → pbuff
                    mem.ReadMemory(prem, pbuff, SZ_BUFF); prem += SZ_BUFF;
                    byte *scn = pbuff; while (*scn != 0)
                    {
                        scn++;                                               // null 文字の位置迄
                    }
                    cByts = (int)(scn - pbuff);

                    // pbuff → pchar
                    cChrs = dec.GetChars(pbuff, cByts, pchar, SZ_BUFF, false);

                    // pchar → build
                    build.Append(new string(pchar, 0, cChrs));
                }while(cByts == SZ_BUFF);
            }
            return(build.ToString());
        }