diff --git a/src/com/qy/ui/AppMain.java b/src/com/qy/ui/AppMain.java index 39f3b2a..90f2fa4 100755 --- a/src/com/qy/ui/AppMain.java +++ b/src/com/qy/ui/AppMain.java @@ -39,486 +39,492 @@ import com.qy.utils.JarToBase; import com.qy.utils.Tools; public class AppMain extends JFrame { - private JList configList; - private JButton zipToJar, jarToBase, reload, btnAdbPull; - private JTextField log; - public static JSONObject json; - private Vector vector; - public static boolean isOpenWindows = false; - /** - * - */ - private static final long serialVersionUID = 1L; - private JTextField txtCom; - private JButton btnUserBase; - private JTextField textPackName; - 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; + private JList configList; + private JButton zipToJar, jarToBase, reload, btnAdbPull; + private JTextField log; + public static JSONObject json; + private Vector vector; + public static boolean isOpenWindows = false; + /** + * + */ + private static final long serialVersionUID = 1L; + private JTextField txtCom; + private JButton btnUserBase; + private JTextField textPackName; + 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; - public static void main(String[] args) { - // TODO Auto-generated method stub - new AppMain(); - } + public static void main(String[] args) { + // TODO Auto-generated method stub + new AppMain(); + } - public AppMain() { - setResizable(false); - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - json = Tools.loadConfig(new File("config.cfg")); - initView(); - initData(); - log.setText("已载入配置文件"); + public AppMain() { + setResizable(false); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + json = Tools.loadConfig(new File("config.cfg")); + initView(); + initData(); + log.setText("已载入配置文件"); - separator = new JSeparator(); - separator.setBounds(247, 149, 158, 2); - getContentPane().add(separator); + separator = new JSeparator(); + separator.setBounds(247, 149, 158, 2); + getContentPane().add(separator); - repaint(); - } + repaint(); + } - 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 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(); - } - setTitle("\u8F6C\u6362\u5668v2.7"); - // TODO Auto-generated constructor stub - setSize(900, 456); - getContentPane().setLayout(null); + private void initView() { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Exception e) { + // TODO: handle exception + e.printStackTrace(); + } + setTitle("\u8F6C\u6362\u5668v2.7"); + // TODO Auto-generated constructor stub + setSize(900, 456); + getContentPane().setLayout(null); - configList = new JList(); - configList.setBounds(0, 0, 1, 1); + configList = new JList(); + configList.setBounds(0, 0, 1, 1); - JScrollPane scrollBar = new JScrollPane(configList); - scrollBar.setBounds(51, 49, 147, 215); - getContentPane().add(scrollBar); + 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"); - name = json.getJSONArray("array").getString(Integer.valueOf(json.getString("switch")) - 1)+".jar"; - 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); + zipToJar = new JButton("\u8F6Cjar"); + zipToJar.addMouseListener(new MouseAdapter() { + File file; + Timer timer; + String name, path; - 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") - + json.getJSONArray("array").getString(Integer.valueOf(json.getString("switch")) - 1) + ".jar"); - JarToAJar.toAJar(json.getString("dx"), input.getAbsolutePath(), input.getAbsolutePath().replace(input.getName(), "dexTmp.jar")); - File outFile=new EncryptJar().encrypt(new File(input.getAbsolutePath().replace(input.getName(), "dexTmp.jar")), json.getString("out") - + json.getJSONArray("array").getString(Integer.valueOf(json.getString("switch")) - 1) + "_encrypt.jar", Integer.valueOf(path) - , Integer.valueOf(version)); - 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); + @Override + public void mouseClicked(MouseEvent e) { + if (configList.getSelectedIndex() < 0) { + new TextToDalog("警告", "列表未选择"); + return; + } + json.put("switch", configList.getSelectedIndex() + 1 + ""); + path = json.getString("out"); + name = json.getJSONArray("array").getString(Integer.valueOf(json.getString("switch")) - 1) + ".jar"; + file = new File(path + name); + if (file.exists()) + file.delete(); - 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); + JarToAJar.start(json); - 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); + timer = new Timer(); + timer.schedule(new TimerTask() { - txtCom = new JTextField(); - txtCom.setHorizontalAlignment(SwingConstants.LEFT); - txtCom.setText("adb push \"" + new File("").getAbsolutePath() + "/[jar]/data/data/[packname]/plugs/"); - txtCom.setBounds(444, 73, 293, 27); - getContentPane().add(txtCom); - txtCom.setColumns(10); + @Override + public void run() { + // TODO Auto-generated method stub + if (file.exists()) { + log.setText("已生成" + name); + timer.cancel(); + } else { + log.setText("正在生成"); + } + } + }, 0, 100); - JLabel lblAdb = new JLabel("adb\u6307\u4EE4"); - lblAdb.setBounds(444, 51, 72, 18); - getContentPane().add(lblAdb); + } + }); + zipToJar.setBounds(247, 72, 158, 27); + getContentPane().add(zipToJar); - btnAdbPull = new JButton("adb"); - btnAdbPull.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - String cmd = txtCom.getText(); - cmd = cmd.replace("[packname]", textPackName.getText()); - cmd = cmd.replace("[jar]", configList.getSelectedValue().toString() + ".jar"); - 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("执行失败"); - } + jarToBase = new JButton("\u52A0\u5BC6Jar"); - } - }); - btnAdbPull.setBounds(444, 295, 147, 27); - getContentPane().add(btnAdbPull); + 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; - new ButtonGroup(); + @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") + + json.getJSONArray("array").getString(Integer.valueOf(json.getString("switch")) - 1) + ".jar"); + JarToAJar.toAJar(json.getString("dx"), input.getAbsolutePath(), input.getAbsolutePath().replace(input.getName(), "dexTmp.jar")); + File outFile = new EncryptJar().encrypt(new File(input.getAbsolutePath().replace(input.getName(), "dexTmp.jar")), json.getString("out") + + json.getJSONArray("array").getString(Integer.valueOf(json.getString("switch")) - 1) + "_encrypt.jar", Integer.valueOf(path) + , Integer.valueOf(version)); + log.setText("data路径为:" + outFile.getAbsolutePath()); + } + }); + } + }); + /* + * JarToBase.start(json.getString("out") + + * json.getJSONArray("array").getString(Integer.valueOf(json.getString("switch") + * ) - 1) + ".jar", true); + */ - 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 - JarToAJar.toAJar(json.getString("dx"), file.getAbsolutePath(), file.getAbsolutePath().replace(file.getName(), "dexTmp.jar")); - File fileOut=new EncryptJar().encrypt(new File(file.getAbsolutePath().replace(file.getName(), "dexTmp.jar")), file.getAbsolutePath() + "_encrypt.jar", Integer.valueOf(path) - , Integer.valueOf(version)); - log.setText("data路径为:" + fileOut.getAbsolutePath()); - } - }); - } - }); - //JarToBase.start(file.getAbsolutePath(), true); - } - }); - btnUserBase.setBounds(247, 160, 158, 27); - getContentPane().add(btnUserBase); + } + }); + jarToBase.setBounds(247, 109, 158, 27); + getContentPane().add(jarToBase); - 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); + 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); - openWindows = new JCheckBox("\u6253\u5F00\u7A97\u53E3"); - openWindows.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - isOpenWindows = openWindows.isSelected(); - } - }); + 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); - openWindows.setBounds(247, 30, 133, 31); - getContentPane().add(openWindows); + txtCom = new JTextField(); + txtCom.setHorizontalAlignment(SwingConstants.LEFT); + txtCom.setText("adb push \"" + new File("").getAbsolutePath() + "/[jar]/data/data/[packname]/plugs/"); + txtCom.setBounds(444, 73, 293, 27); + getContentPane().add(txtCom); + txtCom.setColumns(10); - JLabel label = new JLabel("\u5305\u540D"); - label.setBounds(444, 113, 72, 18); - getContentPane().add(label); + JLabel lblAdb = new JLabel("adb\u6307\u4EE4"); + lblAdb.setBounds(444, 51, 72, 18); + getContentPane().add(lblAdb); - textPackName = new JTextField(); - textPackName.setText("com.luckyboy.mmxing"); - textPackName.setBounds(444, 135, 293, 24); - getContentPane().add(textPackName); - textPackName.setColumns(10); + btnAdbPull = new JButton("adb"); + btnAdbPull.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + String cmd = txtCom.getText(); + cmd = cmd.replace("[packname]", textPackName.getText()); + cmd = cmd.replace("[jar]", configList.getSelectedValue().toString() + ".jar"); + 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("执行失败"); + } - btnRestartapp = new JButton("\u91CD\u542FAPP"); - btnRestartapp.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - try { - Runtime.getRuntime().exec("adb shell am force-stop " + textPackName.getText()); - Runtime.getRuntime() - .exec("adb shell am start " + textPackName.getText() + File.separator + textActivity.getText()); - log.setText("重启完毕"); - } catch (IOException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - log.setText("重启失败"); - } - } - }); - btnRestartapp.setBounds(595, 295, 147, 27); - getContentPane().add(btnRestartapp); + } + }); + btnAdbPull.setBounds(444, 295, 147, 27); + getContentPane().add(btnAdbPull); - lblactivity = new JLabel("\u4E3BActivity"); - lblactivity.setBounds(444, 164, 119, 18); - getContentPane().add(lblactivity); + new ButtonGroup(); - textActivity = new JTextField(); - textActivity.setText(".MainActivity"); - textActivity.setBounds(444, 185, 293, 24); - getContentPane().add(textActivity); - textActivity.setColumns(10); + btnUserBase = new JButton("\u52A0\u5BC6\u6587\u4EF6"); + btnUserBase.addMouseListener(new MouseAdapter() { + File file; - 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(); - JarToAJar.toAJar(json.getString("dx"), java.getAbsolutePath(), - 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); + @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; - 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); + @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 + JarToAJar.toAJar(json.getString("dx"), file.getAbsolutePath(), file.getAbsolutePath().replace(file.getName(), "dexTmp.jar")); + File fileOut = new EncryptJar().encrypt(new File(file.getAbsolutePath().replace(file.getName(), "dexTmp.jar")), file.getAbsolutePath() + "_encrypt.jar", Integer.valueOf(path) + , Integer.valueOf(version)); + System.out.println("data路径为:" + fileOut.getAbsolutePath()); + if (log != null) + log.setText("data路径为:" + fileOut.getAbsolutePath()); - uFilePath = new JTextField(); - uFilePath.setBounds(444, 238, 293, 24); - getContentPane().add(uFilePath); - uFilePath.setColumns(10); + } + }); + } + }); + //JarToBase.start(file.getAbsolutePath(), true); + } + }); + btnUserBase.setBounds(247, 160, 158, 27); + getContentPane().add(btnUserBase); - JButton button = new JButton("\u83B7\u53D6"); - button.addMouseListener(new MouseAdapter() { - @Override - public void mouseClicked(MouseEvent e) { - JFileChooser chooser = new JFileChooser(new File(new File("").getAbsolutePath())); - chooser.showOpenDialog(null); - File file = chooser.getSelectedFile(); - uFilePath.setText(file.getAbsolutePath()); - log.setText("获取自定义文件路径完成"); + 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); - } - }); - button.setBounds(755, 235, 113, 27); - getContentPane().add(button); + openWindows = new JCheckBox("\u6253\u5F00\u7A97\u53E3"); + openWindows.addActionListener(new ActionListener() { + public void actionPerformed(ActionEvent e) { + isOpenWindows = openWindows.isSelected(); + } + }); - menuBar = new JMenuBar(); - - setJMenuBar(menuBar); + openWindows.setBounds(247, 30, 133, 31); + getContentPane().add(openWindows); - JMenu mnNewMenu = new JMenu("\u83DC\u5355"); - menuBar.add(mnNewMenu); + JLabel label = new JLabel("\u5305\u540D"); + label.setBounds(444, 113, 72, 18); + getContentPane().add(label); - JMenuItem menuItem = new JMenuItem("\u91CD\u542F"); - menuItem.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - dispose(); - new AppMain(); - } - }); + textPackName = new JTextField(); + textPackName.setText("com.luckyboy.mmxing"); + textPackName.setBounds(444, 135, 293, 24); + getContentPane().add(textPackName); + textPackName.setColumns(10); - mnNewMenu.add(menuItem); + btnRestartapp = new JButton("\u91CD\u542FAPP"); + btnRestartapp.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + try { + Runtime.getRuntime().exec("adb shell am force-stop " + textPackName.getText()); + Runtime.getRuntime() + .exec("adb shell am start " + textPackName.getText() + File.separator + textActivity.getText()); + log.setText("重启完毕"); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + log.setText("重启失败"); + } + } + }); + btnRestartapp.setBounds(595, 295, 147, 27); + getContentPane().add(btnRestartapp); - JMenu menu = new JMenu("\u5DE5\u5177"); - menuBar.add(menu); + lblactivity = new JLabel("\u4E3BActivity"); + lblactivity.setBounds(444, 164, 119, 18); + getContentPane().add(lblactivity); - JMenuItem mntmAes = new JMenuItem("AES\u5DE5\u5177"); - mntmAes.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - new AESUi(); - } - }); - menu.add(mntmAes); + textActivity = new JTextField(); + textActivity.setText(".MainActivity"); + textActivity.setBounds(444, 185, 293, 24); + getContentPane().add(textActivity); + textActivity.setColumns(10); - 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("修改万维成功,成功后文件将生成在反编译文件夹中"); + 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(); + JarToAJar.toAJar(json.getString("dx"), java.getAbsolutePath(), + 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); - } - }); - - 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); - - 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); - } + 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); + + JButton button = new JButton("\u83B7\u53D6"); + button.addMouseListener(new MouseAdapter() { + @Override + public void mouseClicked(MouseEvent e) { + JFileChooser chooser = new JFileChooser(new File(new File("").getAbsolutePath())); + chooser.showOpenDialog(null); + File file = chooser.getSelectedFile(); + uFilePath.setText(file.getAbsolutePath()); + log.setText("获取自定义文件路径完成"); + + } + }); + 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); + + 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); + } } diff --git a/src/com/qy/utils/CsjTools.java b/src/com/qy/utils/CsjTools.java new file mode 100644 index 0000000..faf6dda --- /dev/null +++ b/src/com/qy/utils/CsjTools.java @@ -0,0 +1,111 @@ +package com.qy.utils; + +import com.qy.Interfaces.SmaliApkToolsPath; +import com.qy.ui.TextToDalog; + +import java.io.*; +import java.util.ArrayList; +import java.util.List; + +public class CsjTools { + private String csj_R_path="E:\\idea\\android_sdk_tools\\demo_2.8.0.1\\smali\\com\\bytedance\\sdk\\openadsdk"; + private String csj_demo_path="E:\\idea\\android_sdk_tools\\demo_2.8.0.1"; + private String apk_R_path="E:\\idea\\android_sdk_tools\\app-release-1\\smali\\com\\luckyboy\\mmxing"; + private List r_list; + public CsjTools() { + } + public void setR() { + r_list=new ArrayList<>(); + File apk_R=new File(csj_R_path+File.separator+"R.smali"); + if(!apk_R.exists()){ + new TextToDalog("找不到文件","穿山甲R文件不存在:"+apk_R); + return; + } + try { + BufferedReader reader=new BufferedReader(new FileReader(apk_R)); + String tmp; + while ((tmp=reader.readLine())!=null){ + if(tmp.contains("/R$")){ + r_list.add(tmp.split("/")[tmp.split("/").length-1].replace(";,","").replace(";","")); + } + } + /*for (String fileName : r_list) { + setRData(fileName); + }*/ + } catch (Exception e) { + e.printStackTrace(); + } + } + private void setRData(String fileName){ + File apkR=new File(apk_R_path+File.separator+fileName+".smali"); + + List header=new ArrayList<>(); + List end=new ArrayList<>(); + + boolean isHeader=true; + long id=-1; + try { + BufferedReader reader=new BufferedReader(new FileReader(apkR)); + String tmp; + while ((tmp=reader.readLine())!=null){ + if(tmp.trim().equals("# direct methods")){ + isHeader=false; + } + if(isHeader){ + header.add(tmp); + if(tmp.contains(":I = 0x")){ + id=Long.parseLong(tmp.split("0x")[1],16); + } + }else{ + end.add(tmp); + } + } + header.addAll(getCSJR(fileName,id)); + header.addAll(end); + FileWriter writer=new FileWriter(apkR); + for (String str : header) { + writer.write(str+"\n"); + } + writer.flush(); + writer.close(); + + } catch (Exception e) { + e.printStackTrace(); + } + } + private List getCSJR(String fileName,long id){ + File csjR=new File(csj_R_path+File.separator+fileName+".smali"); + List csj=new ArrayList<>(); + try { + BufferedReader reader=new BufferedReader(new FileReader(csjR)); + String tmp; + long nextId=id; + while ((tmp=reader.readLine())!=null){ + if(tmp.trim().startsWith(".field public")){ + csj.add(tmp.replace(".field public static",".field public static final")+" = 0x"+Long.toHexString(++nextId)); + } + } + csj.add("\n"); + } catch (Exception e) { + e.printStackTrace(); + } + return csj; + } + private void copyFile(){ + setR(); + for (String s : r_list) { + Tools.copyFile(apk_R_path+File.separator+s+".smali",csj_R_path+File.separator+s+".smali",true); + } + + } + private void out(){ + EncryptJar encryptJar=new EncryptJar(); + encryptJar.encrypt(new File("E:\\idea\\android_sdk_tools\\csj.apk"),"E:\\idea\\android_sdk_tools\\csj_",13,5600); + + } + public static void main(String[] args) { + CsjTools tools=new CsjTools(); + tools.out(); + + } +} diff --git a/src/com/qy/utils/EncryptJar.java b/src/com/qy/utils/EncryptJar.java index 6f0f49a..b93839c 100644 --- a/src/com/qy/utils/EncryptJar.java +++ b/src/com/qy/utils/EncryptJar.java @@ -31,7 +31,7 @@ public class EncryptJar { FileOutputStream fos = new FileOutputStream(outputFile); fos.write(int2byte(filetype)); - System.out.println("Դ汾ţ" + ver); + System.out.println("资源包版本号:" + ver); fos.write(int2byte(ver)); FileInputStream is = new FileInputStream(file); @@ -124,7 +124,7 @@ public class EncryptJar { } @Override public String toString() { - return "Դ:"+type + " 汾:" + version + " ļ·:" + file.getAbsolutePath(); + return "资源类型:"+type + " 版本号:" + version + " 文件路径:" + file.getAbsolutePath(); } } diff --git a/src/com/qy/utils/Tools.java b/src/com/qy/utils/Tools.java index 0451f24..437be78 100755 --- a/src/com/qy/utils/Tools.java +++ b/src/com/qy/utils/Tools.java @@ -69,6 +69,7 @@ public class Tools { // �����ļ�ʧ�ܣ�����Ŀ���ļ�����Ŀ¼ʧ�� return false; } + destFile.delete(); } @@ -82,7 +83,7 @@ public class Tools { fileName=srcFile.getName(); } in = new FileInputStream(srcFile); - out = new FileOutputStream(destFile + "/" +fileName ); + out = new FileOutputStream(destFile); byte[] buffer = new byte[1024]; while ((byteread = in.read(buffer)) != -1) {