2019-12-31 17:36:28 +08:00
|
|
|
package com.qy.ui;
|
|
|
|
|
|
|
|
import java.awt.Color;
|
|
|
|
import java.awt.Desktop;
|
2020-05-19 17:44:10 +08:00
|
|
|
import java.awt.datatransfer.DataFlavor;
|
|
|
|
import java.awt.datatransfer.Transferable;
|
|
|
|
import java.awt.datatransfer.UnsupportedFlavorException;
|
2019-12-31 17:36:28 +08:00
|
|
|
import java.awt.event.ActionEvent;
|
|
|
|
import java.awt.event.ActionListener;
|
|
|
|
import java.awt.event.MouseAdapter;
|
|
|
|
import java.awt.event.MouseEvent;
|
2020-05-19 17:44:10 +08:00
|
|
|
import java.io.BufferedReader;
|
2019-12-31 17:36:28 +08:00
|
|
|
import java.io.File;
|
|
|
|
import java.io.IOException;
|
2020-05-19 17:44:10 +08:00
|
|
|
import java.io.InputStreamReader;
|
2020-02-21 17:37:20 +08:00
|
|
|
import java.security.Permission;
|
2020-05-19 17:44:10 +08:00
|
|
|
import java.util.*;
|
2019-12-31 17:36:28 +08:00
|
|
|
import java.util.Timer;
|
2020-05-19 17:44:10 +08:00
|
|
|
|
|
|
|
import javax.swing.*;
|
2019-12-31 17:36:28 +08:00
|
|
|
import javax.swing.border.LineBorder;
|
|
|
|
|
2020-05-11 09:52:36 +08:00
|
|
|
import com.qy.utils.*;
|
2020-02-21 17:37:20 +08:00
|
|
|
import com.sun.javaws.exceptions.ExitException;
|
2019-12-31 17:36:28 +08:00
|
|
|
import org.json.JSONArray;
|
|
|
|
import org.json.JSONObject;
|
|
|
|
|
|
|
|
import com.qy.Interfaces.SmaliApkToolsPath;
|
|
|
|
|
|
|
|
public class AppMain extends JFrame {
|
2020-02-16 21:49:13 +08:00
|
|
|
private JList<String> configList;
|
|
|
|
private JButton zipToJar, jarToBase, reload, btnAdbPull;
|
|
|
|
private JTextField log;
|
|
|
|
public static JSONObject json;
|
2020-05-19 17:44:10 +08:00
|
|
|
private Vector<String> vector, phonePackageList = new Vector<>();
|
|
|
|
private Map<String, String> adbMap;
|
2020-02-16 21:49:13 +08:00
|
|
|
public static boolean isOpenWindows = false;
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
private static final long serialVersionUID = 1L;
|
2020-05-19 17:44:10 +08:00
|
|
|
private JComboBox<String> txtCom;
|
2020-02-16 21:49:13 +08:00
|
|
|
private JButton btnUserBase;
|
2020-05-19 17:44:10 +08:00
|
|
|
private JComboBox<String> textPackName;
|
2020-02-16 21:49:13 +08:00
|
|
|
private JButton btnRestartapp;
|
|
|
|
private JLabel lblactivity;
|
|
|
|
private JTextField textActivity;
|
|
|
|
private JMenuBar menuBar;
|
|
|
|
private JTextField uFilePath;
|
|
|
|
private JSeparator separator;
|
|
|
|
private JMenuItem menuItem_1;
|
|
|
|
private JCheckBox openWindows;
|
|
|
|
private JMenu mnBasetools;
|
|
|
|
private JMenuItem mntmbase;
|
|
|
|
private JMenuItem mntmBase;
|
|
|
|
|
2020-06-03 21:54:11 +08:00
|
|
|
private static String cscPath = null;
|
|
|
|
|
2020-02-16 21:49:13 +08:00
|
|
|
public static void main(String[] args) {
|
2020-06-03 21:54:11 +08:00
|
|
|
/*args = new String[]{"-package=com.test.abc"
|
|
|
|
, "-version=5800"
|
|
|
|
, "-apk=E:\\idea\\tools\\tmp\\app-release-1.apk"
|
|
|
|
, "-csj=E:\\idea\\tools\\csj\\demo.apk"
|
|
|
|
, "-csc=E:\\idea\\tools\\csj\\out\\csc"};*/
|
2020-02-16 21:49:13 +08:00
|
|
|
// TODO Auto-generated method stub
|
2020-06-03 21:54:11 +08:00
|
|
|
if (args.length == 0) {
|
|
|
|
new AppMain();
|
|
|
|
} else {
|
|
|
|
String packageName = null;
|
|
|
|
String version = null;
|
|
|
|
String apkPath = null;
|
|
|
|
String csjPath = null;
|
|
|
|
|
|
|
|
for (String arg : args) {
|
|
|
|
if (arg.startsWith("-package")) {
|
|
|
|
packageName = arg.replace("-package=", "");
|
|
|
|
}
|
|
|
|
if (arg.startsWith("-version")) {
|
|
|
|
version = arg.replace("-version=", "");
|
|
|
|
}
|
|
|
|
if (arg.startsWith("-apk")) {
|
|
|
|
apkPath = arg.replace("-apk=", "");
|
|
|
|
}
|
|
|
|
if (arg.startsWith("-csj")) {
|
|
|
|
csjPath = arg.replace("-csj=", "");
|
|
|
|
}
|
|
|
|
if (arg.startsWith("-csc")) {
|
|
|
|
cscPath = arg.replace("-csc=", "");
|
|
|
|
}
|
|
|
|
if (arg.trim().equals("-h")) {
|
|
|
|
System.err.println("-package packageName " +
|
|
|
|
"\n-version CsjVersion" +
|
|
|
|
"\n-apk apkFilePath" +
|
|
|
|
"\n-csj csjDemoApkFilePath" +
|
|
|
|
"\n-csc csc save Path");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (packageName != null && version != null && apkPath != null && csjPath != null) {
|
|
|
|
new CsjTools(apkPath, csjPath, packageName, version, new SmaliApkToolsPath() {
|
|
|
|
@Override
|
|
|
|
public void smaliPath(String path) {
|
|
|
|
if (cscPath != null) {
|
|
|
|
File file = new File(path);
|
|
|
|
file.renameTo(new File(cscPath));
|
|
|
|
}
|
2020-02-21 17:37:20 +08:00
|
|
|
|
2020-06-03 21:54:11 +08:00
|
|
|
}
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
System.err.println("-package packageName " +
|
|
|
|
"\n-version CsjVersion" +
|
|
|
|
"\n-apk apkFilePath" +
|
|
|
|
"\n-csj csjDemoApkFilePath" +
|
|
|
|
"\n-csc csc save Path");
|
|
|
|
}
|
|
|
|
}
|
2020-02-16 21:49:13 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
public AppMain() {
|
2020-02-21 17:37:20 +08:00
|
|
|
|
2020-02-16 21:49:13 +08:00
|
|
|
setResizable(false);
|
|
|
|
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
|
|
|
json = Tools.loadConfig(new File("config.cfg"));
|
2020-05-19 17:44:10 +08:00
|
|
|
initPhonePackageList();
|
|
|
|
initAdbData();
|
2020-02-16 21:49:13 +08:00
|
|
|
initView();
|
|
|
|
initData();
|
|
|
|
log.setText("已载入配置文件");
|
|
|
|
|
|
|
|
separator = new JSeparator();
|
|
|
|
separator.setBounds(247, 149, 158, 2);
|
|
|
|
getContentPane().add(separator);
|
|
|
|
|
|
|
|
repaint();
|
|
|
|
}
|
|
|
|
|
2020-05-19 17:44:10 +08:00
|
|
|
private void initAdbData() {
|
|
|
|
adbMap = new HashMap<>(9);
|
2020-06-03 09:41:10 +08:00
|
|
|
adbMap.put("开屏", "adb shell am broadcast -a com.android.model.debug --es package \"[packname]\" --es type \"open\"");
|
|
|
|
adbMap.put("插屏", "adb shell am broadcast -a com.android.model.debug --es package \"[packname]\" --es type \"inter\"");
|
|
|
|
adbMap.put("banner", "adb shell am broadcast -a com.android.model.debug --es package \"[packname]\" --es type \"banner\"");
|
|
|
|
adbMap.put("视频", "adb shell am broadcast -a com.android.model.debug --es package \"[packname]\" --es type \"video\"");
|
|
|
|
adbMap.put("激励视频", "adb shell am broadcast -a com.android.model.debug --es package \"[packname]\" --es type \"reward\"");
|
|
|
|
adbMap.put("SDK信息", "adb shell am broadcast -a com.android.model.debug --es package \"[packname]\" --es type \"systemTest\"");
|
|
|
|
adbMap.put("重载网络", "adb shell am broadcast -a com.android.model.debug --es package \"[packname]\" --es type \"reloadApi\"");
|
|
|
|
adbMap.put("获取广告参数", "adb shell am broadcast -a com.android.model.debug --es package \"[packname]\" --es type \"adBean\"");
|
|
|
|
adbMap.put("查看日志", "adb shell am broadcast -a com.android.model.debug --es package \"[packname]\" --es type \"logcat\"");
|
2020-05-19 17:44:10 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
private void initPhonePackageList() {
|
|
|
|
try {
|
|
|
|
phonePackageList.clear();
|
|
|
|
Process process = Runtime.getRuntime().exec("adb shell pm list packages");
|
|
|
|
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
|
|
|
|
String tmp;
|
|
|
|
while ((tmp = reader.readLine()) != null) {
|
|
|
|
phonePackageList.add(tmp.substring(8));
|
|
|
|
}
|
|
|
|
Collections.sort(phonePackageList);
|
|
|
|
} catch (Exception e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-02-16 21:49:13 +08:00
|
|
|
private void initData() {
|
|
|
|
JSONArray array = json.getJSONArray("array");
|
|
|
|
vector = new Vector<>();
|
|
|
|
for (int i = 0; i < array.length(); i++) {
|
|
|
|
vector.add(array.getString(i));
|
|
|
|
}
|
|
|
|
configList.setListData(vector);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void initView() {
|
|
|
|
try {
|
|
|
|
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
|
|
|
|
} catch (Exception e) {
|
|
|
|
// TODO: handle exception
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
2020-05-19 17:44:10 +08:00
|
|
|
setTitle("\u8F6C\u6362\u5668v2.10");
|
2020-02-16 21:49:13 +08:00
|
|
|
// TODO Auto-generated constructor stub
|
|
|
|
setSize(900, 456);
|
|
|
|
getContentPane().setLayout(null);
|
|
|
|
|
|
|
|
configList = new JList<String>();
|
|
|
|
configList.setBounds(0, 0, 1, 1);
|
|
|
|
|
|
|
|
JScrollPane scrollBar = new JScrollPane(configList);
|
|
|
|
scrollBar.setBounds(51, 49, 147, 215);
|
|
|
|
getContentPane().add(scrollBar);
|
|
|
|
|
|
|
|
zipToJar = new JButton("\u8F6Cjar");
|
|
|
|
zipToJar.addMouseListener(new MouseAdapter() {
|
|
|
|
File file;
|
|
|
|
Timer timer;
|
|
|
|
String name, path;
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void mouseClicked(MouseEvent e) {
|
|
|
|
if (configList.getSelectedIndex() < 0) {
|
|
|
|
new TextToDalog("警告", "列表未选择");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
json.put("switch", configList.getSelectedIndex() + 1 + "");
|
|
|
|
path = json.getString("out");
|
2020-03-13 17:30:40 +08:00
|
|
|
name = json.getJSONArray("array").getString(Integer.parseInt(json.getString("switch")) - 1) + ".jar";
|
2020-02-16 21:49:13 +08:00
|
|
|
file = new File(path + name);
|
|
|
|
if (file.exists())
|
|
|
|
file.delete();
|
|
|
|
|
|
|
|
JarToAJar.start(json);
|
|
|
|
|
|
|
|
timer = new Timer();
|
|
|
|
timer.schedule(new TimerTask() {
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void run() {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
if (file.exists()) {
|
|
|
|
log.setText("已生成" + name);
|
|
|
|
timer.cancel();
|
|
|
|
} else {
|
|
|
|
log.setText("正在生成");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}, 0, 100);
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
zipToJar.setBounds(247, 72, 158, 27);
|
|
|
|
getContentPane().add(zipToJar);
|
|
|
|
|
|
|
|
jarToBase = new JButton("\u52A0\u5BC6Jar");
|
|
|
|
|
|
|
|
jarToBase.addMouseListener(new MouseAdapter() {
|
|
|
|
@Override
|
|
|
|
public void mouseClicked(MouseEvent e) {
|
|
|
|
if (configList.getSelectedIndex() < 0) {
|
|
|
|
new TextToDalog("警告", "列表未选择");
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
json.put("switch", configList.getSelectedIndex() + 1 + "");
|
|
|
|
new EditToDalog("需要版本号", "请输入资源版本号", "", new SmaliApkToolsPath() {
|
|
|
|
String version;
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void smaliPath(String path) {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
version = path;
|
|
|
|
if (version == null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
new EditToDalog("资源类型", "请输入资源类型\n0=内核\n4=自主广告\n1=广点通\n5=聚量\n11=万维\n13=穿山甲", "", new SmaliApkToolsPath() {
|
|
|
|
@Override
|
|
|
|
public void smaliPath(String path) {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
File input = new File(json.getString("out")
|
2020-05-19 17:44:10 +08:00
|
|
|
+ json.getJSONArray("array").getString(Integer.parseInt(json.getString("switch")) - 1) + ".jar");
|
2020-03-13 17:30:40 +08:00
|
|
|
Tools.toAJar(json.getString("dx"), input.getAbsolutePath(), input.getAbsolutePath().replace(input.getName(), "dexTmp.jar"));
|
2020-02-16 21:49:13 +08:00
|
|
|
File outFile = new EncryptJar().encrypt(new File(input.getAbsolutePath().replace(input.getName(), "dexTmp.jar")), json.getString("out")
|
2020-03-13 17:30:40 +08:00
|
|
|
+ json.getJSONArray("array").getString(Integer.parseInt(json.getString("switch")) - 1) + "_encrypt.jar", Integer.parseInt(path)
|
|
|
|
, Integer.parseInt(version));
|
2020-02-16 21:49:13 +08:00
|
|
|
log.setText("data路径为:" + outFile.getAbsolutePath());
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
/*
|
|
|
|
* JarToBase.start(json.getString("out") +
|
|
|
|
* json.getJSONArray("array").getString(Integer.valueOf(json.getString("switch")
|
|
|
|
* ) - 1) + ".jar", true);
|
|
|
|
*/
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
jarToBase.setBounds(247, 109, 158, 27);
|
|
|
|
getContentPane().add(jarToBase);
|
|
|
|
|
|
|
|
reload = new JButton("\u91CD\u8F7D\u914D\u7F6E\u6587\u4EF6");
|
|
|
|
reload.addMouseListener(new MouseAdapter() {
|
|
|
|
@Override
|
|
|
|
public void mouseClicked(MouseEvent e) {
|
|
|
|
initData();
|
|
|
|
json = Tools.loadConfig(new File("config.cfg"));
|
|
|
|
log.setText("已重置");
|
|
|
|
}
|
|
|
|
});
|
|
|
|
reload.setBounds(51, 13, 153, 27);
|
|
|
|
getContentPane().add(reload);
|
|
|
|
|
|
|
|
log = new JTextField("\u521D\u59CB\u5316");
|
|
|
|
log.setBorder(new LineBorder(Color.BLACK, 0));
|
|
|
|
log.setHorizontalAlignment(SwingConstants.LEFT);
|
|
|
|
log.setForeground(Color.BLACK);
|
|
|
|
log.setEditable(false);
|
|
|
|
log.setBounds(51, 340, 766, 31);
|
|
|
|
getContentPane().add(log);
|
|
|
|
|
2020-05-19 17:44:10 +08:00
|
|
|
Vector<String> adbList = new Vector<>(adbMap.keySet());
|
|
|
|
txtCom = new JComboBox<String>(adbList);
|
|
|
|
//txtCom.setHorizontalAlignment(SwingConstants.LEFT);
|
|
|
|
//txtCom.setText("adb push \"" + new File("").getAbsolutePath() + "/[jar]/data/data/[packname]/plugs/");
|
2020-02-16 21:49:13 +08:00
|
|
|
txtCom.setBounds(444, 73, 293, 27);
|
|
|
|
getContentPane().add(txtCom);
|
2020-05-19 17:44:10 +08:00
|
|
|
//txtCom.setColumns(10);
|
2020-02-16 21:49:13 +08:00
|
|
|
|
|
|
|
JLabel lblAdb = new JLabel("adb\u6307\u4EE4");
|
|
|
|
lblAdb.setBounds(444, 51, 72, 18);
|
|
|
|
getContentPane().add(lblAdb);
|
|
|
|
|
|
|
|
btnAdbPull = new JButton("adb");
|
|
|
|
btnAdbPull.addMouseListener(new MouseAdapter() {
|
|
|
|
@Override
|
|
|
|
public void mouseClicked(MouseEvent e) {
|
2020-05-19 17:44:10 +08:00
|
|
|
String cmd = adbMap.get((String) txtCom.getSelectedItem());
|
|
|
|
cmd = cmd.replace("[packname]", (String) Objects.requireNonNull(textPackName.getSelectedItem()));
|
2020-02-16 21:49:13 +08:00
|
|
|
try {
|
|
|
|
System.out.println(cmd);
|
|
|
|
Runtime.getRuntime().exec("adb root");
|
|
|
|
Runtime.getRuntime().exec("adb remount");
|
|
|
|
Runtime.getRuntime().exec(cmd);
|
|
|
|
log.setText("执行:" + cmd);
|
|
|
|
} catch (IOException e1) {
|
|
|
|
// TODO Auto-generated catch block
|
|
|
|
e1.printStackTrace();
|
|
|
|
log.setText("执行失败");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
btnAdbPull.setBounds(444, 295, 147, 27);
|
|
|
|
getContentPane().add(btnAdbPull);
|
|
|
|
|
|
|
|
new ButtonGroup();
|
|
|
|
|
|
|
|
btnUserBase = new JButton("\u52A0\u5BC6\u6587\u4EF6");
|
|
|
|
btnUserBase.addMouseListener(new MouseAdapter() {
|
|
|
|
File file;
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void mouseClicked(MouseEvent e) {
|
|
|
|
JFileChooser jFile = new JFileChooser(new File(new File("").getAbsolutePath()));
|
|
|
|
jFile.showOpenDialog(null);
|
|
|
|
file = jFile.getSelectedFile();
|
|
|
|
new EditToDalog("需要版本号", "请输入资源版本号", "", new SmaliApkToolsPath() {
|
|
|
|
String version;
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void smaliPath(String path) {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
version = path;
|
|
|
|
if (version == null) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
new EditToDalog("资源类型", "请输入资源类型\n0=内核\n4=自主广告\n1=广点通\n5=聚量\n11=万维\n13=穿山甲", "", new SmaliApkToolsPath() {
|
|
|
|
@Override
|
|
|
|
public void smaliPath(String path) {
|
|
|
|
// TODO Auto-generated method stub
|
2020-03-13 17:30:40 +08:00
|
|
|
Tools.toAJar(json.getString("dx"), file.getAbsolutePath(), file.getAbsolutePath().replace(file.getName(), "dexTmp.jar"));
|
2020-02-16 21:49:13 +08:00
|
|
|
File fileOut = new EncryptJar().encrypt(new File(file.getAbsolutePath().replace(file.getName(), "dexTmp.jar")), file.getAbsolutePath() + "_encrypt.jar", Integer.valueOf(path)
|
2020-05-19 17:44:10 +08:00
|
|
|
, Integer.parseInt(version));
|
2020-02-16 21:49:13 +08:00
|
|
|
System.out.println("data路径为:" + fileOut.getAbsolutePath());
|
|
|
|
if (log != null)
|
|
|
|
log.setText("data路径为:" + fileOut.getAbsolutePath());
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
//JarToBase.start(file.getAbsolutePath(), true);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
btnUserBase.setBounds(247, 160, 158, 27);
|
|
|
|
getContentPane().add(btnUserBase);
|
|
|
|
|
|
|
|
JButton btnNewButton = new JButton("\u89E3\u5BC6\u6587\u4EF6");
|
|
|
|
btnNewButton.addMouseListener(new MouseAdapter() {
|
|
|
|
@Override
|
|
|
|
public void mouseClicked(MouseEvent e) {
|
|
|
|
JFileChooser jFile = new JFileChooser(new File(new File("").getAbsolutePath()));
|
|
|
|
jFile.showOpenDialog(null);
|
|
|
|
File file = jFile.getSelectedFile();
|
|
|
|
String fileName = file.getAbsolutePath();
|
|
|
|
if (fileName.endsWith("_encrypt.jar")) {
|
|
|
|
fileName = fileName.replace("_encrypt.jar", "_decrypt.jar");
|
|
|
|
} else {
|
|
|
|
fileName += "_decrypt.jar";
|
|
|
|
}
|
|
|
|
EncryptJar.FileData data = new EncryptJar().decrypt(file, fileName);
|
|
|
|
new TextToDalog("解码提示", data.toString());
|
|
|
|
//JarToBase.start(file.getAbsolutePath(), false);
|
|
|
|
log.setText("已解码");
|
|
|
|
}
|
|
|
|
});
|
|
|
|
btnNewButton.setBounds(247, 200, 158, 27);
|
|
|
|
getContentPane().add(btnNewButton);
|
|
|
|
|
|
|
|
openWindows = new JCheckBox("\u6253\u5F00\u7A97\u53E3");
|
|
|
|
openWindows.addActionListener(new ActionListener() {
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
isOpenWindows = openWindows.isSelected();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
openWindows.setBounds(247, 30, 133, 31);
|
|
|
|
getContentPane().add(openWindows);
|
|
|
|
|
|
|
|
JLabel label = new JLabel("\u5305\u540D");
|
|
|
|
label.setBounds(444, 113, 72, 18);
|
|
|
|
getContentPane().add(label);
|
|
|
|
|
2020-05-19 17:44:10 +08:00
|
|
|
textPackName = new JComboBox<String>(phonePackageList);
|
2020-02-16 21:49:13 +08:00
|
|
|
textPackName.setBounds(444, 135, 293, 24);
|
|
|
|
getContentPane().add(textPackName);
|
|
|
|
|
|
|
|
btnRestartapp = new JButton("\u91CD\u542FAPP");
|
|
|
|
btnRestartapp.addMouseListener(new MouseAdapter() {
|
|
|
|
@Override
|
|
|
|
public void mouseClicked(MouseEvent e) {
|
|
|
|
try {
|
2020-05-19 17:44:10 +08:00
|
|
|
Runtime.getRuntime().exec("adb shell am force-stop " + (String) textPackName.getSelectedItem());
|
2020-02-16 21:49:13 +08:00
|
|
|
Runtime.getRuntime()
|
2020-05-19 17:44:10 +08:00
|
|
|
.exec("adb shell am start " + (String) textPackName.getSelectedItem() + File.separator + textActivity.getText());
|
2020-02-16 21:49:13 +08:00
|
|
|
log.setText("重启完毕");
|
2020-05-19 17:44:10 +08:00
|
|
|
System.out.println("adb shell am start " + (String) textPackName.getSelectedItem() + File.separator + textActivity.getText());
|
2020-02-16 21:49:13 +08:00
|
|
|
} catch (IOException e1) {
|
|
|
|
// TODO Auto-generated catch block
|
|
|
|
e1.printStackTrace();
|
|
|
|
log.setText("重启失败");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
btnRestartapp.setBounds(595, 295, 147, 27);
|
|
|
|
getContentPane().add(btnRestartapp);
|
|
|
|
|
|
|
|
lblactivity = new JLabel("\u4E3BActivity");
|
|
|
|
lblactivity.setBounds(444, 164, 119, 18);
|
|
|
|
getContentPane().add(lblactivity);
|
|
|
|
|
|
|
|
textActivity = new JTextField();
|
|
|
|
textActivity.setText(".MainActivity");
|
|
|
|
textActivity.setBounds(444, 185, 293, 24);
|
|
|
|
getContentPane().add(textActivity);
|
|
|
|
textActivity.setColumns(10);
|
|
|
|
|
|
|
|
JButton btnJavatoajar = new JButton("Jar\u8F6C\u5B89\u5353Jar");
|
|
|
|
btnJavatoajar.addMouseListener(new MouseAdapter() {
|
|
|
|
@Override
|
|
|
|
public void mouseClicked(MouseEvent e) {
|
|
|
|
JFileChooser chooser = new JFileChooser(new File(new File("").getAbsolutePath()));
|
|
|
|
chooser.showOpenDialog(null);
|
|
|
|
File java = chooser.getSelectedFile();
|
2020-03-13 17:30:40 +08:00
|
|
|
Tools.toAJar(json.getString("dx"), java.getAbsolutePath(),
|
2020-02-16 21:49:13 +08:00
|
|
|
new File("").getAbsolutePath() + File.separator + java.getName() + "_jar.jar");
|
|
|
|
if (AppMain.isOpenWindows) {
|
|
|
|
try {
|
|
|
|
Desktop.getDesktop().open(new File(new File("").getAbsolutePath()));
|
|
|
|
} catch (IOException e1) {
|
|
|
|
// TODO Auto-generated catch block
|
|
|
|
e1.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
log.setText("已转为Android可用java");
|
|
|
|
}
|
|
|
|
});
|
|
|
|
btnJavatoajar.setBounds(247, 237, 158, 27);
|
|
|
|
getContentPane().add(btnJavatoajar);
|
|
|
|
|
|
|
|
JLabel label_t = new JLabel("\u83B7\u53D6\u81EA\u5B9A\u4E49\u6587\u4EF6\u8DEF\u5F84");
|
|
|
|
label_t.setBounds(444, 215, 208, 18);
|
|
|
|
getContentPane().add(label_t);
|
|
|
|
|
|
|
|
uFilePath = new JTextField();
|
|
|
|
uFilePath.setBounds(444, 238, 293, 24);
|
|
|
|
getContentPane().add(uFilePath);
|
|
|
|
uFilePath.setColumns(10);
|
|
|
|
|
2020-05-19 17:44:10 +08:00
|
|
|
JButton button = new JButton("刷新包名");
|
2020-02-16 21:49:13 +08:00
|
|
|
button.addMouseListener(new MouseAdapter() {
|
|
|
|
@Override
|
|
|
|
public void mouseClicked(MouseEvent e) {
|
2020-05-19 17:44:10 +08:00
|
|
|
initPhonePackageList();
|
|
|
|
log.setText("获取手机包名完毕");
|
2020-02-16 21:49:13 +08:00
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
button.setBounds(755, 235, 113, 27);
|
|
|
|
getContentPane().add(button);
|
|
|
|
|
|
|
|
menuBar = new JMenuBar();
|
|
|
|
|
|
|
|
setJMenuBar(menuBar);
|
|
|
|
|
|
|
|
JMenu mnNewMenu = new JMenu("\u83DC\u5355");
|
|
|
|
menuBar.add(mnNewMenu);
|
|
|
|
|
|
|
|
JMenuItem menuItem = new JMenuItem("\u91CD\u542F");
|
|
|
|
menuItem.addActionListener(new ActionListener() {
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
dispose();
|
|
|
|
new AppMain();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
mnNewMenu.add(menuItem);
|
|
|
|
|
|
|
|
JMenu menu = new JMenu("\u5DE5\u5177");
|
|
|
|
menuBar.add(menu);
|
|
|
|
|
|
|
|
JMenuItem mntmAes = new JMenuItem("AES\u5DE5\u5177");
|
|
|
|
mntmAes.addActionListener(new ActionListener() {
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
new AESUi();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
menu.add(mntmAes);
|
|
|
|
|
|
|
|
JMenuItem mntmSmali = new JMenuItem("Smali\u5DE5\u5177");
|
|
|
|
mntmSmali.addActionListener(new ActionListener() {
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
new SmaliUi();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
menu.add(mntmSmali);
|
|
|
|
|
|
|
|
JMenuItem mntmsdk = new JMenuItem("\u4E00\u952E\u77ED\u4EE3SDK");
|
|
|
|
mntmsdk.addActionListener(new ActionListener() {
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
new SMSToolsUi();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
menu.add(mntmsdk);
|
|
|
|
|
|
|
|
menuItem_1 = new JMenuItem("\u67E5\u770B\u7B7E\u540D");
|
|
|
|
menuItem_1.addActionListener(new ActionListener() {
|
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
new AndroidKey();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
menu.add(menuItem_1);
|
|
|
|
|
|
|
|
JMenuItem mntmOnweay = new JMenuItem("\u4FEE\u6539\u4E07\u7EF4\u63D2\u4EF6\u5305");
|
|
|
|
mntmOnweay.addActionListener(new ActionListener() {
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
JFileChooser chooser = new JFileChooser(new File(new File("").getAbsolutePath()));
|
|
|
|
chooser.showOpenDialog(null);
|
|
|
|
File file = chooser.getSelectedFile();
|
|
|
|
uFilePath.setText(file.getAbsolutePath());
|
|
|
|
log.setText("正在修改万维插件包...");
|
|
|
|
new OneWayTools(file);
|
|
|
|
log.setText("修改万维成功,成功后文件将生成在反编译文件夹中");
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
JMenuItem mntmapk = new JMenuItem("\u7B7E\u540DAPK");
|
|
|
|
mntmapk.addActionListener(new ActionListener() {
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
new ApkSignUi();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
menu.add(mntmapk);
|
|
|
|
menu.add(mntmOnweay);
|
|
|
|
|
|
|
|
JMenuItem mntmsdk_1 = new JMenuItem("\u4FEE\u6539\u7B2C\u4E09\u65B9SDK");
|
|
|
|
mntmsdk_1.addActionListener(new ActionListener() {
|
|
|
|
public void actionPerformed(ActionEvent arg0) {
|
|
|
|
new ModifySdkUi();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
menu.add(mntmsdk_1);
|
|
|
|
|
2020-05-19 17:44:10 +08:00
|
|
|
JMenuItem csj = new JMenuItem("穿山甲资源包");
|
2020-02-26 16:54:44 +08:00
|
|
|
csj.addActionListener(new ActionListener() {
|
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
ChuanShanJiaUi.main(null);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
menu.add(csj);
|
|
|
|
|
2020-05-19 17:44:10 +08:00
|
|
|
JMenuItem autoSDK = new JMenuItem("自动生成SDK");
|
2020-05-11 09:52:36 +08:00
|
|
|
autoSDK.addActionListener(new ActionListener() {
|
|
|
|
String version;
|
|
|
|
String packageName;
|
2020-05-19 17:44:10 +08:00
|
|
|
|
2020-05-11 09:52:36 +08:00
|
|
|
@Override
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
new EditToDalog("提示", "请输入版本号", "", path -> {
|
2020-05-19 17:44:10 +08:00
|
|
|
if (!Tools.stringIsNull(path)) {
|
|
|
|
version = path;
|
2020-06-03 21:54:11 +08:00
|
|
|
packageName = "com." + Tools.getRandomString(5).toLowerCase() + "." + Tools.getRandomString(5).toLowerCase();
|
2020-06-03 09:41:10 +08:00
|
|
|
new EditToDalog("提示", "请输入包名", packageName, path1 -> {
|
2020-05-19 17:44:10 +08:00
|
|
|
if (!Tools.stringIsNull(path1)) {
|
|
|
|
packageName = path1;
|
2020-05-11 09:52:36 +08:00
|
|
|
autoPackageSdk();
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
2020-05-19 17:44:10 +08:00
|
|
|
|
|
|
|
public void autoPackageSdk() {
|
|
|
|
new AutoPackageSDK(path -> new TextToDalog("提示", String.format("打包完成%s", path)), version, packageName);
|
2020-05-11 09:52:36 +08:00
|
|
|
}
|
|
|
|
});
|
|
|
|
menu.add(autoSDK);
|
2020-02-26 16:54:44 +08:00
|
|
|
|
2020-02-16 21:49:13 +08:00
|
|
|
mnBasetools = new JMenu("Base64\u5DE5\u5177");
|
|
|
|
menuBar.add(mnBasetools);
|
|
|
|
|
|
|
|
mntmbase = new JMenuItem("\u8F6CBase64");
|
|
|
|
mntmbase.addActionListener(new ActionListener() {
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
JFileChooser jFile = new JFileChooser(new File(new File("").getAbsolutePath()));
|
|
|
|
jFile.showOpenDialog(null);
|
|
|
|
File file = jFile.getSelectedFile();
|
|
|
|
JarToBase.start(file.getAbsolutePath(), true);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
mnBasetools.add(mntmbase);
|
|
|
|
|
|
|
|
mntmBase = new JMenuItem("Base64\u89E3\u7801");
|
|
|
|
mntmBase.addActionListener(new ActionListener() {
|
|
|
|
public void actionPerformed(ActionEvent e) {
|
|
|
|
JFileChooser jFile = new JFileChooser(new File(new File("").getAbsolutePath()));
|
|
|
|
jFile.showOpenDialog(AppMain.this);
|
|
|
|
File file = jFile.getSelectedFile();
|
|
|
|
JarToBase.start(file.getAbsolutePath(), false);
|
|
|
|
log.setText("已解码");
|
|
|
|
}
|
|
|
|
});
|
|
|
|
mnBasetools.add(mntmBase);
|
|
|
|
|
|
|
|
setVisible(true);
|
|
|
|
}
|
2019-12-31 17:36:28 +08:00
|
|
|
}
|