Kurze Antwort: Ja, ist möglich und wird normalerweise von Malwareautoren auch so gemacht. (Wobei du PowerShell durch jede andere Skript- / Programmiersprache ersetzen kannst.)

Das Zauberwort heißt "privilege escalation" und dazu gibt es sogar einen Wikipedia-Eintrag, der alles recht gut zusammenfasst:

https://de.wikipedia.org/wiki/Rechteausweitung

Grundsätzlich funktioniert das unabhängig vom Betriebssystem, unabhängig von der eingesetzten Software und der eingesetzten Programmiersprache. Auch VMs und Container sind davor nicht gefeit.

Erst vorgestern gab es dazu einen katastrophalen Bug:

https://www.heise.de/security/meldung/Luecke-in-Container-Runtime-runc-ermoeglicht-Host-Uebernahme-4306487.html

Wie du siehst, kommt das also gar nicht mal so selten vor.

Fazit: Ja, auf Windows gibt es Rechteausweitungen, auch mit Hilfe der PowerShell, und zwar relativ häufig ... geschätzt alle paar Wochen mal. :)

...zur Antwort

Die ganz billigen Dinger enthalten meist eigens dafür entwickelte ICs, die kaum mehr als die vier Grundrechenarten und ein Display ansteuern können. Diese werden i. d. R. gar nicht / kaum programmiert, sondern sind "fest verdrahtet", und wenn überhaupt kommt ein Assemblerdialekt zum Einsatz.

Bei hochwertigen (grafischen) Taschenrechnern, die diesen Namen auch verdienen, wird oft C / C++ oder ein BASIC-Dialekt genommen, wobei BASIC eher in den Programmen auf dem Taschenrechner angesiedelt ist, und C/C++/Assembler das Betriebssystem stellt. Bei den Z80 basierten Geräten kommt häufig ein Mix aus Assembler und Basic zum Einsatz.

...zur Antwort

Früher hab ich das zu Win32-API-Zeiten auf zwei Arten gelöst:

  1. Auch EXE-Dateien enthalten eine EXPORT-Tabelle und können als DLL fungieren. Mit einigen selbstgebauten Werkzeugen konnte ich DLLs in meine EXE integrieren, und die benötigten Funktionen exportieren, wobei die EXE sie dann von sich selbst aus wieder importiert.
  2. EXE-Dateien störte es früher nicht, wenn Datenmüll am Ende dran hing. So ziemlich alle Installer funktionerten übrigens genau so. Ich habe dann einfach die benötigten DLLs an die EXE rangepappt, zur Laufzeit in den Speicher gemappt, und konnte über einige Umwege auf die exportierten Symbole zugreifen.

Beide Methoden würde ich als höchst unzuverlässig ansehen und da .net-EXE Dateien intern eine völlig andere bzw. stark erweiterte Datenstruktur besitzen, weiß ich ehrlich gesagt nicht, ob das möglich ist.

Allerdings möchte ich wetten, dass man die Exports aus den .net-DLLs rauspopeln und woanders einbauen kann. Das wird dann zwar lustig, dynamische Offsets zu korrigieren, aber früher bei den ollen Win32-DLLs ist mir das auch gelungen ... hab dafür aber wohl gemerkt schon fast einen halben Disassembler schreiben müssen, also einfach wird das ganze sicher nicht, falls du kein fertiges Werkzeug findest. :)

...zur Antwort

Wenn du ein Array mit 100 Mio. Einträgen hast, und du willst einen einzigen Eintrag anfügen, muss realloc() den ganzen Klimmbimm umkopieren. Bei einer Liste wird kurz und knapp einfach nur das neue Element ans Ende angefügt.

Außerdem ist ein Array eigentlich immer etwas zu groß ... eine Liste hingegen hat immer die perfekte Größe.

Ein Array arbeitet u. U. aber schneller, aber dafür gibt es ja Datenstrukturen, die Arrays mit Listen kombinieren. Für mehr gibts dann noch Bäume, Maps, Sets, usw. usf.

realloc() ist verglichen mit dem einfach anfügen an eine Liste viel viel "teuer" und benötigt gerne 10000 mal oder mehr so viel Zeit.

...zur Antwort
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.