static void Main() { // Process process = DebugProcessUtils.GetFirstProcessByName(Specifics.ProcessName); var c = Assembler.CreateContext <Action>(); //c.Sub(c.Rcx, 1); c.Jae(0); c.Call((uint)0x100); c.Jmp(c.Sp); c.Jmp(c.Rax); c.Jmp(Memory.QWord(c.Rax)); c.Fadd(c.Fp0, c.Fp1); c.Mov(c.Rax, (Immediate)0x0102030405060708); c.Mov(c.Rax, 0x0102030405060708); c.Mov(c.Rax, (ulong)0x0102030405060708); c.Call(Memory.QWord(CodeContext.Rip, 10)); //c.Call((Immediate) 0); //c.Nop(); var length = AssemblyUtil.GetAsmJitBytes(c).Length; Console.WriteLine($"length: 0x{length:X}"); //c.Call(0x0102030405060708); //c.Call(new IntPtr(0x0102030405060708)); //c.Compile(); byte[] bs = AssemblyUtil.GetAsmJitBytes(c); //bs = new byte[] { 0xEB, 0xFF - 0xA }; bs = new byte[] { 0x66, 0xFF, 0xE4 }; Console.WriteLine($"bytes: {AssemblyUtil.BytesToHex(bs)}"); var asms = AssemblyUtil.DisassembleMany(bs, 100); foreach (var asm in asms) { Console.WriteLine($"asm: {asm}, bytes: {AssemblyUtil.BytesToHex(asm.Bytes)}"); if (asm.Operands.Length > 0) { Console.WriteLine($"asm: {asm} operand size: {asm.Operands[0].Size}"); } //var asm2 = AssemblyUtil.ReassembleNasm64(asm); //Console.WriteLine($"asm: {asm}, asm2: {asm2}"); // PrintAsmDetails(asm); } // TestFormatContext(process); // TestDisassemble(); // TestResolve(process); //var instr = dr2.Instructions.First(); //instr.Operands // HexStartAddr(); // DumpModuleSizes(process); // var ir = new ImportResolver(process); // ir.DumpDebug(); // SizeOfDebugStuff(); // testMain(); Console.WriteLine("done"); Console.ReadKey(); }