Skip to content

Commit c87d52d

Browse files
committed
Create package for WhatsApp Business
Signed-off-by: Dev4Mod <[email protected]>
1 parent 205105c commit c87d52d

File tree

7 files changed

+91
-16
lines changed

7 files changed

+91
-16
lines changed

.github/workflows/business.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
name: WAE Business CI
2+
3+
on:
4+
push:
5+
branches: [ "master" ]
6+
jobs:
7+
build:
8+
permissions: write-all
9+
runs-on: ubuntu-latest
10+
if: github.event_name == 'push'
11+
steps:
12+
- uses: actions/checkout@v4
13+
- name: set up JDK 17
14+
uses: actions/setup-java@v4
15+
with:
16+
java-version: '17'
17+
distribution: 'temurin'
18+
cache: gradle
19+
20+
- name: Write key
21+
if: github.event_name != 'pull_request'
22+
run: |
23+
if [ ! -z "${{ secrets.KEY_STORE }}" ]; then
24+
echo androidStorePassword='${{ secrets.KEY_STORE_PASSWORD }}' >> gradle.properties
25+
echo androidKeyAlias='${{ secrets.ALIAS }}' >> gradle.properties
26+
echo androidKeyPassword='${{ secrets.KEY_PASSWORD }}' >> gradle.properties
27+
echo androidStoreFile='key.jks' >> gradle.properties
28+
echo ${{ secrets.KEY_STORE }} | base64 --decode > key.jks
29+
fi
30+
31+
- name: Grant execute permission for gradlew
32+
run: chmod +x gradlew
33+
34+
- name: Update package name
35+
run: sed -i 's/com.wmods.wppenhacer/com.wmods.wppenhacer.w4b/g' app/build.gradle.kts
36+
37+
- name: Update app name
38+
run: sed -i 's/Wa Enhancer/Wa Enhancer Business/g' app/src/main/res/values/strings.xml
39+
40+
- name: Update scope
41+
run: sed -i 's/com.whatsapp/com.whatsapp.w4b/g' app/src/main/res/values/arrays.xml
42+
43+
- name: Build and test app
44+
run: |
45+
./gradlew assembleDebug -Pminify=true
46+
47+
- name: Upload artifacts
48+
uses: actions/upload-artifact@v4
49+
with:
50+
name: Wa Enhancer ${{ steps.version.outputs.builddate }}
51+
path: app/build/outputs/apk/debug/app-debug.apk
52+
53+
- name: Upload to release
54+
uses: svenstaro/upload-release-action@v2
55+
with:
56+
repo_token: ${{ secrets.GITHUB_TOKEN }}
57+
file: app/build/outputs/apk/debug/app-debug.apk
58+
asset_name: WaEnhancer_business_debug_${{ github.sha }}.apk
59+
tag: pre-release-business-${{ github.sha }}

app/src/main/java/com/wmods/wppenhacer/App.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,9 @@ public static File getWaEnhancerFolder() {
110110
return waEnhancerFolder;
111111
}
112112

113+
public static boolean isOriginalPackage() {
114+
//noinspection ConstantValue
115+
return BuildConfig.APPLICATION_ID.equals("com.wmods.wppenhacer");
116+
}
117+
113118
}

app/src/main/java/com/wmods/wppenhacer/WppXposed.java

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,25 +49,34 @@ public static XSharedPreferences getPref() {
4949
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
5050
var packageName = lpparam.packageName;
5151
var classLoader = lpparam.classLoader;
52+
5253
if (packageName.equals(BuildConfig.APPLICATION_ID)) {
5354
XposedHelpers.findAndHookMethod(MainActivity.class.getName(), lpparam.classLoader, "isXposedEnabled", XC_MethodReplacement.returnConstant(true));
5455
XposedHelpers.findAndHookMethod(PreferenceManager.class.getName(), lpparam.classLoader, "getDefaultSharedPreferencesMode", XC_MethodReplacement.returnConstant(ContextWrapper.MODE_WORLD_READABLE));
5556
return;
5657
}
58+
5759
AntiUpdater.hookSession(lpparam);
60+
5861
Patch.handleLoadPackage(lpparam, getPref());
62+
5963
ScopeHook.hook(lpparam);
60-
// AndroidPermissions.hook(lpparam); in tests
61-
if (!packageName.equals(FeatureLoader.PACKAGE_WPP) && !packageName.equals(FeatureLoader.PACKAGE_BUSINESS))
62-
return;
63-
XposedBridge.log("[•] This package: " + lpparam.packageName);
64-
if (getPref().getBoolean("bootloader_spoofer", false)) {
65-
HookBL.hook(lpparam);
66-
XposedBridge.log("Bootloader Spoofer is Injected");
64+
65+
// AndroidPermissions.hook(lpparam); in tests
66+
if ((packageName.equals(FeatureLoader.PACKAGE_WPP) && App.isOriginalPackage()) || packageName.equals(FeatureLoader.PACKAGE_BUSINESS)) {
67+
XposedBridge.log("[•] This package: " + lpparam.packageName);
68+
69+
// Inject Booloader Spoofer
70+
if (getPref().getBoolean("bootloader_spoofer", false)) {
71+
HookBL.hook(lpparam);
72+
XposedBridge.log("Bootloader Spoofer is Injected");
73+
}
74+
75+
// Load features
76+
FeatureLoader.start(classLoader, getPref(), lpparam.appInfo.sourceDir);
77+
78+
disableSecureFlag();
6779
}
68-
var sourceDir = lpparam.appInfo.sourceDir;
69-
FeatureLoader.start(classLoader, getPref(), sourceDir);
70-
disableSecureFlag();
7180
}
7281

7382
@Override
@@ -78,6 +87,7 @@ public void handleInitPackageResources(XC_InitPackageResources.InitPackageResour
7887
return;
7988

8089
XModuleResources modRes = XModuleResources.createInstance(MODULE_PATH, resparam.res);
90+
ResParam = resparam;
8191

8292
for (var field : ResId.string.class.getFields()) {
8393
var field1 = R.string.class.getField(field.getName());
@@ -94,7 +104,6 @@ public void handleInitPackageResources(XC_InitPackageResources.InitPackageResour
94104
field.set(null, resparam.res.addResource(modRes, field1.getInt(null)));
95105
}
96106

97-
ResParam = resparam;
98107
}
99108

100109
@Override

app/src/main/java/com/wmods/wppenhacer/ui/fragments/HomeFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ private void checkStateWpp(FragmentActivity activity) {
239239
binding.status.setCardBackgroundColor(activity.getColor(R.color.material_state_red));
240240
binding.statusSummary.setVisibility(View.GONE);
241241
}
242-
if (isInstalled(FeatureLoader.PACKAGE_WPP)) {
242+
if (isInstalled(FeatureLoader.PACKAGE_WPP) && App.isOriginalPackage()) {
243243
disableWpp(activity);
244244
} else {
245245
binding.status2.setVisibility(View.GONE);

app/src/main/java/com/wmods/wppenhacer/xposed/core/FeatureLoader.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import androidx.annotation.NonNull;
1818
import androidx.core.content.ContextCompat;
1919

20+
import com.wmods.wppenhacer.App;
2021
import com.wmods.wppenhacer.BuildConfig;
2122
import com.wmods.wppenhacer.UpdateChecker;
2223
import com.wmods.wppenhacer.xposed.core.components.AlertDialogWpp;
@@ -186,8 +187,10 @@ private static void initComponents(ClassLoader loader, XSharedPreferences pref)
186187
}
187188

188189
// Check for Update
189-
if (activity.getClass().getSimpleName().equals("HomeActivity") && state == WppCore.ActivityChangeState.ChangeType.START) {
190-
CompletableFuture.runAsync(new UpdateChecker(activity));
190+
if (App.isOriginalPackage()) {
191+
if (activity.getClass().getSimpleName().equals("HomeActivity") && state == WppCore.ActivityChangeState.ChangeType.START) {
192+
CompletableFuture.runAsync(new UpdateChecker(activity));
193+
}
191194
}
192195
});
193196

app/src/main/java/com/wmods/wppenhacer/xposed/features/customization/FilterGroups.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,6 @@ private void setFilter(int position) {
214214
@NonNull
215215
@Override
216216
public String getPluginName() {
217-
return null;
217+
return "Filter Groups";
218218
}
219219
}

app/src/main/res/values/arrays.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
<resources>
33
<string-array name="scope">
44
<item>com.whatsapp</item>
5-
<item>com.whatsapp.w4b</item>
65
<item>android</item>
76
</string-array>
87

0 commit comments

Comments
 (0)