diff --git a/webroot/index.html b/webroot/index.html index 1c26794..9f673bb 100644 --- a/webroot/index.html +++ b/webroot/index.html @@ -66,13 +66,13 @@
Root Implementation
Unknown
-
+
Zygote64
-
Unknown
+
Unknown
-
+
Zygote32
-
Unknown
+
Unknown
@@ -120,7 +120,7 @@
-
+
Daemon (32 bit)
Stop
@@ -129,7 +129,7 @@
-
+
Daemon (64 bit)
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')