Initial commit.

This commit is contained in:
2025-07-14 14:02:12 +03:00
parent b36889b306
commit eb50fee046
10 changed files with 338 additions and 36 deletions

37
.gitignore vendored
View File

@@ -2,40 +2,5 @@
*.d *.d
# Compiled Object files # Compiled Object files
*.slo
*.lo
*.o *.o
*.obj *.zip
# Precompiled Headers
*.gch
*.pch
# Linker files
*.ilk
# Debugger Files
*.pdb
# Compiled Dynamic libraries
*.so
*.dylib
*.dll
# Fortran module files
*.mod
*.smod
# Compiled Static libraries
*.lai
*.la
*.a
*.lib
# Executables
*.exe
*.out
*.app
# debug information files
*.dwo

20
CMakeLists.txt Normal file
View File

@@ -0,0 +1,20 @@
# Copyright 2025 Yağız Zengin
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
cmake_minimum_required(VERSION 3.10)
project(disable_watchdog VERSION 1.0)
add_executable(disable_watchdog disable_watchdog.cpp)
target_link_libraries(disable_watchdog PRIVATE log)

88
build.sh Normal file
View File

@@ -0,0 +1,88 @@
#!/bin/bash
#
# Copyright 2025 Yağız Zengin
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
set -e
BUILD_64="build_arm64-v8a"
BUILD_32="build_armeabi-v7a"
THIS="$(basename $0)"
echo()
{
command echo "[$THIS]: $@"
}
checks()
{
if [ -z "$ANDROID_NDK" ]; then
echo "Please set ANDROID_NDK variable as your NDK path."
exit 1
fi
if [ ! -f /usr/bin/cmake ] && [ ! -f /bin/cmake ]; then
echo "Please verify your CMake installation."
exit 1
fi
}
clean()
{
echo "Cleaning workspace."
rm -rf $BUILD_32 $BUILD_64
}
build()
{
mkdir -p $BUILD_64 $BUILD_32
command echo -e "BUILD INFO:
ARCHS: arm64-v8a armeabi-v7a
ANDROID_PLATFORM: android-21 (android 5.0)
ANDROID_TOOLCHAIN_FILE: $ANDROID_NDK/build/cmake/android.toolchain.cmake\n"
echo "Configuring for arm64-v8a..."
cmake -B $BUILD_64 -S . \
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=arm64-v8a \
-DANDROID_PLATFORM=android-21
echo "Configuring for armeabi-v7a..."
cmake -B $BUILD_32 -S . \
-DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=armeabi-v7a \
-DANDROID_PLATFORM=android-21
echo "Building arm64-v8a artifacts..."
cmake --build $BUILD_64
echo "arm64-v8a build complete, artifacts: $PWD/$BUILD_64"
echo "Building armeabi-v7a artifacts..."
cmake --build $BUILD_32
echo "armeabi-v7a build complete, artifacts: $PWD/$BUILD_32"
}
if [ $# -eq 0 ]; then
command echo "Usage: $0 build|rebuild|clean"
exit 1
fi
case $1 in
"build") checks; build ;;
"clean") clean ;;
"rebuild") clean; checks; build ;;
*)
command echo "$0: Unknown argument: $1"
exit 1 ;;
esac

77
disable_watchdog.cpp Normal file
View File

@@ -0,0 +1,77 @@
/*
Copyright 2025 Yağız Zengin
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
#include <errno.h>
#include <iostream>
#include <list>
#define LOG_TAG "disable_watchdog"
#include <android/log.h>
#include <android/log_macros.h>
bool suspendWatchdog(std::list<const char*> files)
{
bool suspendOk = false;
for (const auto& file : files) {
int fd = open(file, O_WRONLY);
if (fd == -1) {
if (errno == ENOENT) {
int last = errno;
fd = open(file, O_WRONLY | O_CREAT, 644);
if (fd == -1) {
ALOGW("Cannot create %s: %s\n", file, strerror(errno));
continue;
}
} else {
ALOGW("Cannot open %s: %s\n", file, strerror(errno));
continue;
}
}
char ch = 'V';
if (write(fd, &ch, 1) != 1) {
ALOGW("Cannot write %s: %s\n", file, strerror(errno));
close(fd);
continue;
}
suspendOk = true;
ALOGI("%s: successfully suspended.\n", file);
close(fd);
}
return suspendOk;
}
int main(void)
{
ALOGI("Service started.\n");
while (1) {
if (!suspendWatchdog({"/dev/watchdog1", "/dev/watchdog0", "/dev/watchdog"})) {
ALOGE("watchdog suspend fail!\n");
break;
}
sleep(8);
}
ALOGI("Service stopped!\n");
return 1;
}

109
mkmod.sh Normal file
View File

@@ -0,0 +1,109 @@
#!/bin/bash
#
# Copyright 2025 Yağız Zengin
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
set -e
BUILD_64="build_arm64-v8a"
BUILD_32="build_armeabi-v7a"
MOD="watchdog_disabler_$(date +%Y-%M-%d).zip"
THIS="$(basename $0)"
echo() { command echo "[$THIS]: $@"; }
clean()
{
rm -rf $MOD \
$PWD/module/system/bin/disable_watchdog \
$PWD/module/customize.sh
touch $PWD/module/system/bin/placeholder
}
prepare()
{
if [ ! -d $BUILD_32 ] || [ ! -d $BUILD_64 ]; then
echo "Missing artifacts. Please build!"
exit 1
fi
if [ ! -f /usr/bin/zip ] && [ ! -f /bin/zip ]; then
echo "Please verify your Zip installation!"
exit 1
fi
if [ -f $MOD ]; then rm $MOD; fi
}
mk_customize()
{
if [ $1 -eq 32 ]; then
cat <<EOF
#!/system/bin/sh
if ! getprop ro.product.cpu.abi | grep armeabi-v7a &>/dev/null; then
echo "This module is compatible with 32-bit devices. Your device running a 64-bit system!"
exit 1
fi
EOF
elif [ $1 -eq 64 ]; then
cat <<EOF
#!/system/bin/sh
if ! getprop ro.product.cpu.abi | grep arm64-v8a &>/dev/null; then
echo "This module is compatible with 64-bit devices. Your device running a 32-bit system!"
exit 1
fi
EOF
else
cat <<EOF
#!/system/bin/sh
echo "This module not generated correctly. Not usable. Re-generate with mkmod.sh. See https://github.com/YZBruh/watchdog_disabler"
exit 1
EOF
fi
}
mkzip()
{
local dir
if [ $1 -eq 32 ]; then dir=$BUILD_32; else dir=$BUILD_64; fi
cd module
rm -f $PWD/system/bin/placeholder $PWD/system/bin/disable_watchdog
mk_customize $1 > $PWD/customize.sh
chmod 755 $PWD/customize.sh
cp $dir/disable_watchdog $PWD/system/bin
zip -rq $MOD *
mv $MOD ..
cd ..
echo "Created module package for $1-bit."
}
if [ $# -eq 0 ]; then
command echo "Usage: $0 32|64|clean"
exit 1
fi
case $1 in
"32") prepare; mkzip 32 ;;
"64") prepare; mkzip 64 ;;
"clean") clean ;;
*)
command echo "$0: Unknown argument: $1"
exit 1 ;;
esac

View File

@@ -0,0 +1,33 @@
#!/sbin/sh
#################
# Initialization
#################
umask 022
# echo before loading util_functions
ui_print() { echo "$1"; }
require_new_magisk() {
ui_print "*******************************"
ui_print " Please install Magisk v20.4+! "
ui_print "*******************************"
exit 1
}
#########################
# Load util_functions.sh
#########################
OUTFD=$2
ZIPFILE=$3
mount /data 2>/dev/null
[ -f /data/adb/magisk/util_functions.sh ] || require_new_magisk
. /data/adb/magisk/util_functions.sh
[ $MAGISK_VER_CODE -lt 20400 ] && require_new_magisk
install_module
exit 0

View File

@@ -0,0 +1 @@
#MAGISK

6
module/module.prop Normal file
View File

@@ -0,0 +1,6 @@
id=watchdog_fix
name=Watchdog Fix
author=YZBruh
version=v1.0
versionCode=1
description=Disables watchdog

3
module/service.sh Normal file
View File

@@ -0,0 +1,3 @@
#!/system/bin/sh
suspend_watchdog &

View File