/// <summary> /// Disassemble a byte array, triggering Callback on each instruction /// </summary> /// <param name="Data">Assembly instructions</param> /// <param name="Address">Address of the first instruction</param> /// /// <param name="Callback">Delegate function called per-instruction</param> public static void DisassembleAll(byte[] Data, ulong Address, OnDisassembly Callback) { using (Capstone Engine = CreateEngine()) { Engine.DisassembleIt(Data, Address, Callback); } }
/// <summary> /// Create a new instance of Capstone, setup for x86 disassembly /// </summary> /// <returns>Instance of disposable Capstone class</returns> public static Capstone CreateEngine() { Capstone Instance = new Capstone(); Instance.Wrapper = new CapstoneWrapper(); Instance.Wrapper.Open(cs_arch.CS_ARCH_X86, cs_mode.CS_MODE_32); Instance.Wrapper.SetOption(cs_opt_type.CS_OPT_SYNTAX, cs_opt_value.CS_OPT_SYNTAX_INTEL); return(Instance); }