-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
- Loading branch information
There are no files selected for viewing
Large diffs are not rendered by default.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
# 这个世界太乱 / What a Mess World | ||
|
||
## 下载 | ||
[本人仓库](https://github.com/CoolestEnoch/TheMessWorld/releases) | ||
[LSPosed仓库](https://github.com/Xposed-Modules-Repo/foss.coolest.fucker/releases) | ||
|
||
## 仓库链接 | ||
[本人仓库](https://github.com/CoolestEnoch/TheMessWorld) | ||
[LSPosed仓库](https://github.com/Xposed-Modules-Repo/foss.coolest.fucker) | ||
|
||
[![Motto](https://readme-typing-svg.herokuapp.com/?lines=今天你躺平了吗\(bushi¢er=true&size=27)](https://github.com/CoolestEnoch/) | ||
|
||
# 这是个啥?/ What's this? 🤔 | ||
> 一个去广告插件,随缘支持更多应用,目前只支持胖乖生活<br> | ||
> An AD-Blocker app, only support Penguin Life temporary. Will support more and more apps in the future. | ||
# 支持的平台 / Supported platform 📱 | ||
- [x] 安卓7.0及以上系统 / Android 7.0+ | ||
|
||
# 支持哪些功能? / Features 💥 | ||
## 胖乖生活 / Penguin Life | ||
- [x] 跳过开屏广告 / Jump splash screen ads | ||
- [x] 去除强制更新 / Remove force-update | ||
|
||
# 未来待实现功能(咕咕咕) / Under development 🕊️ | ||
- [ ] ??? / IDK(lol) | ||
|
||
|
||
# 用到的开源项目 / Used libraries ✈️ | ||
### [Xposed](https://github.com/rovo89/Xposed) | ||
### [EzXHelper](https://github.com/KyuubiRan/EzXHelper) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
https://github.com/CoolestEnoch/TheMessWorld |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
一个开源的去广告模块,会逐步支持越来越多的应用 |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
*.iml | ||
.gradle | ||
/local.properties | ||
/.idea/caches | ||
/.idea/libraries | ||
/.idea/modules.xml | ||
/.idea/workspace.xml | ||
/.idea/navEditor.xml | ||
/.idea/assetWizardSettings.xml | ||
.DS_Store | ||
/build | ||
/captures | ||
.externalNativeBuild | ||
.cxx | ||
local.properties |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/build |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
plugins { | ||
id 'com.android.application' | ||
id 'org.jetbrains.kotlin.android' | ||
} | ||
|
||
android { | ||
namespace 'foss.coolest.fucker' | ||
compileSdk 33 | ||
|
||
defaultConfig { | ||
applicationId "foss.coolest.fucker" | ||
minSdk 24 | ||
targetSdk 33 | ||
versionCode 1 | ||
versionName "1.1-F♂SS-boy-next-door" | ||
|
||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" | ||
} | ||
|
||
buildFeatures{ | ||
viewBinding true | ||
} | ||
|
||
buildTypes { | ||
release { | ||
minifyEnabled false | ||
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' | ||
} | ||
} | ||
compileOptions { | ||
// sourceCompatibility JavaVersion.VERSION_1_8 | ||
// sourceCompatibility JavaVersion.VERSION_1_8 | ||
targetCompatibility JavaVersion.VERSION_11 | ||
targetCompatibility JavaVersion.VERSION_11 | ||
} | ||
kotlinOptions { | ||
// jvmTarget = '1.8' | ||
jvmTarget = '11' | ||
} | ||
} | ||
|
||
dependencies { | ||
|
||
implementation 'androidx.core:core-ktx:1.8.0' | ||
implementation 'androidx.appcompat:appcompat:1.4.1' | ||
implementation 'com.google.android.material:material:1.5.0' | ||
implementation 'androidx.constraintlayout:constraintlayout:2.1.4' | ||
testImplementation 'junit:junit:4.13.2' | ||
androidTestImplementation 'androidx.test.ext:junit:1.1.3' | ||
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' | ||
|
||
|
||
// EzX | ||
implementation 'com.github.kyuubiran:EzXHelper:1.0.3' | ||
compileOnly("de.robv.android.xposed:api:82") | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
# Add project specific ProGuard rules here. | ||
# You can control the set of applied configuration files using the | ||
# proguardFiles setting in build.gradle. | ||
# | ||
# For more details, see | ||
# http://developer.android.com/guide/developing/tools/proguard.html | ||
|
||
# If your project uses WebView with JS, uncomment the following | ||
# and specify the fully qualified class name to the JavaScript interface | ||
# class: | ||
#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
# public *; | ||
#} | ||
|
||
# Uncomment this to preserve the line number information for | ||
# debugging stack traces. | ||
#-keepattributes SourceFile,LineNumberTable | ||
|
||
# If you keep the line number information, uncomment this to | ||
# hide the original source file name. | ||
#-renamesourcefileattribute SourceFile |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
{ | ||
"version": 3, | ||
"artifactType": { | ||
"type": "APK", | ||
"kind": "Directory" | ||
}, | ||
"applicationId": "foss.coolest.fucker", | ||
"variantName": "release", | ||
"elements": [ | ||
{ | ||
"type": "SINGLE", | ||
"filters": [], | ||
"attributes": [], | ||
"versionCode": 1, | ||
"versionName": "1.1-F♂SS-boy-next-door", | ||
"outputFile": "app-release.apk" | ||
} | ||
], | ||
"elementType": "File" | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package foss.coolest.fucker | ||
|
||
import androidx.test.platform.app.InstrumentationRegistry | ||
import androidx.test.ext.junit.runners.AndroidJUnit4 | ||
|
||
import org.junit.Test | ||
import org.junit.runner.RunWith | ||
|
||
import org.junit.Assert.* | ||
|
||
/** | ||
* Instrumented test, which will execute on an Android device. | ||
* | ||
* See [testing documentation](http://d.android.com/tools/testing). | ||
*/ | ||
@RunWith(AndroidJUnit4::class) | ||
class ExampleInstrumentedTest { | ||
@Test | ||
fun useAppContext() { | ||
// Context of the app under test. | ||
val appContext = InstrumentationRegistry.getInstrumentation().targetContext | ||
assertEquals("foss.coolest.fucker", appContext.packageName) | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
xmlns:tools="http://schemas.android.com/tools"> | ||
|
||
<application | ||
android:allowBackup="true" | ||
android:dataExtractionRules="@xml/data_extraction_rules" | ||
android:enableOnBackInvokedCallback="true" | ||
android:fullBackupContent="@xml/backup_rules" | ||
android:icon="@mipmap/ic_launcher" | ||
android:label="@string/app_name" | ||
android:roundIcon="@mipmap/ic_launcher_round" | ||
android:supportsRtl="true" | ||
android:theme="@style/Theme.这个世界太乱" | ||
tools:targetApi="31"> | ||
<activity | ||
android:name=".ui.MainActivity" | ||
android:exported="true"> | ||
<intent-filter> | ||
<action android:name="android.intent.action.MAIN" /> | ||
|
||
<category android:name="android.intent.category.DEFAULT" /> | ||
</intent-filter> | ||
</activity> | ||
|
||
<meta-data | ||
android:name="xposedmodule" | ||
android:value="true" /> | ||
<meta-data | ||
android:name="xposeddescription" | ||
android:value="@string/xposeddescription" /> | ||
<meta-data | ||
android:name="xposedminversion" | ||
android:value="93" /> | ||
<meta-data | ||
android:name="xposedscope" | ||
android:resource="@array/xposed_scope" /> | ||
</application> | ||
|
||
</manifest> |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
foss.coolest.fucker.xposed.HookEntry |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
package foss.coolest.fucker.ui | ||
|
||
import android.content.ComponentName | ||
import android.content.Intent | ||
import androidx.appcompat.app.AppCompatActivity | ||
import android.os.Bundle | ||
import foss.coolest.fucker.R | ||
import foss.coolest.fucker.databinding.ActivityMainBinding | ||
|
||
class MainActivity : AppCompatActivity() { | ||
|
||
private lateinit var binding: ActivityMainBinding | ||
|
||
|
||
override fun onCreate(savedInstanceState: Bundle?) { | ||
super.onCreate(savedInstanceState) | ||
binding = ActivityMainBinding.inflate(layoutInflater) | ||
setContentView(binding.root) | ||
|
||
when (isActive()) { | ||
true -> { | ||
binding.activeStatus.text = "模块已激活" | ||
binding.titleTip.text = "资本or自由? 自由!\uD83C\uDFC1" | ||
} | ||
false -> { | ||
binding.titleCard.setBackgroundColor(resources.getColor(R.color.lightRed,resources.newTheme())) | ||
binding.activeStatus.text = "模块没激活" | ||
binding.titleTip.text = "资本or自由? 资本!\uD83D\uDC94" | ||
} | ||
} | ||
|
||
binding.openPangGuaiShengHuo.setOnClickListener { | ||
startActivity(Intent().apply { | ||
action = "com.qiekj.user" | ||
flags = Intent.FLAG_ACTIVITY_NEW_TASK | ||
component = | ||
ComponentName("com.qiekj.user", "com.qiekj.user.MainActivity") | ||
}) | ||
} | ||
|
||
|
||
} | ||
|
||
private fun isActive() = false | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,54 @@ | ||
package foss.coolest.fucker.xposed | ||
|
||
import com.github.kyuubiran.ezxhelper.BuildConfig | ||
import com.github.kyuubiran.ezxhelper.init.EzXHelperInit | ||
import com.github.kyuubiran.ezxhelper.utils.findMethod | ||
import com.github.kyuubiran.ezxhelper.utils.hookBefore | ||
import de.robv.android.xposed.IXposedHookLoadPackage | ||
import de.robv.android.xposed.IXposedHookZygoteInit | ||
import de.robv.android.xposed.callbacks.XC_LoadPackage | ||
import foss.coolest.fucker.xposed.hooks.hookPangGuaiShengHuo | ||
|
||
class HookEntry : IXposedHookLoadPackage, IXposedHookZygoteInit { | ||
|
||
override fun initZygote(startupParam: IXposedHookZygoteInit.StartupParam) { | ||
EzXHelperInit.initZygote(startupParam) | ||
} | ||
|
||
@Throws(Throwable::class) | ||
override fun handleLoadPackage(lpparam: XC_LoadPackage.LoadPackageParam) { | ||
/* | ||
lpparam: XC_LoadPackage.LoadPackageParam | ||
*/ | ||
val packageName: String = lpparam.packageName | ||
EzXHelperInit.initHandleLoadPackage(lpparam) | ||
|
||
//模块激活状态 | ||
if (lpparam.packageName == "foss.coolest.fucker") { | ||
findMethod("xposed.fucker.ui.MainActivity") { | ||
name == "isActive" && returnType == Boolean::class.java | ||
}.hookBefore { | ||
|
||
it.result = true | ||
} | ||
/*XposedBridge.log(" QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQf") | ||
XposedBridge.log(" QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQf") | ||
XposedBridge.log(" aa qap QQQQQQQQQQQQQQQQ??4QQQP????QQQQ??4QQQQQQf") | ||
XposedBridge.log(" yQP QQf qQQQQQQQQQQQQQQp QQQQf QQQQQ ]QQ6 Qf ]QQQQQQf") | ||
XposedBridge.log(" qyQQ yQQQQQQQQ6 aQQ” QQQQP?QQf QQQQ?” J 4QQQf") | ||
XposedBridge.log(" yQQQQQQP ]QQ QQ” qyQQQ6Q6a QQQQp )” qP?4QQ ]QQ? qp )” ]f QQQf") | ||
XposedBridge.log(" )P?]QQ qQQ]QQQQa ayQQ?QQf?4QQ6p QQQQQQa )6 )W ]QQp )???? qf Qf QQQf") | ||
XposedBridge.log(" ]QfqQQP]QQ)WQ6 yQQQ? QQf )4QP QQQQQQP / y ]QQQaap aay” Qf qQQQf") | ||
XposedBridge.log(" ]QfQQP ]QQ )WQ )?” QQf QQQQQ? qQaayQQQ ]QQQ??” ? ) yQ” ]QQQf") | ||
XposedBridge.log(" yQf qQQQQf QQf QQQP” yQQQWP yQQp qaap yQQQf") | ||
XposedBridge.log(" )?” ???? )? QQQQaaQQQQQQ6aaaaQQQQQQQQQQW6ayQaaaQQQQQf") | ||
XposedBridge.log(" QQQQQQQQQQQQQQQWQQQQQQQQQQQQQQQQQWQQQQQQf") | ||
XposedBridge.log(" QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQf")*/ | ||
} | ||
|
||
// 胖乖生活 | ||
if("com.qiekj.user" == packageName){ | ||
hookPangGuaiShengHuo(lpparam) | ||
} | ||
} | ||
} |