Example #1
0
        public ReturnCode Injecting(string dllName, string path, string exportName, Process process, MemoryManager memoryManager)
        {
            bool     export   = string.IsNullOrWhiteSpace(exportName);
            Executor executor = memoryManager.GetExecutor();

            if (!File.Exists(path))
            {
                return(ReturnCode.FILE_NOT_FOUND);
            }

            byte[] pathBytes = Encoding.Unicode.GetBytes(path);

            if (!executor.CallFunction(Executor.GetFunction("kernel32.dll", "LoadLibraryW"), pathBytes))
            {
                return(ReturnCode.INJECTING_ERROR);
            }

            if (!export)
            {
                ReturnCode exportCode = InjectHelper.CallExportFunction(dllName, exportName, process, executor);

                if (exportCode == ReturnCode.EXPORT_FUNCTION_ERROR || exportCode == ReturnCode.CALL_FUNCTION_ERROR)
                {
                    return(exportCode);
                }
            }

            return(ReturnCode.INJECTION_SUCCESSFUL);
        }