Exemple #1
0
        private void DisassembleFunction(object sender, RoutedEventArgs e)
        {
            ListViewFunction item = (ListViewFunction)FunctionsView.SelectedItem;
            Function         f    = item.Details;

            if (f.Size == 0xFFFFFFFF || f.Blocks == null)
            {
                f.FindSize();
                FindDominators(f.Blocks);
            }

            _InstrCollection.Clear();
            foreach (FunctionBlock block in f.Blocks)
            {
                uint offset = state.Pe.Rva2Offset(block.StartAddress - (uint)state.Pe.optHdr.ImageBase);

                for (uint i = 0; i < block.InstrCount; i++)
                {
                    uint instruction = state.Pe.ReadInstruction(offset + i * 4);

                    XenonInstructions.OpCodeInfo info = state.Instructions.GetInfo(instruction);
                    ListViewInstr instr = new ListViewInstr("0x" + (block.StartAddress + i * 4).ToString("X8"), info.Name, "");
                    _InstrCollection.Add(instr);
                }
            }
        }
        private void DisassembleFunction(object sender, RoutedEventArgs e)
        {
            ListViewFunction item = (ListViewFunction)FunctionsView.SelectedItem;
            Function f = item.Details;

            if (f.Size == 0xFFFFFFFF || f.Blocks == null)
            {
                f.FindSize();
                FindDominators(f.Blocks);
            }

            _InstrCollection.Clear();
            foreach (FunctionBlock block in f.Blocks)
            {
                uint offset = state.Pe.Rva2Offset(block.StartAddress - (uint)state.Pe.optHdr.ImageBase);

                for (uint i = 0; i < block.InstrCount; i++)
                {
                    uint instruction = state.Pe.ReadInstruction(offset + i * 4);

                    XenonInstructions.OpCodeInfo info = state.Instructions.GetInfo(instruction);
                    ListViewInstr instr = new ListViewInstr("0x" + (block.StartAddress + i * 4).ToString("X8"), info.Name, "");
                    _InstrCollection.Add(instr);
                }
            }
        }