Ein wichtiges Element in Onbroga ist das Hacken. Damit dies nicht zu zeitraubender Schwerstarbeit wird, schickt der Hacker ein Programm, welches alles für ihn erledigt. Diese Programme werden 
.
 von Daten im Netzwerk eingesetzt werden. Zu diesem Zweck sind die Programme nochmals in genauere Spezialisierungen eingeteilt.
So sind die Scanner-Typen besonders gut zum Erkennen von anderen, möglicherweise feindlichen, Programmen. In Verbindung mit den Verteidigungs-Typen, bilden sie eine kaum überwindbare Firewall.
Der Gegenpart hierzu sind die Tarn- und Angriffs-Typen. Sie besitzen besonders gute 
 nicht so schnell entdeckt werden.
Für den Datentransfer sind die Transporttypen vorgesehen. Sie können sehr viele Daten transferieren, was sie auch als Angriffsunterstützung gut aussehen lässt.
Schließlich ist da noch der Allround-Typ. Dieser vereint von allen Typen einen Teil in sich, was ihn multifunktional einsetzbar macht.
Jedes Programm besitzt definierte Eigenschaften. Es wird unterschieden zwischen allgemeinen Informationen und dem aktuellen Status des Programms.
Der Programmname wird von dem Entwickler vor dem 
Entwicklungsstart eines neuen Programms festgelegt und muss in Onbroga einzigartig sein.
Der Typ eines Programms bestimmt seine Grundwerte. Ein Programm kann je nach Typ also zum Beispiel besonders gut Daten transportieren oder angreifen.
Um neue Programmtypen selbst entwickeln zu können, müssen Fortschritte auf dem Forschungsgebiet der 
Programmentwicklung erzielt werden.
In der Entwicklung wird beschrieben, wann und von wem das angezeigte Programm 
erstellt wurde.
Jedes Programm verbraucht Speicherplatz. Die Größe bestimmt wie viel Speicherplatz benötigt wird, um dieses Programm in einem Gateway zu speichern.
Der Systemzustand beschreibt den Zustand des ungeschützten Programmkerns. Sobald die 
Schutzhülle durchbrochen ist, nimmt das Programm vitalen Schaden. Dieser Schaden kann auf die eingesetzte 
Steuerungs-KI durchschlagen. Durch die kognitive Bindung der 
Steuerungs-KI an das Programm, brechen bei einem Programm automatisch die Systeme zusammen, sobald die 
Steuerungs-KI zerstört wurde. Sobald der Systemzustand auf 0 sinkt, ist das Programm zerstört und nicht mehr reparabel. Es bleibt als Datenmüll auf der Festplatte zurück, welcher entfernt werden kann.
Die Schutzhülle umgibt ein Programm vollständig und macht es resistent gegen Angriffe von feindlich gesinnten Programmen. Die Schutzhülle muss vollständig zerstört werden, bevor das Programm 
Systemschaden nimmt.
Folgende Missionstypen entladen das Kampfinterface:
- Nach einem durchgeführten Angriff im Netzwerk ist das Kampfinterface eines Programms vollständig entladen. Unabhängig vom Kampfausgang muss das Interface daher 0T 02:00:00 laden, bevor eine weitere Kampfaktion möglich ist.
 - Befindet sich ein Programm dauerhaft auf einer Verteidigungsmission im Netzwerk, bleibt sein Kampfinterface solange im Speicher des Programms erhalten, bis die Mission beendet wird. In diesem Fall benötigt ein Programm 0T 00:30:00 bevor es eine neue Kampfaktion starten kann.
 - Nach einem Verbindungsvorgang ins Netzwerk muss das Kampfintercace 0T 00:30:00 laden. Zum Aufbauen der Verbindung selbst ist kein geladenes Kampfinterface erforderlich.
 
Der Gesamtzustand eines Programms gibt einen Überblick über den aktuellen Zustand eines Programms. Der Gesamtzustand entspricht der Summe aus 
Systemzustand und 
Schutzhüllenzustand.Die Tarnung bestimmt wie gut ein Programm seine Signatur auf unauffällige Weise im restlichen Datenverkehr verstecken kann. Je höher dieser Wert, desto schwieriger wird es, das Programm zu entdecken. Bei einem 
Angriff kann zum Beispiel das Überraschungsmoment maßgeblich von dieser Eigenschaft abhängen. Die Tarnung spielt aber nicht nur bei Angriffen eine wichtige Rolle. Sie ist bei allen Missionstypen außer 
Festsetzen und 
Verteidigen aktiv und schützt somit davor von anderen Programmen erkannt zu werden. Ist der Tarnwert eines Programms größer als die 
Detektorstärke eines anderen Programms, so kann das getarnte Programm nicht erfasst werden und ist unsichtbar.
Die Funktionsweise der Tarnung für einen Angriff auf ein Gateway wird detailliert in dem Artikel zur 
Gateway-Firewall beschrieben.
Die Detektorstärke ist das Gegenstück zur 
Tarnung. Je besser dieser Wert, desto leichter fällt es einem Programm, getarnte Programme zu identifizieren. Beispielsweise kann im Falle eines 
Angriffs der Aggressor frühzeitig entlarvt und Gegenmaßnahmen ergriffen werden.
Die Funktionsweise der Detektorstärke für einen Angriff auf ein Gateway wird detailliert in dem Artikel zur 
Gateway-Firewall beschrieben.
Die Angriffseigenschaft bestimmt wie gut sich ein Programm 
als Aggressor gegen seine Gegner durchsetzen kann.
- Der Wert definiert sowohl die Offensiv- als auch die Defensiveigenschaften des Programms.
 - Dieser Wert wird während eines Gefechts durch die Taktik einer Steuerungs-KI beeinflusst.
 - Bei einem Angriffswert von 0 kann ein Programm an keinem Angriff teilnehmen.
 
Der Verteidigungswert bestimmt wie gut sich ein Programm 
gegen einen Aggressor zur Wehr setzen kann.
- Der Wert definiert sowohl die Offensiv- als auch die Defensiveigenschaften des Programms.
 - Dieser Wert wird während eines Gefechts durch die Taktik einer Steuerungs-KI beeinflusst.
 - Bei einem Verteidigungswert von 0 kann ein Programm an keiner Verteidigung teilnehmen.
 
Nach einem erfolgreichen Angriff muss der Schaden ermittelt werden, welcher dem gegnerischen Programm abgezogen wird. Die Zerstörungskraft bestimmt diesen Wert.
Jedes Programm kann eine bestimmte Menge an Daten transportieren. Beispielsweise kann nach einem erfolgreichen 
Angriff das Programm die erbeuteten Daten zurück zu dem Auftraggeber transportieren. Zu beachten ist, dass die Transportkapazität im 
Netzwerk durch die Anzahl der Datenpakete eingeschränkt wird.
Zur Durchführung eines 
Serversupports muss die Steuerungs-KI des Programms eine permanente Verbindung zum jeweiligen Produktionsserver herstellen. Das Programm dient in diesem Fall als Schnittstelle zwischen Steuerungs-KI und dem Server. Das Serversupportlimit begrenzt die maximale Stufe der Support-Fähigkeiten einer Steuerungs-KI, die von dem Programm an einen Produktionsserver weitergereicht werden kann.
Ist die benutzte 
Support-Fähigkeit einer Steuerungs-KI größer als das Serversupportlimit des Programms, so wird die Fähigkeit der Steuerungs-KI auf das Limit des Programms beschränkt.
In einem 
Kampf ist es entscheidend sich zurückzuziehen, sobald dieser nicht mehr zu gewinnen ist. Um unnötige Verluste zu vermeiden sind die Eigenschaften 
schneller Rückzug des Programms und die 
Aggressivität der Steuerungs-KI ausschlaggebend. Sobald sich die 
Steuerungs-KI aus dem Kampf zurückziehen möchte ist ein sofortiges Beenden nicht immer umgehend möglich. Die Wahrscheinlichkeit einen sofortigen Rückzug zu starten, wird direkt durch die Eigenschaft 
schneller Rückzug bestimmt. Schlägt der Rückzugsversuch fehl, kann das Beenden um maximal eine Runde verzögert werden. Der zweite Versuch das Programm zu beenden ist also immer erfolgreich.
Es ist nicht möglich die Wahrscheinlichkeit des Rückzugs aus der ersten Kampfrunde zu beeinflussen, da in dieser Runde die 
Programme durch ihre eigene Initialisierung nicht in der Lage sind einen Rückzug durchzuführen.
Die uneingeschränkte Beeinflussung des Routinglevels eines Netzwerkgebiets oder die Durchführung einer 
Festsetzung ist nur technologisch sehr gut ausgestatteten 
Programmen möglich.
Es gibt verschiedene Ausprägungen der Gebietskontrolle:
- Keine Gebietskontrolle
 - Basis Gebietskontrolle
 - Erweiterte Gebietskontrolle
 
Grundsätzlich ist jedes Programm in der Lage das Routinglevel auf Level 3 zu steigern oder ab diesem Level zu senken, wenn es mindestens die 
Basis-Gebietskontrolle unterstützt. Sowohl das Durchführen einer 
Festsetzung als auch die 
Verbesserung oder 
Störung höherer Routinglevel ist hingegen Programmen vorbehalten, die über eine 
erweiterte Gebietskontrolle verfügen.
Programme die über keine Gebietskontrolle verfügen sind nicht in der Lage das Routinglevel zu 
verbessern oder zu 
stören. Die 
Übernahme eines Gebiets ist ohne eine Gebietskontrolle ebenfalls nicht möglich. Die 
Freigabe eines Gebiets ist hingegen auch ohne eine Gebietskontrolle möglich.
Die Komplexität eines Programms wird durch das sogenannte Techlevel beschrieben. Umso größer das Techlevel ist, desto komplizierter ist das Programm gestrickt. Anzumerken ist, dass ein kompliziertes Programm nicht unbedingt effizient arbeiten muss. Damit ein Programm arbeiten kann, benötigt es eine 
Steuerungs-KI. Damit die Steuerungs-KI die Kontrolle über das Programm übernehmen kann, muss sie in der Lage sein, sich an die Programmlogik anzupassen. Nur wenn die Steuerungs-KI mindestens dasselbe 
Techlevel besitzt wie das Programm, kann dieser Vorgang gelingen.
Jedes Programm kann mit einer bestimmten Anzahl von sogenannten 
Modulen erweitert werden. Jedes Programm besitzt, abhängig von seinem Typ, eine unterschiedliche Anzahl von Modulplätzen. Ist das 
Techlevel eines Moduls größer als das Techlevel des Programms, so erhöht sich das Techlevel des Programms auf das Techlevel des Moduls. Somit ist sichergestellt, dass eine eingesetzte Steuerungs-KI 
in der Lage ist das verbesserte Programm zu kontrollieren und keine technischen Probleme auftreten. Damit eine Steuerungs-KI ein Programm erfolgreich kontrollieren kann, ist jedoch auch die Anzahl der Module ein wichtiger Faktor. Nur wenn die Steuerungs-KI mindestens die gleiche Anzahl an 
Modulschnittstellen besitzt, wie in das Programm integrierte Module, kann die Steuerungs-KI das Programm steuern.
Ein Programm besitzt eine Vielzahl an unterschiedlichen Routinen und Fähigkeiten. Die Fähigkeit andere Programme zu 
bekämpfen gehört zu den Komplexesten und Umfangreichsten in der Programmstruktur. Daher muss ein Programm 
vor einer möglichen Kampfaktion in Bezug auf ein Gateway oder 
nach seinem Start in das 
Netzwerk erst sein Kampfinterface laden, um 
Angriffs- oder 
Verteidigungsmissionen starten zu können. Zu diesen Missionstypen gehören auch 
Festsetzen und 
Besetzen, welche als Sonderform der Verteidigung und des Angriffs gelten. Das Laden des Kampfinterfaces wirkt sich nicht auf andere mögliche Aktionen eines Programms, wie zum Beispiel den 
Gatewaytransfer im Netzwerk oder einen 
Programmtransfer, aus.