Esempio n. 1
0
        private int[] BuildMapping(BackwalkDereference deref, int limit)
        {
            int[] map            = new int[limit];
            var   addrTableStart = Address.Ptr32((uint)deref.TableOffset); //$BUG: breaks on 64- and 16-bit platforms.

            var rdr = program.CreateImageReader(addrTableStart);

            for (int i = 0; i < limit; ++i)
            {
                map[i] = rdr.ReadByte();
            }
            return(map);
        }
Esempio n. 2
0
        private int[] BuildMapping(BackwalkDereference deref, int limit)
        {
            int[] map            = new int[limit];
            var   addrTableStart = Address.Ptr32((uint)deref.TableOffset); //$BUG: breaks on 64- and 16-bit platforms.

            if (!program.SegmentMap.IsValidAddress(addrTableStart))
            {
                return(new int[0]);      //$DEBUG: look into this case.
            }
            var rdr = program.CreateImageReader(program.Architecture, addrTableStart);

            for (int i = 0; i < limit; ++i)
            {
                map[i] = rdr.ReadByte();
            }
            return(map);
        }