---
title: 'Old notes'
url: 'https://bb10.root.sx/'
markdown: 'https://bb10.root.sx/index.md'
date: '2026-05-15'
description: "Some notes about BlackBerry 10 security Important I would like to express my sincere gratitude to guizmox for his support! Thanks to him, I was able to continue this work in 2026 and finally obtain root access. I am also extremely grateful to sw7ft, https://www.youtube.com/@sw7ft-tech. If you want, you can support me via Patreon or PayPal: oleksandr@e.email Caution This content is intended strictly for educational and research purposes only. Commercial use without authorization is strictly prohibited! Warning The software and/or article (\"the Product\") is provided \"as is,\" without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, non-infringement, or accuracy. In no event shall the author(s), developer(s), or distributor(s) be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the Product or the use or other dealings in the Product. The user assumes all responsibility for the use of the Product and acknowledges that the Product may not be error-free or appropriate for all purposes or environments. No advice or information, whether oral or written, obtained by you from the author(s) or through the Product shall create any warranty not expressly stated herein. Use the Product at your own risk. Preparatory steps The RAM-Loader command 0xF7 is used to write QCFM data to flash memory and also calculates the SHA-256 hash of that data. The 0xC040 (DO COMPLETE) command checks whether the QCFM data signature is valid and sets a flag that prevents the device from booting normally if the signature is invalid. However, since the flag is global, we can first flash modified data and then restore the original data to clear the flag. Unfortunately, only the user partition can be modified. Because rfs_validator executable inside ifs-image checks validity of radio and os partitions. The integrity of the ifs-image is verified by the bootloader. At the time of this research, only QNX provided full support for the Power-Safe (QNX6) filesystem. The Sachesi and DBBT utilities only support file and directory extraction. Therefore, I decided to develop my own library for read/write access to QNX6 images. User partition contains \"permanent\" data for PPS and preinstalled applications. But unfortunately it mounted with nosuid flag. RIM used multiple programming languages to build the BlackBerry 10 platform. While trying to find a way to remove Amazon components, I came across the following piece of code: BASHCopybarops_apk_install () { [ \"$(PPS_VALUE /pps/system/perimeter/settings/1000-personal/policy 'policy_block_apps_install_other_sources')\" == \"1\" ] && Info \"APK install blocked by IT policy\" && return [[ \"$(PPS_VALUE_EXISTS /pps/system/perimeter/status 'corpliable_enterprise')\" != \"\" ]] && Info \"APK install blocked on corporate liable devices\" && return local apksrc=\"${BASEFS}/usr/apk\" for app in $(ls ${apksrc}); do if [ -e \"${apksrc}/${app}/.aka\" ]; then while read app_alias; do Info \"If applicable, removig ${app_alias}\" sud_uninstall_package $app_alias done < \"${apksrc}/${app}/.aka\" fi sud_is_permanent ${app}.andr local ret=$? if (( ${ret} == 2 )); then Info \"Installing ${app}\" cp -r ${apksrc}/${app} /var/android/ echo \"action::install_apk\\npackage_location::/var/android/${app}\\nextras::source::apk\\n\" > /pps/system/installer/upd/current/${app} elif (( ${ret} == 1 )); then cmp_version \"${OS_VERSION}\" \"127.0.0.0\" if (( ${?} == 2 )); then Info \"Setting Permanent Flag for ${app}\" sud_set_permanent_flag ${app}.andr true fi fi done } Here we see that unpacked bar files installed with \"install_apk\" command sended to an pps endpoint. And Amazon packages are unsigned as other system packages from /usr/hmi folder. After some more digging i found that code: PYTHONCopydef _install_txn(self, txn): self._check_pkgname_unique(txn) olddn = getattr(self, 'dname', None) bar = txn.barfile() if txn['action'] != 'install_apk': try: bar.checksigs() except BarFileUnsignedError: if not self._is_debuggable(bar.manifest()): raise Yes, bar signature checks is not performed for install_apk command. Also, bar verification skipped for bar-files which Package-Id started with 'andrB' prefix. And no additional check is preformed to determine if package is really contain just apk. And thus we can make any type of package. PYTHONCopyif not databar: bar = UnpackedBar(path) if 'Package-Id' in self and self['Package-Id']: packageId = self['Package-Id'] else: mf = bar.manifest() packageId = mf['Package-Id'] if not packageId.startswith('andrB'): bar.verify(register=True) PYTHONCopywith uidgidcontext(uid=uid, gid=gid): if txn['action'] == 'install_apk': self._copy(txn['package_location'], path, umask=23 if not self._devmode else 7, progress=progress) self.enforce_perms(path) else: if bar.manifest()['Package-Type'] != 'patch': self._unzip(bar, path, umask=23 if not self._devmode else 7, progress=progress) else: self._patch(bar, path, umask=23 if not self._devmode else 7, progress=progress) if not self._is_sysdata() and not self._is_deviceconfig(): self._create_hardlink(path) self._create_symlink() self._setup(path) if self._is_sysdata(): UnpackedSystemDataBar(path, linkroot=self._pfm.root).sysdata_prot() Considering this we can build sysdata package which able to mount read-only qnx6 and rcfs images to arbitrary path. So i make dummy python program to produce a multiple copies of binary (which set uid, euid, gid, egid and launch shell) with different uid, gid and suid, sgid attributes setted. Pack such files in rcfs image using mkrcfs utility from qnx sdk. And make an device-configuration type bar-file. Than made propper changes 'var' folder into qnx6 partition image. After flashing we are able to impersonate any user & group except root from devuser ssh shell. Real root The problem with the suid bit is that the system does not allow any file that is not added to pathtrust to be run as root. Fortunately for us, RIM has added Android subsystem files to the list of trusted files. There may be a simpler option, but for now I will describe the one I came up with first. Then I launched the installed Amazon app. While it was launching, I simultaneously launched a user enumeration program and discovered that the epolld and logd processes belonging to the Android subsystem were running. These commands are called from the //apps/sys.android.gYABgKAOw1czN6neiAT72SGO.ns/native/scripts/start-android-core.sh Additionally, I analyzed /apps/sys.android.gYABgKAOw1czN6neiAT72SGO.ns/native/sbin/android_launcher and found that it can install ANY symlinks. This led me to think that I could try to use a symlink to replace the file that runs under root with a file from the Android subsystem. Earlier, I found that Deckard has a switchzone command that switches os1<=>os2, radio1<=>radio2, and calls the scripts /scripts/migration_logging.sh and /scripts/ota_info_pps.sh with root privileges. /apps/sys.android.gYABgKAOw1czN6neiAT72SGO.ns/native/scripts/ls-oom-adj.sh did not seem important to me, so I decided to replace ota_info_pps.sh with it. Since applications are only checked when the system starts up we can definitely can change their data. So i add BASHCopyln -sPf /apps/sys.android.gYABgKAOw1czN6neiAT72SGO.ns/native/scripts/ls-oom-adj.sh /base/scripts/ota_info_pps.sh into start-android-core.sh and [codesh lang=\"bash\" slay qconn /base/usr/sbin/qconn port=9090 [/codesh] into ls-oom-adj.sh After that, I launched Amazon again and saw that the symlink had been created! All that remains is to check whether qconn will run as root. To do this, I run __upd and obtain privileges to write to /pps/system/installer/upd/current. Then I execute: echo \"@sz\\naction::switchzone\\nsession::0\\nzone:json:{\\\"radio\\\":\\\"true\\\",\\\"os\\\":\\\"true\\\"}\\n\" > /pps/system/installer/upd/current/sz I check and see that qconn has started with root privileges! Using this method, I successfully downloaded and launched telnetd, which allowed me to continue exploring the system in a more convenient way. 07.02.2026 - PathTrust successfully unlocked 21.02.2026 - The patch implementing the MMC_IOC_CMD analogue for the mmc driver is finally ready, and the EMMC firmware has been successfully retrieved. 09.03.2026 - Autostart for user scripts and, accordingly, automatic root acquisition have been achieved. 12.03.2026 - The test phone was killed by accidental MCT + NVRAM overwrite. 16.03.2026 - Public updates to the project have been suspended due to a lack of interest and feedback. 20.03.2026 - To disable the installation of Amazon and the Amazon Appstore, you need to create the file /var/pps/system/perimeter/settings/1000-personal/policy with the following content: BASHCopy@policy policy_block_apps_install_other_sources::1 other launcher does not perform verification if the manifest is located on rcfs. CCopyvoid is_RCFS(int fd) { int ret; int iVar1; statvfs64 stat; iVar1 = *(int *)PTR___stack_chk_guard_109fbc00; ret = fstatvfs(fd,(statvfs *)&stat); if (iVar1 == *(int *)PTR___stack_chk_guard_109fbc00) { return; } __stack_chk_fail(ret == 0 && stat.f_fsid == DWORD_109fca20); } CCopyiVar1 = fstat(mft_fd,auStack_70); if (iVar1 == 0) { app_ctx->field1544_0x608 = local_50; } if (1 < *(int *)PTR_log_verbosity_109fbd70) { msglog(6,\"%s: reading BAR manifest\",pcVar5); } iVar1 = is_RCFS(mft_fd); if (iVar1 != 0) { app_ctx->trusted = app_ctx->trusted | 1; } Analysing next piece of code and using prior knowledge PYTHONCopyif platform.system() == 'QNX': if platform.processor() != 'x86': winchester2 = True for m in platform.machine().split('_'): if winchester_match.match(m): winchester2 = False break if winchester2: name = 'winchester2' else: name = 'winchester' try: exec('import deckard.platform.%s' % name) config.set('platform', 'module', name) except ImportError: warnings.warn('unable to load %s' % name) raise config.set('installer', 'module', 'signed') else: config.set('platform', 'module', 'simulator') config.set('installer', 'module', 'unsigned') else: installer_module = 'signed' if os.getenv('SWCFG_ALLOW_UNSIGNED_APPS', 'false') == 'true': installer_module = 'unsigned' config.set('platform', 'module', 'dummy') config.set('installer', 'module', installer_module) config.read('/etc/system/config/sud.cfg') we can make /etc/system/config/sud.cfg looks like: INICopy[platform] module = winchester2 [installer] module = unsigned which should skip bar verification. Addons: BlackBerry 10 MultiTool alpha(v0.5.9.999) 04.01.2026 BlackBerry 10 MultiTool (v0.5.0.5) 03.09.2025 BlackBerry 10 MultiTool (v0.2.1.3) 24.07.2025 BlackBerry 10 MultiTool (v0.1.0.10) BB10 downgrade tool with src asroot src ramloader cmds RSA signature forge tool (PoC) PathTrust unlocker(8960 10.3.3.3216) Disable BAR verification for launcher (8960 10.3.3.3216) Disable BAR verification for launcher (universal) emmc firmware emmc driver patcher + emmc fw reader Bibliography: Alex Plaskett - QNX Security Whitepaper"
---

# Some notes about BlackBerry 10 security

 Important

I would like to express my sincere gratitude to [guizmox](https://www.reddit.com/user/guizmox44/) for his support! Thanks to him, I was able to continue this work in 2026 and finally obtain root access.

I am also extremely grateful to [sw7ft](https://patreon.com/sw7ft), <https://www.youtube.com/@sw7ft-tech>.

If you want, you can support me via [Patreon](https://www.patreon.com/c/Oleksandr__) or PayPal: <oleksandr@e.email>

 Caution

This content is intended strictly for educational and research purposes only. Commercial use without authorization is strictly prohibited!

 Warning

The software and/or article ("the Product") is provided "as is," without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose, non-infringement, or accuracy.

In no event shall the author(s), developer(s), or distributor(s) be liable for any claim, damages, or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the Product or the use or other dealings in the Product.

The user assumes all responsibility for the use of the Product and acknowledges that the Product may not be error-free or appropriate for all purposes or environments. No advice or information, whether oral or written, obtained by you from the author(s) or through the Product shall create any warranty not expressly stated herein.

Use the Product at your own risk.

## Preparatory steps

The RAM-Loader command `0xF7` is used to write QCFM data to flash memory and also calculates the SHA-256 hash of that data. The `0xC040` (DO COMPLETE) command checks whether the QCFM data signature is valid and sets a flag that prevents the device from booting normally if the signature is invalid. However, since the flag is global, we can first flash modified data and then restore the original data to clear the flag.

Unfortunately, only the user partition can be modified. Because **rfs\_validator** executable inside ifs-image checks validity of radio and os partitions. The integrity of the `ifs-image` is verified by the bootloader.

At the time of this research, only QNX provided full support for the Power-Safe (QNX6) filesystem. The Sachesi and DBBT utilities only support file and directory extraction. Therefore, I decided to develop my own library for read/write access to QNX6 images.

User partition contains "permanent" data for [PPS](https://www.qnx.com/developers/docs/6.5.0SP1.update/com.qnx.doc.neutrino_pps/pps.html) and preinstalled applications. But unfortunately it mounted with `nosuid` flag.

RIM used multiple programming languages to build the BlackBerry 10 platform.

While trying to find a way to remove Amazon components, I came across the following piece of code:

BASH

```
<span class="line"><span class="token" style="color: #622cbc;;--phiki-dark-color: #dbb7ff">barops_apk_install</span><span class="token"> </span><span class="token">(</span><span class="token">)</span><span class="token"> </span><span class="token">{</span><span class="token">
</span></span><span class="line"><span class="token">   </span><span class="token">[</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">$(</span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">PPS_VALUE</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">/pps/system/perimeter/settings/1000-personal/policy</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">policy_block_apps_install_other_sources</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">)</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">==</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">1</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token"> </span><span class="token">]</span><span class="token"> </span><span class="token">&&</span><span class="token"> </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">Info</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">APK install blocked by IT policy</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token"> </span><span class="token">&&</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">return</span><span class="token">
</span></span><span class="line"><span class="token">   </span><span class="token">[</span><span class="token">[</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">$(</span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">PPS_VALUE_EXISTS</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">/pps/system/perimeter/status</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">corpliable_enterprise</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">)</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">!=</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token"> </span><span class="token">]</span><span class="token">]</span><span class="token"> </span><span class="token">&&</span><span class="token"> </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">Info</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">APK install blocked on corporate liable devices</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token"> </span><span class="token">&&</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">return</span><span class="token">
</span></span><span class="line"><span class="token">   </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">local</span><span class="token"> </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">apksrc</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">$</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">BASEFS</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">}</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">/usr/apk</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token">
</span></span><span class="line"><span class="token">   </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">for</span><span class="token"> </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">in</span><span class="token"> </span><span class="token">$(</span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">ls</span><span class="token"> </span><span class="token">$</span><span class="token">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">apksrc</span><span class="token">}</span><span class="token">)</span><span class="token">;</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">do</span><span class="token">
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">[</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">-e</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">$</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">apksrc</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">}</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">/</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">$</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">}</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">/.aka</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token"> </span><span class="token">]</span><span class="token">;</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">then</span><span class="token">
</span></span><span class="line"><span class="token">           </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">while</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">read</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">app_alias</span><span class="token">;</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">do</span><span class="token">
</span></span><span class="line"><span class="token">               </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">Info</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">If applicable, removig </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">$</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app_alias</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">}</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token">
</span></span><span class="line"><span class="token">               </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">sud_uninstall_package</span><span class="token"> </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">$</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app_alias</span><span class="token">
</span></span><span class="line"><span class="token">           </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">done</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492"><</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">$</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">apksrc</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">}</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">/</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">$</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">}</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">/.aka</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token">
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">fi</span><span class="token">
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">sud_is_permanent</span><span class="token"> </span><span class="token">$</span><span class="token">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app</span><span class="token">}</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">.andr</span><span class="token">
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">local</span><span class="token"> </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">ret</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">$</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">?</span><span class="token">
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">((</span><span class="token"> </span><span class="token">$</span><span class="token">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">ret</span><span class="token">}</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">==</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">2</span><span class="token"> </span><span class="token">))</span><span class="token">;</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">then</span><span class="token">
</span></span><span class="line"><span class="token">           </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">Info</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">Installing </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">$</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">}</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token">
</span></span><span class="line"><span class="token">           </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">cp</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">-</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">r</span><span class="token"> </span><span class="token">$</span><span class="token">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">apksrc</span><span class="token">}</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">/</span><span class="token">$</span><span class="token">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app</span><span class="token">}</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">/var/android/</span><span class="token">
</span></span><span class="line"><span class="token">           </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">echo</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">action::install_apk\npackage_location::/var/android/</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">$</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">}</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">\nextras::source::apk\n</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">></span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">/pps/system/installer/upd/current/</span><span class="token">$</span><span class="token">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app</span><span class="token">}</span><span class="token">
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">elif</span><span class="token"> </span><span class="token">((</span><span class="token"> </span><span class="token">$</span><span class="token">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">ret</span><span class="token">}</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">==</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">1</span><span class="token"> </span><span class="token">))</span><span class="token">;</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">then</span><span class="token">
</span></span><span class="line"><span class="token">           </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">cmp_version</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">$</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">OS_VERSION</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">}</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">127.0.0.0</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token">
</span></span><span class="line"><span class="token">           </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">((</span><span class="token"> </span><span class="token">$</span><span class="token">{</span><span class="token">?</span><span class="token">}</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">==</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">2</span><span class="token"> </span><span class="token">))</span><span class="token">;</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">then</span><span class="token">
</span></span><span class="line"><span class="token">               </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">Info</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">Setting Permanent Flag for </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">$</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">}</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token">
</span></span><span class="line"><span class="token">               </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">sud_set_permanent_flag</span><span class="token"> </span><span class="token">$</span><span class="token">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app</span><span class="token">}</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">.andr</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">true</span><span class="token">
</span></span><span class="line"><span class="token">           </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">fi</span><span class="token">
</span></span><span class="line"><span class="token">       </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">fi</span><span class="token">
</span></span><span class="line"><span class="token">   </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">done</span><span class="token">
</span></span><span class="line"><span class="token">}</span><span class="token">
</span></span>
```

Here we see that unpacked bar files installed with "install\_apk" command sended to an pps endpoint. And Amazon packages are unsigned as other system packages from /usr/hmi folder. After some more digging i found that code:

PYTHON

```
<span class="line"><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">def</span><span class="token"> </span><span class="token" style="color: #622cbc;;--phiki-dark-color: #dbb7ff">_install_txn</span><span class="token">(</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">self</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">txn</span><span class="token">)</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_check_pkgname_unique</span><span class="token">(</span><span class="token">txn</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">olddn</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">getattr</span><span class="token">(</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">dname</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">None</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">bar</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token">txn</span><span class="token">.</span><span class="token">barfile</span><span class="token">(</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">txn</span><span class="token">[</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">action</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">]</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">!=</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">install_apk</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">try</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token">bar</span><span class="token">.</span><span class="token">checksigs</span><span class="token">(</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">except</span><span class="token"> </span><span class="token">BarFileUnsignedError</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">not</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_is_debuggable</span><span class="token">(</span><span class="token">bar</span><span class="token">.</span><span class="token">manifest</span><span class="token">(</span><span class="token">)</span><span class="token">)</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">                </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">raise</span><span class="token">
</span></span>
```

Yes, bar signature checks is not performed for install\_apk command.

Also, bar verification skipped for bar-files which Package-Id started with 'andrB' prefix. And no additional check is preformed to determine if package is really contain just apk. And thus we can make *any* type of package.

PYTHON

```
<span class="line"><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">not</span><span class="token"> </span><span class="token">databar</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">bar</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token">UnpackedBar</span><span class="token">(</span><span class="token">path</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">Package-Id</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">in</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">and</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">[</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">Package-Id</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">]</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">packageId</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">[</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">Package-Id</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">]</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">else</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">mf</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token">bar</span><span class="token">.</span><span class="token">manifest</span><span class="token">(</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">packageId</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token">mf</span><span class="token">[</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">Package-Id</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">]</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">not</span><span class="token"> </span><span class="token">packageId</span><span class="token">.</span><span class="token">startswith</span><span class="token">(</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">andrB</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">)</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">bar</span><span class="token">.</span><span class="token">verify</span><span class="token">(</span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">register</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">True</span><span class="token">)</span><span class="token">     
</span></span>
```

PYTHON

```
<span class="line"><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">with</span><span class="token"> </span><span class="token">uidgidcontext</span><span class="token">(</span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">uid</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token">uid</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">gid</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token">gid</span><span class="token">)</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">txn</span><span class="token">[</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">action</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">]</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">==</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">install_apk</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_copy</span><span class="token">(</span><span class="token">txn</span><span class="token">[</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">package_location</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">]</span><span class="token">,</span><span class="token"> </span><span class="token">path</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">umask</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">23</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">not</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_devmode</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">else</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">7</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">progress</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token">progress</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">enforce_perms</span><span class="token">(</span><span class="token">path</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">else</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">bar</span><span class="token">.</span><span class="token">manifest</span><span class="token">(</span><span class="token">)</span><span class="token">[</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">Package-Type</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">]</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">!=</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">patch</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_unzip</span><span class="token">(</span><span class="token">bar</span><span class="token">,</span><span class="token"> </span><span class="token">path</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">umask</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">23</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">not</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_devmode</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">else</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">7</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">progress</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token">progress</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">else</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_patch</span><span class="token">(</span><span class="token">bar</span><span class="token">,</span><span class="token"> </span><span class="token">path</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">umask</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">23</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">not</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_devmode</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">else</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">7</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">progress</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token">progress</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">not</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_is_sysdata</span><span class="token">(</span><span class="token">)</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">and</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">not</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_is_deviceconfig</span><span class="token">(</span><span class="token">)</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_create_hardlink</span><span class="token">(</span><span class="token">path</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_create_symlink</span><span class="token">(</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_setup</span><span class="token">(</span><span class="token">path</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_is_sysdata</span><span class="token">(</span><span class="token">)</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">UnpackedSystemDataBar</span><span class="token">(</span><span class="token">path</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">linkroot</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">self</span><span class="token">.</span><span class="token">_pfm</span><span class="token">.</span><span class="token">root</span><span class="token">)</span><span class="token">.</span><span class="token">sysdata_prot</span><span class="token">(</span><span class="token">)</span><span class="token">
</span></span>
```

Considering this we can build **sysdata** package which able to mount read-only qnx6 and rcfs images to arbitrary path.

So i make [dummy python program](https://bb10.root.sx/create_sploits.py) to produce a multiple copies of binary (which set uid, euid, gid, egid and launch shell) with different uid, gid and suid, sgid attributes setted. Pack such files in rcfs image using mkrcfs utility from qnx sdk. And make an **device-configuration** type bar-file. Than made propper changes ['var' folder](https://bb10.root.sx/getroot.zip) into qnx6 partition image. After flashing we are able to impersonate any user & group except root from devuser ssh shell.

## Real root

The problem with the suid bit is that the system does not allow any file that is not added to pathtrust to be run as root. Fortunately for us, RIM has added Android subsystem files to the list of trusted files. There may be a simpler option, but for now I will describe the one I came up with first.

Then I launched the installed Amazon app. While it was launching, I simultaneously launched a user enumeration program and discovered that the **epolld** and **logd** processes belonging to the Android subsystem were running. These commands are called from the //apps/sys.android.gYABgKAOw1czN6neiAT72SGO.ns/native/scripts/start-android-core.sh

Additionally, I analyzed **/apps/sys.android.gYABgKAOw1czN6neiAT72SGO.ns/native/sbin/android\_launcher** and found that it can install *ANY* symlinks. This led me to think that I could try to use a symlink to replace the file that runs under root with a file from the Android subsystem.

Earlier, I found that Deckard has a switchzone command that switches os1<=>os2, radio1<=>radio2, and calls the scripts **/scripts/migration\_logging.sh** and **/scripts/ota\_info\_pps.sh** with root privileges.

**/apps/sys.android.gYABgKAOw1czN6neiAT72SGO.ns/native/scripts/ls-oom-adj.sh** did not seem important to me, so I decided to replace **ota\_info\_pps.sh** with it.

Since applications are only checked when the system starts up we can definitely can change their data.

So i add

BASH

```
<span class="line"><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">ln</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">-</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">sPf</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">/apps/sys.android.gYABgKAOw1czN6neiAT72SGO.ns/native/scripts/ls-oom-adj.sh</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">/base/scripts/ota_info_pps.sh</span><span class="token">
</span></span>
```

into start-android-core.sh

and \[codesh lang="bash" slay qconn /base/usr/sbin/qconn port=9090

[/codesh] into **ls-oom-adj.sh**

After that, I launched Amazon again and saw that the symlink had been created! All that remains is to check whether qconn will run as root. To do this, I run **\_\_upd** and obtain privileges to write to /pps/system/installer/upd/current. Then I execute:

**echo "@sz\\naction::switchzone\\nsession::0\\nzone:json:{\\"radio\\":\\"true\\",\\"os\\":\\"true\\"}\\n" > /pps/system/installer/upd/current/sz**

I check and see that qconn has started with root privileges!

Using this method, I successfully downloaded and launched telnetd, which allowed me to continue exploring the system in a more convenient way.

**07.02.2026** - PathTrust successfully unlocked

![pathtrust](https://bb10.root.sx/user/pages/02.old-notes/pathtrust.gif "pathtrust")

**21.02.2026** - The patch implementing the MMC\_IOC\_CMD analogue for the mmc driver is finally ready, and the EMMC firmware has been successfully retrieved. ![samdunk](https://bb10.root.sx/user/pages/02.old-notes/samdunk.gif "samdunk")![sam_emmc](https://bb10.root.sx/user/pages/02.old-notes/sam_emmc.png "sam_emmc")

**09.03.2026** - Autostart for user scripts and, accordingly, automatic root acquisition have been achieved.

**12.03.2026** - The test phone was killed by accidental MCT + NVRAM overwrite.

**16.03.2026** - Public updates to the project have been suspended due to a lack of interest and feedback.

**20.03.2026** - To disable the installation of Amazon and the Amazon Appstore, you need to create the file **/var/pps/system/perimeter/settings/1000-personal/policy** with the following content:

BASH

```
<span class="line"><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">@policy</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">policy_block_apps_install_other_sources::1</span><span class="token">
</span></span>
```

## other

launcher does not perform verification if the manifest is located on rcfs.

C

```
<span class="line"><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">void</span><span class="token"> </span><span class="token" style="color: #622cbc;;--phiki-dark-color: #dbb7ff">is_RCFS</span><span class="token">(</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">int</span><span class="token"> </span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">fd</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">  </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">int</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> ret</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">;</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">  </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">int</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> iVar1</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">;</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">  statvfs64 stat</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">;</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">  iVar1 </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">*</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">(</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">int</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">*</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">)</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">PTR___stack_chk_guard_109fbc00</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">;</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">  ret </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #622cbc;;--phiki-dark-color: #dbb7ff">fstatvfs</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">(</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">fd</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">,</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">(</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">statvfs </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">*</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">)</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">&</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">stat</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">)</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">;</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">  </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">(</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">iVar1 </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">==</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">*</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">(</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">int</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">*</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">)</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">PTR___stack_chk_guard_109fbc00</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">)</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">    </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">return</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">;</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">  </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">}</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">  </span><span class="token" style="color: #622cbc;;--phiki-dark-color: #dbb7ff">__stack_chk_fail</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">(</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">ret </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">==</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">0</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">&&</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">stat</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">.</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">f_fsid</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">==</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> DWORD_109fca20</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">)</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">;</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">}</span><span class="token">
</span></span>
```

C

```
<span class="line"><span class="token">iVar1 </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token" style="color: #622cbc;;--phiki-dark-color: #dbb7ff">fstat</span><span class="token">(</span><span class="token">mft_fd</span><span class="token">,</span><span class="token">auStack_70</span><span class="token">)</span><span class="token">;</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">(</span><span class="token">iVar1 </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">==</span><span class="token"> </span><span class="token">0</span><span class="token">)</span><span class="token"> </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">  </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app_ctx</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">-></span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">field1544_0x608</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> local_50</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">;</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">}</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">(</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">1</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492"><</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">*</span><span class="token">(</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">int</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">*</span><span class="token">)</span><span class="token">PTR_log_verbosity_109fbd70</span><span class="token">)</span><span class="token"> </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">  </span><span class="token" style="color: #622cbc;;--phiki-dark-color: #dbb7ff">msglog</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">(</span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">6</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">,</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">%s</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">: reading BAR manifest</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">"</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">,</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">pcVar5</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">)</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">;</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">}</span><span class="token">
</span></span><span class="line"><span class="token">iVar1 </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token" style="color: #622cbc;;--phiki-dark-color: #dbb7ff">is_RCFS</span><span class="token">(</span><span class="token">mft_fd</span><span class="token">)</span><span class="token">;</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">(</span><span class="token">iVar1 </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">!=</span><span class="token"> </span><span class="token">0</span><span class="token">)</span><span class="token"> </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">{</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">  </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app_ctx</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">-></span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">trusted</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">app_ctx</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">-></span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">trusted</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">|</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">1</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">;</span><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">
</span></span><span class="line"><span class="token" style="color: #0e1116;;--phiki-dark-color: #f0f3f6">}</span><span class="token">
</span></span>
```

Analysing next piece of code and using prior knowledge

PYTHON

```
<span class="line"><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">platform</span><span class="token">.</span><span class="token">system</span><span class="token">(</span><span class="token">)</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">==</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">QNX</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">platform</span><span class="token">.</span><span class="token">processor</span><span class="token">(</span><span class="token">)</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">!=</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">x86</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">winchester2</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">True</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">for</span><span class="token"> </span><span class="token">m</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">in</span><span class="token"> </span><span class="token">platform</span><span class="token">.</span><span class="token">machine</span><span class="token">(</span><span class="token">)</span><span class="token">.</span><span class="token">split</span><span class="token">(</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">_</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">)</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">winchester_match</span><span class="token">.</span><span class="token">match</span><span class="token">(</span><span class="token">m</span><span class="token">)</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">                </span><span class="token">winchester2</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">False</span><span class="token">
</span></span><span class="line"><span class="token">                </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">break</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">winchester2</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token">name</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">winchester2</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">else</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token">name</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">winchester</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">try</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">exec</span><span class="token">(</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">import deckard.platform.</span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">%s</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">%</span><span class="token"> </span><span class="token">name</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token">config</span><span class="token">.</span><span class="token">set</span><span class="token">(</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">platform</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">module</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token">name</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">except</span><span class="token"> </span><span class="token" style="color: #023b95;;--phiki-dark-color: #91cbff">ImportError</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token">warnings</span><span class="token">.</span><span class="token">warn</span><span class="token">(</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">unable to load </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">%s</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">%</span><span class="token"> </span><span class="token">name</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">            </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">raise</span><span class="token">
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">config</span><span class="token">.</span><span class="token">set</span><span class="token">(</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">installer</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">module</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">signed</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">else</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">config</span><span class="token">.</span><span class="token">set</span><span class="token">(</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">platform</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">module</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">simulator</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">config</span><span class="token">.</span><span class="token">set</span><span class="token">(</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">installer</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">module</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">unsigned</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">else</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">installer_module</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">signed</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">if</span><span class="token"> </span><span class="token">os</span><span class="token">.</span><span class="token">getenv</span><span class="token">(</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">SWCFG_ALLOW_UNSIGNED_APPS</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">false</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">)</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">==</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">true</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">:</span><span class="token">
</span></span><span class="line"><span class="token">        </span><span class="token">installer_module</span><span class="token"> </span><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">=</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">unsigned</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">config</span><span class="token">.</span><span class="token">set</span><span class="token">(</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">platform</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">module</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">dummy</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">    </span><span class="token">config</span><span class="token">.</span><span class="token">set</span><span class="token">(</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">installer</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">module</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">,</span><span class="token"> </span><span class="token">installer_module</span><span class="token">)</span><span class="token">
</span></span><span class="line"><span class="token">config</span><span class="token">.</span><span class="token">read</span><span class="token">(</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">/etc/system/config/sud.cfg</span><span class="token" style="color: #032563;;--phiki-dark-color: #addcff">'</span><span class="token">)</span><span class="token">
</span></span>
```

we can make /etc/system/config/sud.cfg looks like:

INI

```
<span class="line"><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">[</span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">platform</span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">]</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">module</span><span class="token"> </span><span class="token">=</span><span class="token"> winchester2
</span></span><span class="line"><span class="token">
</span></span><span class="line"><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">[</span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">installer</span><span class="token" style="color: #702c00;;--phiki-dark-color: #ffb757">]</span><span class="token">
</span></span><span class="line"><span class="token" style="color: #a0111f;;--phiki-dark-color: #ff9492">module</span><span class="token"> </span><span class="token">=</span><span class="token"> unsigned
</span></span>
```

which should skip bar verification.

Addons:

1. [BlackBerry 10 MultiTool alpha(v0.5.9.999) 04.01.2026](https://bb10.root.sx/downloads/bb10mt/bb10mt_alpha.zip)
2. [BlackBerry 10 MultiTool (v0.5.0.5) 03.09.2025](https://bb10.root.sx/downloads/bb10mt/bb10mt.zip)
3. [BlackBerry 10 MultiTool (v0.2.1.3) 24.07.2025](https://bb10.root.sx/downloads/bb10mt/bb10mt_v0.2.1.3.zip)
4. [BlackBerry 10 MultiTool (v0.1.0.10)](https://bb10.root.sx/downloads/bb10mt/bb10mt_v0.1.0.10.zip)
5. [BB10 downgrade tool with src](https://bb10.root.sx/downloads/mod_nvram.zip)
6. [asroot src](https://bb10.root.sx/downloads/asroot.zip)
7. [ramloader cmds](https://bb10.root.sx/downloads/ramloader.txt)
8. [RSA signature forge tool (PoC)](https://bb10.root.sx/downloads/rsa_forge.py)
9. [PathTrust unlocker(8960 10.3.3.3216)](https://bb10.root.sx/downloads/unlock_path_trust.zip)
10. [Disable BAR verification for launcher (8960 10.3.3.3216)](https://bb10.root.sx/downloads/launcher_patch.zip)
11. [Disable BAR verification for launcher (universal)](https://bb10.root.sx/downloads/unu_launcher_patcher.zip)
12. [emmc firmware](https://bb10.root.sx/private/MAG2GA_fw.zip)
13. [emmc driver patcher + emmc fw reader](https://bb10.root.sx/private/sdmmc.zip)

Bibliography:

1. [Alex Plaskett](https://github.com/alexplaskett) - [QNX Security Whitepaper](https://raw.githubusercontent.com/alexplaskett/Publications/3882be08ad127996cf7eb86fe85ffa99e45860dc/mwri-qnx-security-whitepaper-2016-03-14.pdf)

---

## Navigation

- Previous: [GitHub](https://github.com/bb10root)
- Next: [Patreon](https://patreon.com/bb10root)
