diff --git a/README.md b/README.md
index 2e9b435..365e753 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,6 @@
-

+

+
# 冰社 / IceCore
[](https://github.com/bingqiu456/IceCore)
@@ -7,12 +8,14 @@
[](https://qm.qq.com/q/hnbnj43qwM)
-✨一个集成了各种好玩功能的Xposed模块,支持获取vip,去除广告,等功能 ✨
+✨**一个集成了各种好玩功能的Xposed模块,支持获取vip,去除广告,等功能** ✨
**🌈冰社2.0 大版本更新来了,这次更新内容较多,大家可以下载体验一下🌈**
+🎉**编写模块不易 有能力的大佬不如[捐赠](https://afdian.com/a/bingyueblog)一下**🎉
+
## ✨如何使用
点击[这里](https://github.com/Xposed-Modules-Repo/me.bingyue.IceCore/releases),下载**最新版本**
@@ -65,11 +68,14 @@
| 倒数日 | 🟢 | 破解了内购,点击购买后退出即可获得`vip` | 1.22.0\ |
| 小黑屋 | 🟢 | 破解了使用激活码激活,随便输入一个支付宝订单号即可 | 1.9.18c |
| fake_location | 🟢 | 解锁`vip` | 1.3.5 BETA |
+| fake_location | 🟢 | 解锁vip,去除更新,去除云控 | 1.3.2.2 |
| 堆糖 | 🟢 | 可以自由使用vip功能 | 8.42.3 |
| vmos pro | 🟢 | 去登录 | 3.0.7 |
| 番茄小说 | 🟢 | 去除广告 | 6.4.5.32 |
| 小熊录屏 | 🟢 | 可以使用vip功能 | 2.4.4 |
-| 不背单词 | 🟢 | 终生大会员 | 8.0 |
+| 不背单词 | 🟢 | 终生大会员 | 5.0-5.5.6 |
+| 潮汐 | 🟢 | 解锁`vip`功能,大部分功能有服务器校验 | 4.2.4 |
+| 无痛单词 | 🟢 | 解锁终生vip | 1.18.0 |
| Autocmd | 🟢 | 解锁专业版 | 1.1.9 |
| 一木记账 | 🟢 | `vip`功能解锁 | 5.8.9 |
| nfc tool | 🟢 | 可以使用vip功能 | 2.6.5 |
diff --git a/app/build.gradle b/app/build.gradle
index d705d3d..3c6336d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,8 @@ android {
applicationId "me.bingyue.IceCore"
minSdkVersion 27
targetSdkVersion 33
- versionCode 3
- versionName "2.0.1"
+ versionCode 4
+ versionName "2.0.2"
// ndk {
// abiFilters "x86_64","x86","armeabi-v7a","arm64-v8a"
// }
diff --git a/app/release/app-release.apk b/app/release/app-release.apk
index 3376702..6f2b92a 100644
Binary files a/app/release/app-release.apk and b/app/release/app-release.apk differ
diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json
index 65cca7a..a03dfb9 100644
--- a/app/release/output-metadata.json
+++ b/app/release/output-metadata.json
@@ -11,8 +11,8 @@
"type": "SINGLE",
"filters": [],
"attributes": [],
- "versionCode": 3,
- "versionName": "2.0.1",
+ "versionCode": 4,
+ "versionName": "2.0.2",
"outputFile": "app-release.apk"
}
],
diff --git a/app/src/main/java/me/bingyue/IceCore/MainHook.java b/app/src/main/java/me/bingyue/IceCore/MainHook.java
index 34359f3..82cf1d6 100644
--- a/app/src/main/java/me/bingyue/IceCore/MainHook.java
+++ b/app/src/main/java/me/bingyue/IceCore/MainHook.java
@@ -8,12 +8,12 @@
import java.util.Objects;
import de.robv.android.xposed.IXposedHookLoadPackage;
+import me.bingyue.IceCore.hook_app.android;
import de.robv.android.xposed.XC_MethodReplacement;
import de.robv.android.xposed.XSharedPreferences;
import de.robv.android.xposed.XposedHelpers;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
-
public class MainHook implements IXposedHookLoadPackage {
@@ -38,10 +38,15 @@ public class MainHook implements IXposedHookLoadPackage {
hook_method_app.put("com.estrongs.android.pop", "a1");
hook_method_app.put("cn.com.langeasy.LangEasyLexis", "a2");
hook_method_app.put("com.lerist.autocmd", "b2");
+ hook_method_app.put("tech.xiangzi.painless", "c2");
+ hook_method_app.put("io.moreless.tide", "c3");
}
@Override
public void handleLoadPackage(XC_LoadPackage.LoadPackageParam lpparam) throws Throwable {
+ if(Objects.equals(lpparam.packageName, "android")){
+ android.hook_init();
+ }
if(Objects.equals(lpparam.packageName, "me.bingyue.IceCore")){
XposedHelpers.findAndHookMethod("me.bingyue.IceCore.activity.MainActivityKt", lpparam.classLoader, "isModuleActivated", XC_MethodReplacement.returnConstant(true));
}
diff --git a/app/src/main/java/me/bingyue/IceCore/activity/Config.kt b/app/src/main/java/me/bingyue/IceCore/activity/Config.kt
index 1541342..f9dcf58 100644
--- a/app/src/main/java/me/bingyue/IceCore/activity/Config.kt
+++ b/app/src/main/java/me/bingyue/IceCore/activity/Config.kt
@@ -2,11 +2,16 @@ package me.bingyue.IceCore.activity
class Config {
val settingsMap = mapOf(
- "Fake Location" to listOf(
+ "Fake Location New" to listOf(
listOf("启用本地VIP", "com_lerist_fakelocation__vip", "仅本地生效"),
listOf("去除APP黑名单", "com_lerist_fakelocation__black_app", "如上所述"),
listOf("去除服务器验证", "com_lerist_fakelocation__verify", "防止定位突然关闭")
),
+ "Fake Location 1.3.2.2" to listOf(
+ listOf("总开关", "com_lerist_fakelocation__oid_all", "如果想使用请手动勾选系统框架\n同时把new上面的关了"),
+ listOf("启用本地VIP", "com_lerist_fakelocation__vip_old", "仅本地生效"),
+ listOf("去除服务器验证", "com_lerist_fakelocation__verify", "防止定位突然关闭")
+ ),
"Autocmd+" to listOf(
listOf("启用本地VIP", "com_lerist_autocmd__vip", "仅本地生效"),
),
@@ -51,6 +56,12 @@ class Config {
),
"不背单词" to listOf(
listOf("启用本地VIP", "cn_com_langeasy_LangEasyLexis__isvip", "仅本地生效")
+ ),
+ "无痛单词" to listOf(
+ listOf("启用本地VIP", "tech_xiangzi_painless__isvip", "仅本地生效")
+ ),
+ "潮汐" to listOf(
+ listOf("启用本地VIP", "io_moreless_tide__isvip", "仅本地生效")
)
)
}
\ No newline at end of file
diff --git a/app/src/main/java/me/bingyue/IceCore/config/Config.java b/app/src/main/java/me/bingyue/IceCore/config/Config.java
index b1fb86f..1c587e6 100644
--- a/app/src/main/java/me/bingyue/IceCore/config/Config.java
+++ b/app/src/main/java/me/bingyue/IceCore/config/Config.java
@@ -1,9 +1,12 @@
package me.bingyue.IceCore.config;
public class Config {
+ public static boolean com_lerist_fakelocation__oid_all = true;
public static boolean com_lerist_fakelocation__vip = true;
public static boolean com_lerist_fakelocation__black_app = true;
public static boolean com_lerist_fakelocation__verify = true;
+ public static boolean com_lerist_fakelocation__vip_old = true;
+ public static boolean com_lerist_fakelocation__verify_old = true;
public static boolean com_nowcasting_activity__isvip = true;
public static boolean cn_ticktick_task__isvip = true;
public static boolean com_clover_daysmatter__pay = true;
@@ -18,6 +21,8 @@ public class Config {
public static boolean com_dragon_read__isvip = true;
public static boolean me_mapleaf_calendar__isvip = true;
public static boolean com_mutangtech_qianji__isvip = true;
+ public static boolean tech_xiangzi_painless__isvip = true;
+ public static boolean io_moreless_tide__isvip = true;
public static boolean com_duapps_recorder__isvip = true;
public static boolean web1n_stopapp__vip = true;
}
diff --git a/app/src/main/java/me/bingyue/IceCore/hook_app/android.java b/app/src/main/java/me/bingyue/IceCore/hook_app/android.java
new file mode 100644
index 0000000..7f32232
--- /dev/null
+++ b/app/src/main/java/me/bingyue/IceCore/hook_app/android.java
@@ -0,0 +1,51 @@
+package me.bingyue.IceCore.hook_app;
+
+import de.robv.android.xposed.XC_MethodHook;
+import de.robv.android.xposed.XposedBridge;
+import de.robv.android.xposed.XposedHelpers;
+
+public class android {
+ public static void hook_init(){
+ XposedHelpers.findAndHookMethod(ClassLoader.class, "loadClass", String.class, new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ if (param.hasThrowable()) return;
+ Class> cls = (Class>) param.getResult();
+ if(cls.getClassLoader().toString().contains("/data/fakeloc/libfakeloc.so")) {
+ XposedBridge.log("hook libfakeloc.so");
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ Thread.sleep(3500);
+ XposedBridge.log("start");
+ XposedHelpers.findAndHookMethod("com.lerist.inject.utils.ޏ", cls.getClassLoader(), "އ", new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+ super.beforeHookedMethod(param);
+ }
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ param.setResult(true);
+ }
+ });
+ XposedHelpers.findAndHookMethod("com.lerist.inject.utils.ބ", cls.getClassLoader(), "ރ", java.lang.String.class, int.class, new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+ param.args[0]="114.114.114.114";//把vef.api.fakeloc.cc改为114.114.114.114
+ }
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ super.afterHookedMethod(param);
+ }
+ });
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+ }).start();
+ }
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/me/bingyue/IceCore/hook_app/com_lerist_autocmd.java b/app/src/main/java/me/bingyue/IceCore/hook_app/com_lerist_autocmd.java
index 80ff34d..ff412d2 100644
--- a/app/src/main/java/me/bingyue/IceCore/hook_app/com_lerist_autocmd.java
+++ b/app/src/main/java/me/bingyue/IceCore/hook_app/com_lerist_autocmd.java
@@ -28,6 +28,13 @@ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
param.setResult(true);
}
});
+ XposedHelpers.findAndHookMethod("\u0793.\u0221", classLoader, "\u0D08", new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ param.setResult(1);
+ super.afterHookedMethod(param);
+ }
+ });
}
});
}
diff --git a/app/src/main/java/me/bingyue/IceCore/hook_app/com_lerist_fakelocation_old.java b/app/src/main/java/me/bingyue/IceCore/hook_app/com_lerist_fakelocation_old.java
new file mode 100644
index 0000000..1ec2111
--- /dev/null
+++ b/app/src/main/java/me/bingyue/IceCore/hook_app/com_lerist_fakelocation_old.java
@@ -0,0 +1,113 @@
+package me.bingyue.IceCore.hook_app;
+
+import android.content.Context;
+
+import de.robv.android.xposed.XC_MethodHook;
+import de.robv.android.xposed.XposedHelpers;
+import de.robv.android.xposed.callbacks.XC_LoadPackage;
+import me.bingyue.IceCore.config.Config;
+import android.util.Base64;
+
+
+import javax.crypto.Cipher;
+import javax.crypto.SecretKey;
+import javax.crypto.SecretKeyFactory;
+import javax.crypto.spec.DESKeySpec;
+
+public class com_lerist_fakelocation_old {
+ public static void hook_init(XC_LoadPackage.LoadPackageParam lpparam){
+ XposedHelpers.findAndHookMethod("com.stub.StubApp", lpparam.classLoader, "attachBaseContext", Context.class, new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ super.afterHookedMethod(param);
+ Context context = (Context) param.args[0];
+ ClassLoader classLoader = context.getClassLoader();
+ XposedHelpers.findAndHookMethod("ކ.ޖ$֏", classLoader, "ށ", java.lang.String.class, new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+ if(Config.com_lerist_fakelocation__verify_old){
+ param.args[0]="114.114.114.114";
+ }
+ }
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ super.afterHookedMethod(param);
+ }
+ });
+
+ Class> JSONClass =XposedHelpers.findClass("com.alibaba.fastjson.JSON",classLoader);
+
+ XposedHelpers.findAndHookMethod("ށ.ރ.ށ.ހ.ށ.ؠ", classLoader, "֏", java.lang.String.class, java.lang.Class.class, new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ if(param.args[0]=="key_userinfo" && Config.com_lerist_fakelocation__vip_old){
+ long proindate=System.currentTimeMillis()+200000000;
+ long tokenTime=System.currentTimeMillis()+500000000;
+ String key = "1#" + Long.toString(proindate) + "#" + Long.toString(tokenTime) + "#T";
+ String data = "{\"key\":\"" + desEncryptECB(key, "Lerist.T") + "\",\"loginName\":\"IceCore\",\"loginTime\":0,\"loginType\":\"email\",\"proindate\":" + Long.toString(proindate) + ",\"stability\":0,\"token\":\"T\",\"type\":1}";
+ param.setResult(XposedHelpers.callStaticMethod(JSONClass,"parseObject",data,param.args[1]));
+ return;
+ }
+ super.afterHookedMethod(param);
+ }
+ });
+
+ XposedHelpers.findAndHookMethod("ށ.ރ.ށ.ހ.ށ.ؠ", classLoader, "ނ", new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ param.setResult(false);
+ }
+ });
+
+ XposedHelpers.findAndHookMethod("ށ.ރ.ؠ.ހ.ؠ", classLoader, "ށ", java.lang.String.class, new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ param.setResult(true);
+ }
+ });
+
+ XposedHelpers.findAndHookMethod("ށ.ރ.ؠ.ހ.ؠ", classLoader, "ؠ", new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ param.setResult(null);
+ }
+ });
+
+ XposedHelpers.findAndHookMethod("ށ.ރ.ؠ.ؠ.֏", classLoader, "ޅ",Context.class, new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ param.setResult(true);
+ }
+ });
+
+ }
+ });
+
+ }
+
+
+ public static String desEncryptECB(String content, String key) {
+ try {
+ Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
+ DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
+ SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
+ SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
+ cipher.init(Cipher.ENCRYPT_MODE, secretKey);
+ byte[] result = cipher.doFinal(content.getBytes());
+ return Base64.encodeToString(result, Base64.DEFAULT);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+ public static String desECBDecrypt(byte[] data, String key) throws Exception {
+ Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
+ DESKeySpec desKeySpec = new DESKeySpec(key.getBytes());
+ SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
+ SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
+ cipher.init(Cipher.DECRYPT_MODE, secretKey);
+ byte[] encryptedData = Base64.decode(data, Base64.DEFAULT);
+ byte[] decryptedData = cipher.doFinal(encryptedData);
+ return new String(decryptedData);
+ }
+}
diff --git a/app/src/main/java/me/bingyue/IceCore/hook_app/io_moreless_tide.java b/app/src/main/java/me/bingyue/IceCore/hook_app/io_moreless_tide.java
new file mode 100644
index 0000000..6f6dab2
--- /dev/null
+++ b/app/src/main/java/me/bingyue/IceCore/hook_app/io_moreless_tide.java
@@ -0,0 +1,39 @@
+package me.bingyue.IceCore.hook_app;
+
+import de.robv.android.xposed.XC_MethodHook;
+import de.robv.android.xposed.XposedHelpers;
+import de.robv.android.xposed.callbacks.XC_LoadPackage;
+import me.bingyue.IceCore.config.Config;
+
+public class io_moreless_tide {
+ public static void hook_init(XC_LoadPackage.LoadPackageParam lpparam){
+ hook_vip(lpparam);
+ }
+
+ public static void hook_vip(XC_LoadPackage.LoadPackageParam lpparam){
+ if(!Config.io_moreless_tide__isvip){
+ return;
+ }
+ XposedHelpers.findAndHookMethod("io.moreless.tide.base.model.User$Vip", lpparam.classLoader, "getExpired", new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ param.setResult(false);
+ super.afterHookedMethod(param);
+ }
+ });
+ XposedHelpers.findAndHookMethod("io.moreless.tide.base.model.User$Vip", lpparam.classLoader, "getValid", new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ param.setResult(true);
+ super.afterHookedMethod(param);
+ }
+ });
+ XposedHelpers.findAndHookMethod("k1.l", lpparam.classLoader, "ll", new XC_MethodHook() {
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ param.setResult(true);
+ super.afterHookedMethod(param);
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/me/bingyue/IceCore/hook_app/tech_xiangzi_painless.java b/app/src/main/java/me/bingyue/IceCore/hook_app/tech_xiangzi_painless.java
new file mode 100644
index 0000000..6ac60a6
--- /dev/null
+++ b/app/src/main/java/me/bingyue/IceCore/hook_app/tech_xiangzi_painless.java
@@ -0,0 +1,30 @@
+package me.bingyue.IceCore.hook_app;
+
+import de.robv.android.xposed.XC_MethodHook;
+import de.robv.android.xposed.XposedHelpers;
+import de.robv.android.xposed.callbacks.XC_LoadPackage;
+import me.bingyue.IceCore.config.Config;
+
+public class tech_xiangzi_painless {
+ public static void hook_init(XC_LoadPackage.LoadPackageParam lpparam){
+ hook_vip(lpparam);
+ }
+
+ public static void hook_vip(XC_LoadPackage.LoadPackageParam lpparam){
+ if(!Config.tech_xiangzi_painless__isvip){
+ return;
+ }
+ XposedHelpers.findAndHookMethod("tech.xiangzi.painless.data.remote.model.UserBean", lpparam.classLoader, "getPro", new XC_MethodHook() {
+ @Override
+ protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
+ super.beforeHookedMethod(param);
+ }
+
+ @Override
+ protected void afterHookedMethod(MethodHookParam param) throws Throwable {
+ param.setResult(9);
+ super.afterHookedMethod(param);
+ }
+ });
+ }
+}
diff --git a/app/src/main/java/me/bingyue/IceCore/hook_core.java b/app/src/main/java/me/bingyue/IceCore/hook_core.java
index 544d297..1a3f3f7 100644
--- a/app/src/main/java/me/bingyue/IceCore/hook_core.java
+++ b/app/src/main/java/me/bingyue/IceCore/hook_core.java
@@ -1,6 +1,7 @@
package me.bingyue.IceCore;
import de.robv.android.xposed.callbacks.XC_LoadPackage;
+import me.bingyue.IceCore.config.Config;
import me.bingyue.IceCore.hook_app.com_clover_daysmatter_vip;
import me.bingyue.IceCore.hook_app.com_when_coco_vip;
import me.bingyue.IceCore.hook_app.me_mapleaf_calendar_vip;
@@ -18,6 +19,9 @@
import me.bingyue.IceCore.hook_app.com_estrongs_android_pop;
import me.bingyue.IceCore.hook_app.cn_com_langeasy_LangEasyLexis;
import me.bingyue.IceCore.hook_app.com_lerist_autocmd;
+import me.bingyue.IceCore.hook_app.com_lerist_fakelocation_old;
+import me.bingyue.IceCore.hook_app.io_moreless_tide;
+import me.bingyue.IceCore.hook_app.tech_xiangzi_painless;
public class hook_core{
@@ -33,7 +37,13 @@ public void d(XC_LoadPackage.LoadPackageParam lpparam){
webn_stopapp_vip.hook_init(lpparam);
}
- public void e(XC_LoadPackage.LoadPackageParam lpparam) throws ClassNotFoundException { fake_location_vip.hook_init(lpparam); }
+ public void e(XC_LoadPackage.LoadPackageParam lpparam) throws ClassNotFoundException {
+ if(Config.com_lerist_fakelocation__oid_all){
+ com_lerist_fakelocation_old.hook_init(lpparam);
+ }else{
+ fake_location_vip.hook_init(lpparam);
+ }
+ }
public void f(XC_LoadPackage.LoadPackageParam lpparam) throws ClassNotFoundException{ fanqie_xiao_suo.hook_init(lpparam); }
@@ -60,4 +70,9 @@ public void g(XC_LoadPackage.LoadPackageParam lpparam){
public void a2(XC_LoadPackage.LoadPackageParam lpparam) {cn_com_langeasy_LangEasyLexis.hook_init(lpparam);}
public void b2(XC_LoadPackage.LoadPackageParam lpparam) {com_lerist_autocmd.hook_init(lpparam);}
+
+ public void c2(XC_LoadPackage.LoadPackageParam lpparam) {tech_xiangzi_painless.hook_init(lpparam);}
+
+ public void c3(XC_LoadPackage.LoadPackageParam lpparam) {io_moreless_tide.hook_init(lpparam);}
+
}
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index b619f3e..ca54256 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -27,5 +27,7 @@
- com.vmos.pro
- cn.com.langeasy.LangEasyLexis
- com.lerist.autocmd
+ - io.moreless.tide
+ - tech.xiangzi.painless
\ No newline at end of file
diff --git a/ice_core.png b/ice_core.png
new file mode 100644
index 0000000..6820ca3
Binary files /dev/null and b/ice_core.png differ
diff --git "a/\345\206\260\347\244\276_logo.png" "b/\345\206\260\347\244\276_logo.png"
deleted file mode 100644
index ac46b6f..0000000
Binary files "a/\345\206\260\347\244\276_logo.png" and /dev/null differ