Skip to content

Softmod Features

Ryan Miceli edited this page Oct 6, 2026 · 4 revisions

Peer Pressure uses a custom set of OS patches I wrote myself. It should have parity with the freeboot/dashlaunch patch sets but there may be some things I missed. Here is a full list of what's been patched in the OS:

  • Memory page protections removed.

    • Xex pages are marked RWX.
    • Heap pages are marked X but maintain whatever RW bits are currently set.
  • Xex checks removed:

    • Signature checks
    • Section hash checks
    • Kernel/module version checks
    • Media/device ID checks
    • Bounding path checks
    • Region checks
    • Revocation checks (including the infamous kiosk disc)
    • Manufacturing mode checks
  • Support for loading dev encrypted xex files

  • Removed security dectection/activation functions.

  • Removed XGD2 signature checks.

  • HvxBlowFuses removed.

  • HvxKeysGetKey allows all key values to be retreived.

  • Removed OSIG data checks on dvd drives.

  • Removed content revocation checks.

  • Removed content signature checks.

  • Removed signature checks on HDDs.

  • Removed content license checks.

  • Removed 30ms ping limit for system link traffic.

  • Removed xex privilege checks for insecure sockets.

  • HDD transfer speeds automatically set to the highest speed supported by the drive.

Dashboard Patches:

  • Games installed to the HDD do not need the disc inserted to play.
  • Games from foreign regions can be installed to the HDD.
  • Removed blocked publisher IDs ('IM', 'XA', 'PG') for disc->HDD install.
  • DVD movie region checks removed.

Xbox Guide Integrations

Peer pressure hooks the xbox guide to provide quick launch buttons for your homebrew dashboard, MS dashboard, and softmod settings app. The first button in the Home tab of the guide is your homebrew dashboard quick launch button. If you setup a homebrew dashboard the text for the button will contain the dashboard name or "(not set)" if no homebrew dashboard is setup. The name is currently pulled from the file name of the dashboard xex (ex: Aurora.xex -> "Aurora") but I'll make this configurable via the settings app later on. The Xbox Home button will always take you back to the MS dashboard.

The Settings tab of the guide will contain a "Softmod Settings" button which will take you to the softmod settings app where you can configure a homebrew dashboard, choose boot animation settings, etc.

Flash Write Protection

Peer pressure has a flash write protection mechanism which prevents writing to the console NAND with the exception of the console configuration files. This is to prevent people from messing up their console by trying to copy hacked up system files which will prevent their console from booting. This can be temporary disabled until the next reboot in the softmod settings app. I recommend not using this feature unless you're 100% sure you understand what you're doing and the risks associated with modifying your nand image on a soft modded console.

Additionally trying to run tools like Flash360 or Simple 360 Nand Flasher will display a warning message to inform the user that the application will write to the system NAND and could prevent their console from booting if used incorrectly.

Booting Xell

By default booting the console by pressing the eject button (without the sync button) will boot the console normally. You can change this behavior in the System menu of the Softmod Settings app. You'll also need to setup the boot.ini file located in the Hdd1:\PeerPressure\OtherOS folder. This ini file can contain one or more boot options that point to different xell binaries which you'll be able to select in the softmod settings app. The idea is you can have multiple xell binaries (to boot linux, etc.) and choose which one you want to boot via the eject button. The boot.ini file contains additional documentation for how to setup the boot option entries.

DLL Sideloading

Any time a game is loaded peer pressure will search for a sideload ini file in the following locations:

  1. <game xex directory>\sideload.ini
  2. <game xex directory>\<title id>.ini
  3. Hdd1:\PeerPressure\SideLoading\<title id>.ini

Where <game xex directory> is the directory containing the game xex file or package (GOD, arcade, etc.) the game xex is in, and <title id> is the title id of the game. For example:

  • Hdd1:\games\halo 3\sideload.ini
  • Hdd1:\games\halo 3\4d5307e6.ini
  • Hdd1:\Content\0000000000000000\58410A34\000D0000\sideload.ini
  • Hdd1:\Content\0000000000000000\58410A34\000D0000\58410a34.ini
  • Hdd1:\PeerPressure\SideLoading\58410a34.ini

The first file found that contains an applicable dll config entry will be used to side load the specified dll into the xex process. The side load config files allow you to specify the title id, media id, and version numbers for a dll you want to load any time a specific game is loaded. This can be used to load homebrew dlls that do things like re-implement online services for games, fix bugs, etc., any time that game is loaded. Using the various config options you can specify which versions of the game the dll applies to. For more information on the config file format see the example provided at Hdd1:\PeerPressure\SideLoading\SideLoad.ini.

When a dll config entry that matches the game execution id is found the dll specified by that config entry will be loaded. The dll is loaded after the game xex has been loaded into memory and before the game entry point is called (before CRT init for the game has run). So your dll can hook whatever it wants in the game xex before anything executes. When the game starts up a toast notification will appear informing you the dll was loaded successfully. If you don't see the notification then the dll was not loaded and you should double check your config file.

Your homebrew dll must be compiled as a title dll, NOT a system dll, it will be unloaded when the game exits. Your dll should NOT hook anything outside of the game xex files (ex: the kernel, xam, etc.), as it will cause crashes and interfere with other peer pressure features. This feature is not intended to be used as a general trainer launcher but can be used for things like RB3Enhanced, or patching older dashboards (blades/NXE) to work on the 17559 kernel.

Clone this wiki locally