VoidLib.Injection.Hook.InjectAndExecute C# (CSharp) Method

InjectAndExecute() public method

public InjectAndExecute ( string asm ) : byte[]
asm string
return byte[]
        public byte[] InjectAndExecute(string[] asm)
        {
            while (InjectionUsed)
            { Thread.Sleep(5); }
            InjectionUsed = true;

            // Hook Wow:
            Hooking();

            byte[] tempsByte = new byte[0];

            // reset return value pointer
            Memory.WriteInt(retnInjectionAsm, 0);

            if (Memory.IsProcessOpen && threadHooked)
            {
                // Write the asm stuff
                Memory.Asm.Clear();
                foreach (string tempLineAsm in asm)
                {
                    Memory.Asm.AddLine(tempLineAsm);
                }

                // Allocation Memory
                uint injectionAsm_Codecave = Memory.AllocateMemory(Memory.Asm.Assemble().Length);

                // Inject
                Memory.Asm.Inject(injectionAsm_Codecave);
                Memory.WriteInt(addresseInjection, (int)injectionAsm_Codecave);
                while (Memory.ReadInt(addresseInjection) > 0) { Thread.Sleep(5); Console.WriteLine("Wait.."); } // Wait to launch code

                byte Buf = new Byte();
                List<byte> retnByte = new List<byte>();
                uint dwAddress = Memory.ReadUInt(retnInjectionAsm);
                Buf = Memory.ReadByte(dwAddress);
                while (Buf != 0)
                {
                    retnByte.Add(Buf);
                    dwAddress = dwAddress + 1;
                    Buf = Memory.ReadByte(dwAddress);
                }
                tempsByte = retnByte.ToArray();

                // Free memory allocated
                Memory.FreeMemory(injectionAsm_Codecave);
            }
            InjectionUsed = false;
            // return
            return tempsByte;
        }