Skip to content

Commit 269a4c5

Browse files
committed
drop superkey
1 parent 8ab259a commit 269a4c5

20 files changed

Lines changed: 30 additions & 271 deletions

File tree

module/boot_patch.sh

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,10 @@ ARCH=$(getprop ro.product.cpu.abi)
2626
# Load utility functions
2727
. "$MODPATH/util_functions.sh"
2828

29-
SUPERKEY="$1"
30-
BOOTIMAGE=$2
31-
FLASH_TO_DEVICE=$3
29+
BOOTIMAGE=$1
30+
FLASH_TO_DEVICE=$2
3231
shift 2
3332

34-
[ -z "$SUPERKEY" ] && { >&2 echo "! SuperKey empty"; exit 1; }
3533
[ -e "$BOOTIMAGE" ] || { >&2 echo "! $BOOTIMAGE does not exist"; exit 1; }
3634

3735
# Check for dependencies
@@ -64,7 +62,7 @@ mv kernel kernel.ori
6462
echo "- Patching kernel"
6563

6664
set -x
67-
kptools -p -i kernel.ori -S "$SUPERKEY" -k kpimg -o kernel "$@"
65+
kptools -p -i kernel.ori -k kpimg -o kernel "$@"
6866
patch_rc=$?
6967
set +x
7068

module/service.sh

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,18 @@ KPNDIR="/data/adb/kp-next"
55
PATH="$MODDIR/bin:$PATH"
66
CONFIG="$KPNDIR/package_config"
77
REHOOK="$(cat $KPNDIR/rehook)"
8-
key="$(cat $KPNDIR/key | base64 -d)"
98

10-
if [ -z "$key" ] || [ -z "$(kpatch $key hello)" ]; then
9+
if [ -z "$(kpatch hello)" ]; then
1110
touch "$MODDIR/unresolved"
1211
exit 0
1312
fi
1413

1514
for kpm in $KPNDIR/kpm/*.kpm; do
1615
[ -s "$kpm" ] || continue
17-
kpatch "$key" kpm load "$kpm" || rm -f "$kpm"
16+
kpatch kpm load "$kpm" || rm -f "$kpm"
1817
done
1918

20-
[ -n "$REHOOK" ] && [ "$REHOOK" -ge 0 ] && [ "$REHOOK" -le 2 ] && kpatch "$key" rehook $REHOOK
19+
[ -n "$REHOOK" ] && [ "$REHOOK" -ge 0 ] && [ "$REHOOK" -le 2 ] && kpatch rehook $REHOOK
2120

2221
until [ "$(getprop sys.boot_completed)" = "1" ]; do
2322
sleep 1
@@ -31,6 +30,6 @@ tail -n +2 "$CONFIG" | while IFS=, read -r pkg exclude allow uid; do
3130
UID=$(grep "^$pkg $uid" /data/system/packages.list | cut -d' ' -f2)
3231
# fallback to package name based
3332
[ -z "$UID" ] && UID=$(grep "^$pkg " /data/system/packages.list | cut -d' ' -f2)
34-
[ -n "$UID" ] && kpatch "$key" exclude_set "$UID" 1
33+
[ -n "$UID" ] && kpatch exclude_set "$UID" 1
3534
fi
3635
done

module/status.sh

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
MODDIR="/data/adb/modules/KPatch-Next"
44
KPNDIR="/data/adb/kp-next"
55
PATH="$MODDIR/bin:$PATH"
6-
key="$1"
76

87
PROP_FILE="$MODDIR/module.prop"
98
PROP_BAK="$PROP_FILE.bak"
@@ -35,20 +34,18 @@ fi
3534

3635
active="Status: active 😊"
3736
inactive="Status: inactive 😕"
38-
info="info: key incorrect, not set or kernel not patched yet ❌"
37+
info="info: kernel not patched yet ❌"
3938
string="$inactive | $info"
4039

41-
[ -z "$key" ] && key="$(cat $KPNDIR/key | base64 -d)"
42-
4340
until [ "$(getprop sys.boot_completed)" = "1" ]; do
4441
sleep 1
4542
done
4643

47-
if [ -n "$key" ] && kpatch "$key" hello >/dev/null 2>&1; then
48-
KPM_COUNT="$(kpatch "$key" kpm num 2>/dev/null || echo 0)"
44+
if kpatch hello >/dev/null 2>&1; then
45+
KPM_COUNT="$(kpatch kpm num 2>/dev/null || echo 0)"
4946
[ -z "$KPM_COUNT" ] && KPM_COUNT=0
5047

51-
REHOOK_MODE="$(kpatch "$key" rehook_status 2>/dev/null | awk '{print $NF}')"
48+
REHOOK_MODE="$(kpatch rehook_status 2>/dev/null | awk '{print $NF}')"
5249
[ -z "$REHOOK_MODE" ] && REHOOK_MODE="0"
5350

5451
string="$active | kpmodule: $KPM_COUNT 💉 | rehook: $REHOOK_MODE 🪝"

webui/index.html

Lines changed: 2 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,9 @@
9595
<md-ripple></md-ripple>
9696
<md-icon class="leading-icon"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="m344-60-76-128-144-32 14-148-98-112 98-112-14-148 144-32 76-128 136 58 136-58 76 128 144 32-14 148 98 112-98 112 14 148-144 32-76 128-136-58-136 58Zm136-220q17 0 28.5-11.5T520-320q0-17-11.5-28.5T480-360q-17 0-28.5 11.5T440-320q0 17 11.5 28.5T480-280Zm-40-160h80v-240h-80v240Z" /></svg></md-icon>
9797
<div class="home-card-text">
98-
<div class="home-card-title" data-i18n="status_not_installed_or_authenticated">Not installed or authenticated</div>
98+
<div class="home-card-title" data-i18n="status_not_installed">Not installed</div>
9999
<div class="home-card-subtitle" data-i18n="button_install">Click to install</div>
100100
</div>
101-
<md-filled-button id="authenticate" data-i18n="title_superkey">SuperKey</md-filled-button>
102101
</div>
103102
<div class="card home-card content-padding hidden" id="working">
104103
<md-ripple></md-ripple>
@@ -152,13 +151,6 @@
152151
<div id="settings-page" class="page">
153152
<div class="page-content">
154153
<div class="list-group">
155-
<div class="list-item" id="clear-superkey">
156-
<md-ripple></md-ripple>
157-
<md-icon><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M280-360q50 0 85-35t35-85q0-50-35-85t-85-35q-50 0-85 35t-35 85q0 50 35 85t85 35Zm0 120q-100 0-170-70T40-480q0-100 70-170t170-70q81 0 141.5 46T506-560h335l79 79-140 160-100-79-80 80-80-80h-14q-25 72-87 116t-139 44Z" /></svg></md-icon>
158-
<div class="list-item-content">
159-
<div slot="headline" data-i18n="title_clear_superkey">Clear SuperKey</div>
160-
</div>
161-
</div>
162154
<div class="list-item installed-only" id="rehook">
163155
<md-ripple></md-ripple>
164156
<md-icon><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M440-120q-100 0-170-70t-70-170v-240l200 200-56 57-64-64v47q0 66 47 113t113 47q66 0 113-47t47-113v-127q-36-14-58-44.5T520-600q0-38 22-68.5t58-44.5v-167h80v167q36 14 58 44.5t22 68.5q0 38-22 69t-58 44v127q0 100-70 170t-170 70Zm200-440q17 0 28.5-11.5T680-600q0-17-11.5-28.5T640-640q-17 0-28.5 11.5T600-600q0 17 11.5 28.5T640-560Zm0-40Z"/></svg></md-icon>
@@ -203,19 +195,10 @@
203195
<div class="card-title" slot="headline" data-i18n="title_kernel">Kernel</div>
204196
<div id="kernel-info"></div>
205197
</div>
206-
<div class="card content-padding" id="superkey">
207-
<div class="card-title" slot="headline" data-i18n="title_superkey">SuperKey</div>
208-
<md-outlined-text-field label="Set SuperKey" type="password" class="password-field" data-i18n="label_set_superkey">
209-
<md-icon-button toggle selected slot="trailing-icon">
210-
<md-icon><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M480-320q75 0 127.5-52.5T660-500q0-75-52.5-127.5T480-680q-75 0-127.5 52.5T300-500q0 75 52.5 127.5T480-320Zm0-72q-45 0-76.5-31.5T372-500q0-45 31.5-76.5T480-608q45 0 76.5 31.5T588-500q0 45-31.5 76.5T480-392Zm0 192q-146 0-266-81.5T40-500q54-137 174-218.5T480-800q146 0 266 81.5T920-500q-54 137-174 218.5T480-200Zm0-300Zm0 220q113 0 207.5-59.5T832-500q-50-101-144.5-160.5T480-720q-113 0-207.5 59.5T128-500q50 101 144.5 160.5T480-280Z" /></svg></md-icon>
211-
<md-icon slot="selected"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="m644-428-58-58q9-47-27-88t-93-32l-58-58q17-8 34.5-12t37.5-4q75 0 127.5 52.5T660-500q0 20-4 37.5T644-428Zm128 126-58-56q38-29 67.5-63.5T832-500q-50-101-143.5-160.5T480-720q-29 0-57 4t-55 12l-62-62q41-17 84-25.5t90-8.5q151 0 269 83.5T920-500q-23 59-60.5 109.5T772-302Zm20 246L624-222q-35 11-70.5 16.5T480-200q-151 0-269-83.5T40-500q21-53 53-98.5t73-81.5L56-792l56-56 736 736-56 56ZM222-624q-29 26-53 57t-41 67q50 101 143.5 160.5T480-280q20 0 39-2.5t39-5.5l-36-38q-11 3-21 4.5t-21 1.5q-75 0-127.5-52.5T300-500q0-11 1.5-21t4.5-21l-84-82Zm319 93Zm-151 75Z" /></svg></md-icon>
212-
</md-icon-button>
213-
</md-outlined-text-field>
214-
</div>
215198
<div class="module-list content-padding" id="kpm-embed-list"></div>
216199
<div class="trailing-btn content-padding" id="patch-options">
217200
<md-filled-button class="patch-only" id="embed" data-i18n="button_embed_kpm">Embed KPM</md-filled-button>
218-
<md-filled-button class="patch-only" id="start" disabled data-i18n="button_start">Start</md-filled-button>
201+
<md-filled-button class="patch-only" id="start" data-i18n="button_start">Start</md-filled-button>
219202
<md-filled-button class="unpatch-only" id="unpatch" data-i18n="button_unpatch">UnPatch</md-filled-button>
220203
</div>
221204
<div class="output-terminal content-padding" id="patch-terminal"></div>
@@ -255,39 +238,6 @@
255238

256239
<!-- Dialog -->
257240
<div class="dialog-wrapper" unresolved>
258-
<!-- Superkey -->
259-
<md-dialog class="text-field-dialog" id="superkey-dialog">
260-
<div slot="headline" data-i18n="title_enter_superkey">Enter SuperKey</div>
261-
<div slot="content">
262-
<md-outlined-text-field label="SuperKey" type="password" class="password-field">
263-
<md-icon-button toggle selected slot="trailing-icon">
264-
<md-icon><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="M480-320q75 0 127.5-52.5T660-500q0-75-52.5-127.5T480-680q-75 0-127.5 52.5T300-500q0 75 52.5 127.5T480-320Zm0-72q-45 0-76.5-31.5T372-500q0-45 31.5-76.5T480-608q45 0 76.5 31.5T588-500q0 45-31.5 76.5T480-392Zm0 192q-146 0-266-81.5T40-500q54-137 174-218.5T480-800q146 0 266 81.5T920-500q-54 137-174 218.5T480-200Zm0-300Zm0 220q113 0 207.5-59.5T832-500q-50-101-144.5-160.5T480-720q-113 0-207.5 59.5T128-500q50 101 144.5 160.5T480-280Z" /></svg></md-icon>
265-
<md-icon slot="selected"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -960 960 960"><path d="m644-428-58-58q9-47-27-88t-93-32l-58-58q17-8 34.5-12t37.5-4q75 0 127.5 52.5T660-500q0 20-4 37.5T644-428Zm128 126-58-56q38-29 67.5-63.5T832-500q-50-101-143.5-160.5T480-720q-29 0-57 4t-55 12l-62-62q41-17 84-25.5t90-8.5q151 0 269 83.5T920-500q-23 59-60.5 109.5T772-302Zm20 246L624-222q-35 11-70.5 16.5T480-200q-151 0-269-83.5T40-500q21-53 53-98.5t73-81.5L56-792l56-56 736 736-56 56ZM222-624q-29 26-53 57t-41 67q50 101 143.5 160.5T480-280q20 0 39-2.5t39-5.5l-36-38q-11 3-21 4.5t-21 1.5q-75 0-127.5-52.5T300-500q0-11 1.5-21t4.5-21l-84-82Zm319 93Zm-151 75Z" /></svg></md-icon>
266-
</md-icon-button>
267-
</md-outlined-text-field>
268-
</div>
269-
<div slot="actions">
270-
<md-text-button class="cancel" data-i18n="button_cancel">Cancel</md-text-button>
271-
<md-filled-button class="confirm" disabled data-i18n="button_ok">OK</md-filled-button>
272-
</div>
273-
</md-dialog>
274-
<md-dialog id="authentication-failed-dialog">
275-
<div slot="headline" data-i18n="status_authentication_failed">Authentication failed</div>
276-
<div slot="content" data-i18n="status_authentication_failed_desc">
277-
Unable to authenticate the SuperKey, therefore KPatch Next cannot work properly. Please try again.
278-
</div>
279-
<div slot="actions">
280-
<md-text-button class="confirm" data-i18n="button_ok">OK</md-text-button>
281-
</div>
282-
</md-dialog>
283-
<md-dialog id="clear-superkey-dialog">
284-
<div slot="headline" data-i18n="title_clear_superkey">Clear SuperKey</div>
285-
<div slot="content" data-i18n="msg_clear_superkey_confirm">Do you really want to proceed?</div>
286-
<div slot="actions">
287-
<md-text-button class="cancel" data-i18n="button_cancel">Cancel</md-text-button>
288-
<md-text-button class="confirm" data-i18n="button_ok">OK</md-text-button>
289-
</div>
290-
</md-dialog>
291241
<!-- KPM embed control -->
292242
<md-dialog class="text-field-dialog" id="control-dialog">
293243
<div slot="headline" data-i18n="title_control_kpmodule">Control KPModule</div>

webui/index.js

Lines changed: 4 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ const rehookMode = [
1515
"minimal" // 2
1616
]
1717

18-
export let superkey = localStorage.getItem('kp-next_superkey') || '';
1918
export let MAX_CHUNK_SIZE = 96 * 1024;
2019

2120
async function updateStatus() {
@@ -26,57 +25,21 @@ async function updateStatus() {
2625
const installedOnly = document.querySelectorAll('.installed-only');
2726
if (version) {
2827
versionText.textContent = version;
29-
notInstalled.classList.add('hidden');
30-
working.classList.remove('hidden');
3128
kpmModule.refreshKpmList();
3229
initRehook();
33-
document.querySelector('#superkey md-outlined-text-field').value = superkey;
3430
installedOnly.forEach(el => el.removeAttribute('hidden'));
3531
} else {
36-
versionText.textContent = getString('status_not_installed');
37-
notInstalled.classList.remove('hidden');
38-
working.classList.add('hidden');
3932
installedOnly.forEach(el => el.setAttribute('hidden', ''));
40-
if (superkey) {
41-
updateSuperkey('');
42-
updateBtnState(false);
43-
const failedDialog = document.getElementById('authentication-failed-dialog');
44-
failedDialog.show();
45-
failedDialog.querySelector('.confirm').onclick = () => failedDialog.close();
46-
}
4733
}
34+
notInstalled.classList.toggle('hidden', version);
35+
working.classList.toggle('hidden', !version);
4836
}
4937

5038
export function escapeShell(cmd) {
5139
if (cmd === '' || cmd === null || cmd === undefined) return '""';
5240
return '"' + cmd.replace(/[\\"$`'[\]]/g, '\\$&') + '"';
5341
}
5442

55-
function updateSuperkey(key) {
56-
superkey = key;
57-
document.querySelectorAll('.password-field').forEach(field => {
58-
field.value = key;
59-
});
60-
localStorage.setItem('kp-next_superkey', key);
61-
exec(`
62-
key="${btoa(key)}"
63-
if [ -n "$key" ]; then
64-
echo "$key" > /data/adb/kp-next/key
65-
if [ -f "${modDir}/unresolved" ]; then
66-
rm -f "${modDir}/unresolved"
67-
busybox nohup sh "${modDir}/service.sh" &
68-
fi
69-
else
70-
rm -f /data/adb/kp-next/key
71-
fi
72-
`, { env: { PATH: '/data/adb/ksu/bin:/data/adb/magisk:$PATH' } });
73-
}
74-
75-
function updateBtnState(value) {
76-
document.querySelector('#superkey-dialog .confirm').disabled = !value;
77-
document.getElementById('start').disabled = !value;
78-
}
79-
8043
export async function initInfo() {
8144
const result = await exec('uname -r && getprop ro.build.version.release && getprop ro.build.fingerprint && getenforce');
8245
if (import.meta.env.DEV) { // vite debug
@@ -117,7 +80,7 @@ async function updateRehookStatus() {
11780

11881
let modeName = 'target', modeId = null;
11982

120-
const result = await exec(`kpatch ${escapeShell(superkey)} rehook_status`, { env: { PATH: `${modDir}/bin` } });
83+
const result = await exec(`kpatch rehook_status`, { env: { PATH: `${modDir}/bin` } });
12184
const mode = result.stdout.split('\n').find(line => line.includes('mode: '));
12285
if (mode) {
12386
modeId = parseInt(mode.split(':')[1].trim());
@@ -132,7 +95,7 @@ async function updateRehookStatus() {
13295

13396
function setRehookMode(mode) {
13497
exec(`
135-
kpatch ${escapeShell(superkey)} rehook ${mode} && echo ${mode} > ${persistDir}/rehook`,
98+
kpatch rehook ${mode} && echo ${mode} > ${persistDir}/rehook`,
13699
{ env: { PATH: `${modDir}/bin:$PATH` } }
137100
).then((result) => {
138101
if (result.errno !== 0) {
@@ -181,46 +144,7 @@ document.addEventListener('DOMContentLoaded', async () => {
181144
language.onclick = () => languageDialog.show();
182145
languageDialog.querySelector('.cancel').onclick = () => languageDialog.close();
183146

184-
// visibility toggle for SuperKey text field
185-
document.querySelectorAll('.password-field').forEach(field => {
186-
const toggleBtn = field.querySelector('md-icon-button[toggle]');
187-
if (toggleBtn) {
188-
toggleBtn.addEventListener('change', () => {
189-
field.type = toggleBtn.selected ? 'password' : 'text';
190-
});
191-
}
192-
});
193-
194-
// Superkey
195-
const superkeyDialog = document.getElementById('superkey-dialog');
196-
const clearSuperkeyDialog = document.getElementById('clear-superkey-dialog');
197-
document.getElementById('authenticate').addEventListener('click', (e) => {
198-
e.stopPropagation();
199-
superkeyDialog.show();
200-
});
201-
document.querySelectorAll('.password-field').forEach(input => {
202-
input.oninput = () => updateBtnState(input.value);
203-
});
204-
superkeyDialog.querySelector('.cancel').onclick = () => superkeyDialog.close();
205-
superkeyDialog.querySelector('.confirm').onclick = () => {
206-
const value = superkeyDialog.querySelector('.password-field').value;
207-
updateSuperkey(value);
208-
updateBtnState(value);
209-
updateStatus();
210-
superkeyDialog.close();
211-
}
212-
document.getElementById('clear-superkey').onclick = () => clearSuperkeyDialog.show();
213-
clearSuperkeyDialog.querySelector('.cancel').onclick = () => clearSuperkeyDialog.close();
214-
clearSuperkeyDialog.querySelector('.confirm').onclick = () => {
215-
clearSuperkeyDialog.close();
216-
updateSuperkey('');
217-
updateBtnState('');
218-
updateStatus();
219-
navigateToHome();
220-
}
221-
222147
// patch/unpatch
223-
const patchTextField = document.querySelector('#superkey md-outlined-text-field');
224148
document.getElementById('embed').onclick = patchModule.embedKPM;
225149
document.getElementById('start').onclick = () => {
226150
document.querySelector('.trailing-btn').style.display = 'none';
@@ -231,10 +155,6 @@ document.addEventListener('DOMContentLoaded', async () => {
231155
document.querySelector('.trailing-btn').style.display = 'none';
232156
patchModule.patch("unpatch");
233157
}
234-
patchTextField.addEventListener('focus', () => {
235-
const pageContent = patchTextField.closest('.page-content');
236-
pageContent.scrollTo({ top: pageContent.scrollHeight, behavior: 'smooth' });
237-
});
238158

239159
// reboot
240160
const rebootMenu = document.getElementById('reboot-menu');
@@ -248,7 +168,6 @@ document.addEventListener('DOMContentLoaded', async () => {
248168
});
249169
document.getElementById('reboot-fab').onclick = () => reboot();
250170

251-
updateBtnState(superkey);
252171
getMaxChunkSize();
253172

254173
await loadTranslations();

webui/page/exclude.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { listPackages, getPackagesInfo, exec } from 'kernelsu-alt';
2-
import { modDir, persistDir, superkey, escapeShell } from '../index.js';
2+
import { modDir, persistDir } from '../index.js';
33
import { getString } from '../language.js';
44
import fallbackIcon from '../icon.png';
55

@@ -217,7 +217,7 @@ async function renderAppList() {
217217
saveTimeout = setTimeout(() => {
218218
saveExcludedList(excludedApps);
219219
}, 500);
220-
exec(`kpatch ${escapeShell(superkey)} exclude_set ${realUid} ${isSelected ? 1 : 0}`, { env: { PATH: `${modDir}/bin` } });
220+
exec(`kpatch exclude_set ${realUid} ${isSelected ? 1 : 0}`, { env: { PATH: `${modDir}/bin` } });
221221
});
222222

223223
appItemMap.set(appKey, item);

0 commit comments

Comments
 (0)