feat(ESP): 新增实体绘制信息显示功能 fix(ESP): 修复坐标读取和保存的逻辑问题 style(ESP): 统一代码格式和缩进 docs(ESP): 添加关键方法注释
207 lines
7.4 KiB
Java
207 lines
7.4 KiB
Java
package com.bytecat.algui.ui;
|
|
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.os.AsyncTask;
|
|
import android.app.Activity;
|
|
import com.bytecat.algui.AlguiHacker.AlguiRootClient;
|
|
import com.bytecat.algui.AlguiHacker.AlguiRootService;
|
|
import com.bytecat.algui.AlguiManager.AlguiAssets;
|
|
import com.bytecat.algui.AlguiManager.AlguiCallback;
|
|
import com.bytecat.algui.AlguiManager.AlguiDocument;
|
|
import com.bytecat.algui.AlguiTools.AlguiToolAudio;
|
|
import com.bytecat.algui.AlguiTools.AlguiToolNative;
|
|
import com.bytecat.algui.AlguiTools.AlguiToolNetwork;
|
|
import com.bytecat.algui.AlguiWindows.AlguiWin2FA;
|
|
import com.bytecat.algui.AlguiWindows.AlguiWinInform;
|
|
import com.bytecat.algui.MainActivity;
|
|
import com.bytecat.algui.effect.DynamicArrayList;
|
|
import com.bytecat.algui.effect.Notification;
|
|
import com.bytecat.algui.ui.button.FloatButton;
|
|
import com.topjohnwu.superuser.ipc.RootService;
|
|
import java.util.HashMap;
|
|
import com.bytecat.algui.effect.ArrayList;
|
|
import java.util.concurrent.ExecutorService;
|
|
import java.util.concurrent.Executors;
|
|
|
|
import android.os.Build;
|
|
import android.view.Gravity;
|
|
import com.bytecat.algui.AlguiViews.AlguiV;
|
|
import com.bytecat.algui.ui.category.RemoteLinkWatcher;
|
|
import com.bytecat.algui.effect.ModuleManager;
|
|
import android.text.TextUtils;
|
|
|
|
public class Main {
|
|
public static boolean alreadyloggin;
|
|
public static boolean vt1 = true;
|
|
public static boolean vt2 = false;
|
|
public static boolean vt3 = false;
|
|
// 水印单例,全局可用
|
|
public static AlguiV.TVNoSignalText tvNoSignal = null;
|
|
private static ExecutorService executor = Executors.newSingleThreadExecutor(); // 创建一个单线程线程池
|
|
|
|
public static void 音效播放() {
|
|
if (vt1) {
|
|
AlguiToolAudio.playAudio(aContext, "vt1.ogg");
|
|
}
|
|
|
|
if (vt2) {
|
|
AlguiToolAudio.playAudio(aContext, "vt2.ogg");
|
|
}
|
|
|
|
if (vt3) {
|
|
AlguiToolAudio.playAudio(aContext, "vt3.ogg");
|
|
}
|
|
}
|
|
|
|
public static void 音效() {
|
|
new Thread(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
音效播放(); // 调用音效方法
|
|
}
|
|
}).start();
|
|
}
|
|
|
|
public static void 远控音效() {
|
|
AlguiToolAudio.playAudio(aContext, "cont.ogg");
|
|
}
|
|
|
|
public static String km;
|
|
|
|
// 内存修改示例
|
|
public static boolean initialized;
|
|
|
|
public static DynamicArrayList arrayList;
|
|
|
|
public static Notification notification;
|
|
|
|
public static FloatButton floatButton;
|
|
|
|
// 网络验证
|
|
private static boolean is2FA = true;
|
|
|
|
private static Context aContext; // 确保 aContext 被正确声明
|
|
|
|
// 声明一个静态变量来保存当前活动
|
|
public static Activity currentActivity;
|
|
|
|
private static void Net2FA(final Activity currentActivity) {
|
|
AlguiWin2FA.Get(currentActivity, currentActivity)
|
|
.setCatWYAppID("57182")
|
|
.setCatWYAppCode("1.0")
|
|
.setCatWYOkCode(42589214)
|
|
.setCatWYAppKey("LL9EeZ8LResQ899i")
|
|
.setCatWYRC4_2("11L79sm1O5y57182")
|
|
.addRemoteFieldName("otone")
|
|
.addRemoteFieldName("ottwo")
|
|
.startWY(new AlguiCallback.WY2FA() {
|
|
|
|
public void success(String kami, String user, String vip, HashMap<String, String> remote) {
|
|
}
|
|
|
|
public void success(String kami, String expireTime, HashMap<String, String> field) {
|
|
MyMenu(kami, expireTime, field, currentActivity);
|
|
}
|
|
});
|
|
}
|
|
|
|
private static void MyMenu(final String kami, final String expireTime, HashMap<String, String> field,
|
|
final Activity currentActivity) {
|
|
AlguiToolNative.loadLibrary("Algui");
|
|
RootService.bind(new Intent(currentActivity, AlguiRootClient.class), new AlguiRootService());
|
|
|
|
String km = kami;
|
|
String time = expireTime;
|
|
String value1 = field.getOrDefault("otone", "这是远程变量获取失败时的默认值");
|
|
String value2 = field.getOrDefault("ottwo", "这是远程变量获取失败时的默认值");
|
|
final String markcode = android.os.Build.FINGERPRINT;
|
|
|
|
new AsyncTask<Void, Void, String>() {
|
|
@Override
|
|
protected String doInBackground(Void... voids) {
|
|
String codeList = AlguiToolNetwork.get(AlguiDocument.getRead("codeList"));
|
|
long count = 0;
|
|
if (codeList != null) {
|
|
for (int i = 0; i < codeList.length(); i++) {
|
|
if (codeList.charAt(i) == ';') {
|
|
count++;
|
|
}
|
|
}
|
|
}
|
|
if (codeList != null && !codeList.contains(markcode)) {
|
|
AlguiToolNetwork.get(AlguiDocument.getAdd("codeList", markcode + ";"));
|
|
count++;
|
|
|
|
return "欢迎新用户!你是第" + count + "个用户";
|
|
}
|
|
|
|
return "全网人数:" + count;
|
|
}
|
|
|
|
@Override
|
|
protected void onPostExecute(String result) {
|
|
AlguiToolAudio.playAudio(aContext, "oopen.ogg");
|
|
|
|
alreadyloggin = true;
|
|
|
|
// 远控
|
|
RemoteLinkWatcher.startWatching(
|
|
"https://sharechain.qq.com/a3d3ef114852299548ab41773813c9bc",
|
|
"https://sharechain.qq.com/788e56aa9ad0ebb26f149c12c535e916",
|
|
MIX.getContext());
|
|
|
|
final AlguiV a = AlguiV.Get(aContext);// 获取UI快速构建器
|
|
// 绘制静态视图到屏幕上
|
|
a.WinDraw(
|
|
a.TextTag(null, "" + Build.BRAND + "\nAndroid" + Build.VERSION.RELEASE + "\nTrosCore v1.0.0",
|
|
0xCE000000, expireTime)
|
|
.setCatTextSize(8)
|
|
.setCatTextColor(0xFFFFFFFF), // 绘制的视图
|
|
Gravity.BOTTOM | Gravity.START, // 坐标原点 (这里右上原点)
|
|
10, 10, // 相对原点xy偏移
|
|
false// 视图是否可接收触摸事件
|
|
);
|
|
|
|
final AlguiV.TVNoSignalText tvNoSignal = new AlguiV.TVNoSignalText();
|
|
tvNoSignal.start("TrosCore\nAccount:" + kami); // 开
|
|
|
|
// 初始化 MIX
|
|
MIX.init(currentActivity);
|
|
|
|
String userName = TextUtils.isEmpty(AlguiWin2FA.wy_user)
|
|
? "TrosCore用户"
|
|
: AlguiWin2FA.wy_user;
|
|
|
|
ModuleManager.getInstance().setModuleEnabled(
|
|
"TrosCore",
|
|
true,
|
|
"Version:1.0.0 User:" + userName);
|
|
|
|
}
|
|
}.execute();
|
|
}
|
|
|
|
private Main() {
|
|
throw new UnsupportedOperationException("cannot be instantiated");
|
|
}
|
|
|
|
public static final String TAG = "Main";
|
|
|
|
public static void start(Context c) {
|
|
aContext = c;
|
|
final Activity activity = (Activity) c;
|
|
currentActivity = activity;
|
|
activity.getWindow().getDecorView().postDelayed(new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
if (is2FA) {
|
|
Net2FA(activity);
|
|
} else {
|
|
MyMenu("Free", "无限期", new HashMap<String, String>(), activity);
|
|
}
|
|
}
|
|
}, 350L);
|
|
}
|
|
}
|