vtpay_vtapfix: initial commit

Signed-off-by: Cuynu <cuynu@proton.me>
This commit is contained in:
Cuynu 2026-05-25 16:53:57 +07:00
commit 08b7b90e90
Signed by: cuynu
GPG key ID: 1F01341D0B42B51A
8 changed files with 157 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.zip

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

29
README.md Normal file
View file

@ -0,0 +1,29 @@
# Viettel Money VTAP Bypass
- Simple VTAP (or so called VKey) bypass module for Viettel Money (Android), made by Cuynu with no AI/LLM-assistance at all.
- This will continue to work as long as Viettel Money still uses VTAP and **does not inject their maximum BShield protection.**
# Usage
- Download module from releases here : [cuynu/vtpay_vtapfix releases](/cuynu/vtpay_vtapfix/releases)
- Flash the module with Magisk (v21.0+ recommended)
- It will bypass at app data level, since it does not requires app modification
- After done, Viettel Money app will open, you can continue to use normally without hiding root.
- Everytime you reinstall app, or clear the app data, reinstall this module, or use [Action] for this module from modules list.
# Limitation
- [Smart OTP] feature does not work due to old java-based root detection from dex level. You can use SMS OTP for transaction authentication
# Build module (Unix-based/Linux only)
```
git clone https://codefloe.com/cuynu/vtpay_vtapfix.git
cd vtpay_vtapfix
./createmodule.sh
```
# License
- MIT License
# Credits
- Cuynu (@cuynu) - developer

36
action.sh Executable file
View file

@ -0,0 +1,36 @@
#!/system/bin/sh
openapp() {
echo "Opening app..."
am start -n com.bplus.vtpay/.activity.MainActivity
}
appinstalled() {
echo "Viettel Money [com.bplus.vtpay] is installed!"
echo "Forcing stop app..."
am force-stop com.bplus.vtpay
echo "Bypasing :)"
rm -rf /data/data/com.bplus.vtpay/files/firmware
rm -rf /data/data/com.bplus.vtpay/files/profile
rm -rf /data/data/com.bplus.vtpay/files/signature
mkdir -p /data/data/com.bplus.vtpay/files/firmware
mkdir -p /data/data/com.bplus.vtpay/files/profile
mkdir -p /data/data/com.bplus.vtpay/files/signature
# delete bshi libraries
echo "Deleting bshi** libraries..."
for library in $(find /data/app -name libVFaceLib.so | grep com.bplus.vtpay) ; do rm $library ; done
for library in $(find /data/app -name libvkauxj.so | grep com.bplus.vtpay) ; do rm $library ; done
# telemetry
echo "Deleting telemetry libraries..."
for library in $(find /data/app -name libcrash*.so | grep com.bplus.vtpay) ; do rm $library ; done
[ -d /data/data/com.bplus.vtpay/files/firmware ] && echo "Bypass applied!"
}
appnotfound() {
echo "Viettel Money [com.bplus.vtpay] app not found !!!"
echo "Please install it !!!"
am start -a android.intent.action.VIEW -d https://www.apkmirror.com/uploads/?appcategory=viettel-money
}
echo "Checking Viettel Money app..."
dumpsys package com.bplus.vtpay > /dev/null 2>&1 && appinstalled || appnotfound

15
createmodule.sh Executable file
View file

@ -0,0 +1,15 @@
#!/usr/bin/env bash
COMMIT="$(git rev-parse --short HEAD)"
ls *.zip && rm -rf *.zip
echo "Creating module..."
zip -r vtpay_vtapfix_$COMMIT.zip META-INF customize.sh README.md action.sh module.prop
if [ -f vtpay_vtapfix_*.zip ]; then
echo "Module saved to [vtpay_vtapfix_$COMMIT.zip], flash it"
else
echo "Something wrong!"
echo "Check if [zip] is installed or not?"

36
customize.sh Executable file
View file

@ -0,0 +1,36 @@
#!/system/bin/sh
openapp() {
echo "Opening app..."
am start -n com.bplus.vtpay/.activity.MainActivity
}
appinstalled() {
echo "Viettel Money [com.bplus.vtpay] is installed!"
echo "Forcing stop app..."
am force-stop com.bplus.vtpay
echo "Bypasing :)"
rm -rf /data/data/com.bplus.vtpay/files/firmware
rm -rf /data/data/com.bplus.vtpay/files/profile
rm -rf /data/data/com.bplus.vtpay/files/signature
mkdir -p /data/data/com.bplus.vtpay/files/firmware
mkdir -p /data/data/com.bplus.vtpay/files/profile
mkdir -p /data/data/com.bplus.vtpay/files/signature
# delete bshi libraries
echo "Deleting bshi** libraries..."
for library in $(find /data/app -name libVFaceLib.so | grep com.bplus.vtpay) ; do rm $library ; done
for library in $(find /data/app -name libvkauxj.so | grep com.bplus.vtpay) ; do rm $library ; done
# telemetry
echo "Deleting telemetry libraries..."
for library in $(find /data/app -name libcrash*.so | grep com.bplus.vtpay) ; do rm $library ; done
[ -d /data/data/com.bplus.vtpay/files/firmware ] && echo "Bypass applied!"
}
appnotfound() {
echo "Viettel Money [com.bplus.vtpay] app not found !!!"
echo "Please install it !!!"
am start -a android.intent.action.VIEW -d https://www.apkmirror.com/uploads/?appcategory=viettel-money
}
echo "Checking Viettel Money app..."
dumpsys package com.bplus.vtpay > /dev/null 2>&1 && appinstalled || appnotfound

6
module.prop Executable file
View file

@ -0,0 +1,6 @@
id=vtpay_vtapfix
name=Viettel Money VTAP Bypass
version=v1.0-vtpayfix
versionCode=10
author=cuynu
description=Bypass Viettel Money VTAP root detection, allow use the app without hiding root. Reinstall or run Action in case if you clear or reinstall app.