Stop
diff --git a/webroot/js/main.js b/webroot/js/main.js
index 94dee52..ab9e692 100644
--- a/webroot/js/main.js
+++ b/webroot/js/main.js
@@ -1,11 +1,15 @@
-import { fullScreen, exec, toast } from './kernelsu.js';
+import { fullScreen, exec, toast } from './kernelsu.js'
+
+const EXPECTED = 1
+const UNEXPECTED_FAIL = 2
(async () => {
- const loading_screen = document.getElementById('loading_screen')
-
fullScreen(true)
+ const loading_screen = document.getElementById('loading_screen')
+
const rootCss = document.querySelector(':root')
+
const rezygisk_state = document.getElementById('rezygisk_state')
const rezygisk_settings = document.getElementById('rezygisk_settings')
const rezygisk_icon_state = document.getElementById('rezygisk_icon_state')
@@ -13,47 +17,74 @@ import { fullScreen, exec, toast } from './kernelsu.js';
const code_version = document.getElementById('version_code')
const root_impl = document.getElementById('root_impl')
- const is_zygote32_injected = document.getElementById('is_zygote32_injected')
- const is_zygote64_injected = document.getElementById('is_zygote64_injected')
+ const zygote64_div = document.getElementById('zygote64')
+ const zygote32_div = document.getElementById('zygote32')
+
+ const daemon64_div = document.getElementById('daemon64')
+ const daemon32_div = document.getElementById('daemon32')
+
+ const zygote32_status_div = document.getElementById('zygote32_status')
+ const zygote64_status_div = document.getElementById('zygote64_status')
+
+ let zygote64_status = EXPECTED
+ let zygote32_status = EXPECTED
const ptrace64Cmd = await exec('/data/adb/modules/zygisksu/bin/zygisk-ptrace64 info')
if (ptrace64Cmd.errno === 0) {
const lines = ptrace64Cmd.stdout.split('\n')
+ /* INFO: Root implementation and ReZygisk version parsing */
code_version.innerHTML = lines[0].split('Tracer ')[1].split('-')[0]
-
root_impl.innerHTML = lines[4].split(': ')[1]
- is_zygote64_injected.innerHTML = lines[5].split(': ')[1] === 'yes' ? 'Injected' : 'Not Injected'
+ zygote64_status_div.innerHTML = lines[5].split(': ')[1] === 'yes' ? 'Injected' : 'Not Injected'
+
+ if (zygote64_status_div.innerHTML === 'Not Injected') zygote64_status = UNEXPECTED_FAIL
+ } else if (ptrace64Cmd.stderr.includes('cannot execute binary file: Exec format error')) {
+ zygote64_div.remove()
+ daemon64_div.remove()
} else {
toast(`zygisk-ptrace64 error (${ptrace64Cmd.errno}): ${ptrace64Cmd.stderr}`)
+
+ zygote64_status = UNEXPECTED_FAIL
}
const ptrace32Cmd = await exec('/data/adb/modules/zygisksu/bin/zygisk-ptrace32 info')
if (ptrace32Cmd.errno === 0) {
- const lines32 = ptrace32Cmd.stdout.split('\n')
+ const lines = ptrace32Cmd.stdout.split('\n')
- is_zygote32_injected.innerHTML = lines32[5].split(': ')[1] === 'yes' ? 'Injected' : 'Not Injected'
+ /* INFO: Root implementation and ReZygisk version parsing -- Necessary if 64-bit fails */
+ code_version.innerHTML = lines[0].split('Tracer ')[1].split('-')[0]
+ root_impl.innerHTML = lines[4].split(': ')[1]
+
+ zygote32_status_div.innerHTML = lines[5].split(': ')[1] === 'yes' ? 'Injected' : 'Not Injected'
+
+ if (zygote32_status_div.innerHTML === 'Not Injected') zygote32_status = UNEXPECTED_FAIL
+ } else if (ptrace32Cmd.stderr.includes('not executable: 32-bit ELF file')) {
+ zygote32_div.remove()
+ daemon32_div.remove()
} else {
toast(`zygisk-ptrace32 error (${ptrace32Cmd.errno}): ${ptrace32Cmd.stderr}`)
+
+ zygote32_status = UNEXPECTED_FAIL
}
- if (is_zygote32_injected.innerHTML === 'Not Injected' && is_zygote64_injected.innerHTML === 'Not injected') {
- rezygisk_state.innerHTML = 'ReZygisk is not functioning!'
- } else if (is_zygote32_injected.innerHTML === 'Injected' && is_zygote64_injected.innerHTML === 'Injected') {
+ if (zygote32_status === EXPECTED && zygote64_status === EXPECTED) {
rezygisk_state.innerHTML = 'ReZygisk is fully functioning!'
rezygisk_settings.removeAttribute('style')
rootCss.style.setProperty('--bright', '#3a4857')
rezygisk_icon_state.innerHTML = '

'
- } else {
+ } else if (zygote64_status === EXPECTED ^ zygote32_status.innerHTML === EXPECTED) {
rezygisk_state.innerHTML = 'ReZygisk is partially functioning!'
rezygisk_settings.removeAttribute('style')
rootCss.style.setProperty('--bright', '#766000')
rezygisk_icon_state.innerHTML = '

'
+ } else {
+ rezygisk_state.innerHTML = 'ReZygisk is not functioning!'
}
const modules_card = document.getElementById('modules_card')
@@ -83,8 +114,8 @@ import { fullScreen, exec, toast } from './kernelsu.js';
}
const bitsUsed = []
- if (lsZygiskCmd.stdout.split('\n').find((line) => [ 'armeabi-v7a.so', 'x86.so' ].includes(line))) bitsUsed.push('32 bit')
- if (lsZygiskCmd.stdout.split('\n').find((line) => [ 'arm64-v8a.so', 'x86_64.so' ].includes(line))) bitsUsed.push('64 bit')
+ if (zygote32_status === EXPECTED && lsZygiskCmd.stdout.split('\n').find((line) => [ 'armeabi-v7a.so', 'x86.so' ].includes(line))) bitsUsed.push('32 bit')
+ if (zygote64_status === EXPECTED && lsZygiskCmd.stdout.split('\n').find((line) => [ 'arm64-v8a.so', 'x86_64.so' ].includes(line))) bitsUsed.push('64 bit')
if (bitsUsed.length === 0) bitsUsed.push('N/A')