Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PE Executable #244

Closed
wants to merge 14 commits into from
16 changes: 13 additions & 3 deletions Aura Operating System/Aura_OS/Aura_OS.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project InitialTargets="GetVersion" Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

Expand All @@ -20,6 +20,7 @@
}
]]>
</SomeThing>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
</PropertyGroup>

<ItemGroup>
Expand All @@ -28,6 +29,8 @@
<None Remove="Resources\CosmosLogo.bmp" />
<None Remove="Resources\Cursor.bmp" />
<None Remove="Resources\error.bmp" />
<None Remove="Resources\exec.exe" />
<None Remove="Resources\noruntime.exe" />
<None Remove="Resources\power.bmp" />
<None Remove="Resources\Program.bmp" />
<None Remove="Resources\programIco.bmp" />
Expand All @@ -43,6 +46,7 @@
<EmbeddedResource Include="Resources\CosmosLogo.bmp" />
<EmbeddedResource Include="Resources\Cursor.bmp" />
<EmbeddedResource Include="Resources\error.bmp" />
<EmbeddedResource Include="Resources\noruntime.exe" />
<EmbeddedResource Include="Resources\power.bmp" />
<EmbeddedResource Include="Resources\Program.bmp" />
<EmbeddedResource Include="Resources\programIco.bmp" />
Expand All @@ -53,8 +57,14 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Cosmos.System2" Version="0-*" NoWarn="NU1604;NU1605" />
<PackageReference Include="CosmosFtpServer" Version="1.0.1" NoWarn="NU1604;NU1605" />
<PackageReference Include="Cosmos.System2" Version="0-*" NoWarn="NU1604;NU1605" />
<PackageReference Include="CosmosFtpServer" Version="1.0.1" NoWarn="NU1604;NU1605" />
</ItemGroup>

<ItemGroup>
<Reference Include="XSharp">
<HintPath>$(AppData)\Cosmos User Kit\Build\IL2CPU\XSharp.dll</HintPath>
</Reference>
</ItemGroup>

<Target Name="GetVersion">
Expand Down
4 changes: 4 additions & 0 deletions Aura Operating System/Aura_OS/Files.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,9 @@ public class Files
//1920x1024
[ManifestResourceStream(ResourceName = "Aura_OS.Resources.wallpaper1920.bmp")]
public static byte[] Wallpaper;

//MZ Program
[ManifestResourceStream(ResourceName = "Aura_OS.Resources.noruntime.exe")]
public static byte[] Program;
}
}
6 changes: 6 additions & 0 deletions Aura Operating System/Aura_OS/Interpreter/CommandManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
using Aura_OS.System.Shell.cmdIntr;
using Aura_OS.Interpreter.Commands.Util;
using Aura_OS.Interpreter.Commands.Filesystem;
using Aura_OS.Processing.Executable;

namespace Aura_OS.Interpreter
{
Expand Down Expand Up @@ -104,6 +105,11 @@ public void RegisterAllCommands()
};
test[2] = "test3"; //Should make a Null reference exception
}));
CMDs.Add(new CommandAction(new string[] { "exec" }, () =>
{
var pe = new PE32(Files.Program);
pe.Start();
}));
}

/// <summary>
Expand Down
5 changes: 5 additions & 0 deletions Aura Operating System/Aura_OS/Kernel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ public class Kernel

public static CommandManager CommandManager;

public static API auraApi;

public static bool Pressed;
public static int FreeCount = 0;

Expand Down Expand Up @@ -127,6 +129,9 @@ public static void BeforeRun()
WindowManager = new WindowManager();
WindowManager.Initialize();

auraApi = new API();
auraApi.Initialize();

//START MOUSE
MouseManager.ScreenWidth = screenWidth;
MouseManager.ScreenHeight = screenHeight;
Expand Down
60 changes: 60 additions & 0 deletions Aura Operating System/Aura_OS/Processing/API.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
using Aura_OS.Processing.Executable;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Cosmos.Core.INTs;

namespace Aura_OS.Processing
{
public unsafe class API : Process
{
public API() : base("Aura API", ProcessType.Driver)
{

}

public override void Initialize()
{
base.Initialize();
Kernel.ProcessManager.Register(this);

SetIntHandler(0x48, SWI);
}

public unsafe static void SWI(ref IRQContext aContext)
{
if (aContext.Interrupt == 0x48) //API interrupt.
{
if (aContext.EAX == 0x01) //Print function.
{
byte* dat = PE32.ProgramAdress + aContext.EDI;

Console.Write(GetUnicodeString(dat));
}
if (aContext.EAX == 0x02) //Clear function.
{
Kernel.console.Clear();
}
}
}

public static string GetUnicodeString(byte *str)
{
string test = "";

int len = str[4] * 2;

for (int i = 0; i < len; i++)
{
if (str[8 + i] != 0)
{
test += (char)str[8 + i];
}
}

return test;
}
}
}
27 changes: 27 additions & 0 deletions Aura Operating System/Aura_OS/Processing/Caller.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using IL2CPU.API.Attribs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XSharp;
using XSharp.Assembler;

namespace Aura_OS.Processing
{
public class Caller
{
[PlugMethod(Assembler = typeof(CallerPlug))]
public void CallCode(uint address) { }
}

[Plug(Target = typeof(Caller))]
public class CallerPlug : AssemblerMethod
{
public override void AssembleNew(Assembler aAssembler, object aMethodInfo)
{
XS.Set(XSRegisters.EAX, XSRegisters.EBP, sourceDisplacement: 8);
XS.Call(XSRegisters.EAX);
}
}
}
Loading