• Android逆向之Java常用类


    Android逆向之Java常用类

    包装类

    byte ­> Byte

    int ­> Integer

    short ­> Short

    long ­> Long

    float ­> Float

    double ­> Double

    boolean ­> Boolean

    char ­> Character

      public static void test0(){
            int n =123456;
          // 整型转字符串
            String num=Integer.toString(n);
            System.out.println(num);
           // 从字符串中获取字符 ,获取了第0位上的数值。即123456的1.
            char ch =num.charAt(0);
          // 用字符类,将字符转为整型
            int m=Character.digit(ch,10);
            System.out.println(m);
          // 用整型类,将字符串解析为整型
            int m1=Integer.parseInt(num);
            System.out.println(m1);

       }

    字符串类

    String类

    toString equals

    StringBuffer类与StringBuilder类

    equals

    public class Main {
        public static void test1(){
            Scanner scanner=new Scanner(System.in);
            String str =scanner.next();
            String string="hello";
            if (string.equals(str)){
                System.out.println("yes");
           }else {
                System.out.println("NO");

           }
       }

    append

     StringBuffer buffer = new StringBuffer();
            buffer.append(name);// 连接字符串
            buffer.append("hello");
            buffer.append(" world ");
            buffer.append(" good! ");
            System.out.println(buffer);
            StringBuilder builder = new StringBuilder();
            builder.append(name);
            builder.append("hello");
            builder.append("world");
            builder.append(" good! ");
            System.out.println(builder);
            System.out.println(name.toString());
            System.out.println(buffer.toString());
            System.out.println(builder.toString());

    文件操作类

    创建文件

    public static File CreateFile(String filePath){
        // 创建文件对象
        File file = new File(filePath);
        // 判断文件是否存在
        if( !file.exists()) {
            // 创建文件,因为createNewFile函数本身抛出了异常,需要try
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
                return null;
            }
        }
        // 返回文件对象
        return file;
    }

    读取文件

    public static String ReadFile(File file){
        try {
            //  1. 创建文件输入流对象
            FileInputStream inputStream = new FileInputStream(file);
            //  2. 创建字节输出流对象
            ByteArrayOutputStream byteArrayOutputStream = new
    ByteArrayOutputStream();
            // 3. 创建字节数组
            byte bytes[] = new byte[1024];
            int nReadLen = 0;
            //  4. 使用文件输入流对象读取文件内容
            while ( (nReadLen =  inputStream.read(bytes,0,1024))
    !=‐1){
                //  5. 将读取的内容写入到字节对象
                byteArrayOutputStream.write(bytes,0,nReadLen);
            }
            // 以字符串方式返回字节对象
            return new String(byteArrayOutputStream.toByteArray());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    写入文件

    public static String WriteFile(File file, String content){
        try {
            //  1. 创建文件输出流对象
            FileOutputStream  outputStream = new
    FileOutputStream(file);
            // 2. 创建字节数组
            byte bytes[] = content.getBytes();
            int nReadLen = 0;
            //  3. 使用文件输出流对象写入文件内容
            outputStream.write(bytes);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    删除文件

    public static String DeleteFile(File file){
        if (file.exists()){
            // 删除文件
            if (file.isFile()){
                file.delete();
            }
            // 删除目录
            else if (file.isDirectory()){
                // 删除目录下的每一个文件
                File[] files = file.listFiles();
                for (int i = 0; i < files.length; i++) {
                    // 递归删除
                    DeleteFile(files[i]);
                }
                // 删除目录
                file.delete();
            }
        }
        return null;
    }
    public static void DeleteDir(String destDir) {
        File file = new File(destDir);
        DeleteFile(file);
    }

    调用

    public static void test2(){
            File file =  FileUtils.CreateFile("hello.txt");
            FileUtils.WriteFile(file, "hello123456");
            String content = FileUtils.ReadFile(file);
            System.out.println(content);

            FileUtils.DeleteDir("hello");
       }

    操作命令行程序

    操作cmd


    import java.io.BufferedReader;
    import java.io.File;
    import java.io.InputStream;
    import java.io.InputStreamReader;

    public class CmdUtils {

        public static void runCMD(String command){

            try {
                String cmd = "cmd.exe /c " +command;
                // Runtime.getRuntime().exec
                // 1. 执行命令,获取Process对象
                Process process = Runtime.getRuntime().exec(cmd);
                // 2. 获取cmd输出信息
                // 2.1 获取输入流对象
                InputStream inputStream = process.getInputStream();
                // 2.2 封装流读取对象
                InputStreamReader reader = new InputStreamReader(inputStream);
                // 2.3 封装缓冲流读取对象
                BufferedReader br = new BufferedReader(reader);
                // 2.4 循环读取
                String string = null;
                while ( (string = br.readLine()) != null){
                    System.out.println(string);
               }
                br.close();
                // 2.5 等待读取完毕
                process.waitFor();
           } catch (Exception e) {
                e.printStackTrace();
           }
       }

       

    }

    带设置目录的操作cmd

    public static void runCMD(String command, String dir){
            try {
                String cmd = "cmd.exe /c " +command;
                // 1. 执行命令,获取Process对象
                Process process = Runtime.getRuntime().exec(cmd, null, new File(dir));
                // 2. 获取cmd输出信息
                // 2.1 获取输入流对象
                InputStream inputStream = process.getInputStream();
                // 2.2 封装流读取对象
                InputStreamReader reader = new InputStreamReader(inputStream);
                // 2.3 封装缓冲流读取对象
                BufferedReader br = new BufferedReader(reader);
                String string = null;
                // 2.4 循环读取
                while ( (string = br.readLine()) != null){
                    System.out.println(string);
               }
                br.close();
                // 2.5 等待读取完毕
                process.waitFor();
           } catch (Exception e) {
                e.printStackTrace();
           }
       }

    调用方法

    public static void main(String[] args) {
    // write your code here
            // 反编译APK
            CmdUtils.runCMD("java -jar apktool.jar d 1.apk");
            // 重新打包APK,但是相比之前会少了个签名了的文件。
            CmdUtils.runCMD("java -jar apktool.jar b 1 -o 2.apk");
            // 用这个以默认身份重新签名。
            CmdUtils.runCMD("java -jar signapk.jar testkey.x509.pem testkey.pk8 ../2.apk ../2_signed.apk", "sign");
       }

    泛型编程

     public static void test4(){

    //       ArrayList<String> strings1 = new ArrayList<>();
    //       接口,实现接口的类,存在类似c++中的多态关系
            // c++中模板,在java中称为泛型编程
            List<String> strings = new ArrayList<>();
            strings.add("hello");
            strings.add("hello123");
            strings.add("hello123456");
            strings.add("hello123456789");

            System.out.println(strings);

            for (int i = 0; i < strings.size(); i++) {
                System.out.println(strings.get(i));
           }

       }

    文件格式

    dom4j­XML解析库

    地址:https://dom4j.github.io/

    导入dom4j库

    ① 在项目中新建一个目录libs ② 将xml库文件复制到libs目录 ③ 在idea中导入xml库

    菜单左上角file-project structure

    1568965931752

    XmlUtils

    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;

    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStream;
    import java.util.List;

    public class XmlUtils {
        // 获取Document对象,一个xml文件就是一个文档对象
        public static Document getDocument(String xml) {
            try {
                SAXReader saxReader = new SAXReader();
                InputStream inputStream = new FileInputStream(xml);
                Document doc = saxReader.read(inputStream);
                return doc;
           } catch (DocumentException e) {
                e.printStackTrace();
           } catch (FileNotFoundException e) {
                e.printStackTrace();
           }
            return null;
       }

        // 获取元素
        public static Element getElement(Document doc, String name) {
            // 获取根节点
            Element root = doc.getRootElement();
            // 返回子节点的元素列表
            List<Element> child = root.elements();
            for (int i = 0; i < child.size(); i++) {
                Element element = child.get(i);
                //System.out.println("元素:" + element.getName());
                if (element.getName().equals(name))
               {
                    return element;
               }
           }
            return null;
       }
        // 获取属性
        public static Attribute getAttr(Element app, String name) {
            List<Attribute> atts = app.attributes();
            for (Attribute att: atts) {
                //System.out.println("属性:" + att.getName());
                if (att.getName().equals(name)){
                    return att;
               }
           }
            return null;
       }
    }

    调用,记得根目录得有xml.xml文件

    public static void test2()
       {
            Document doc = XmlUtils.getDocument("xml.xml");
            Element element = XmlUtils.getElement(doc,"标签4");
            System.out.println(element.getName());
            Attribute attribute = XmlUtils.getAttr(element,"属性2");
            System.out.println(attribute.getName() + " : "+attribute.getValue());


       }

    线程类

    // 创建线程,指定回调函数
            Thread thread = new Thread(){
                @Override
                public void run() {
                    super.run();
                    System.out.println("thread 1");
                }
            };
            // 启动线程
            thread.start();
            // 方法2
            // 创建 匿名对象
            Runnable runnable = new Runnable() {
                @Override
                public void run() {
                    System.out.println("thread 2");
                }
            };
            // 创建线程,指定回调
            Thread thread1 = new Thread(runnable);
            // 启动线程
            thread1.start();
            // 简写
            new Thread(){
                @Override
                public void run() {
                    super.run();
                    System.out.println("thread 3");
                }
            }.start();

    网络编程

    public static void test3(){
            String urlpath = "http://www.baidu.com";
            try {
                // 1. 创建一个URL对象
                URL url = new URL(urlpath);
                // 2. 创建一个连接
                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                httpURLConnection.setConnectTimeout(5000);
                // 3. 获取返回数据
                // 3.1 获取返回码
                int ret = httpURLConnection.getResponseCode();
                if(ret == 200){// 200 ok
                    InputStream inputStream = httpURLConnection.getInputStream();
                    ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

                    byte bytes[] = new byte[1024];
                    int nReadLen = -1;
                    while (true){
                        // 从输入流中读取数据,写入到字节数组中,写入到的数组偏移是0,最大1024
                        nReadLen = inputStream.read(bytes,0,1024);
                        if(nReadLen == -1) break;
                        byteArrayOutputStream.write(bytes,0,nReadLen);
                   }
                    byte bytes1[] = byteArrayOutputStream.toByteArray();
                    String s = new String(bytes1);

                    System.out.println(s);

               }

           } catch (MalformedURLException e) {
                e.printStackTrace();
           } catch (IOException e) {
                e.printStackTrace();
           }
       }
  • 相关阅读:
    MyOD-Linux od命令的实现
    20175320 2018-2019-2 《Java程序设计》第9周学习总结
    MyCP-实现文件的复制以及进制转换
    20175320 2018-2019-2 《Java程序设计》第8周学习总结
    2018-2019-2 20175320实验二《Java面向对象程序设计》实验报告
    20175320 2018-2019-2 《Java程序设计》第7周学习总结
    类定义20175320
    20175320 2018-2019-2 《Java程序设计》第6周学习总结
    结对编程项目-四则运算阶段性总结
    算法复习周------递归之“合并排序”
  • 原文地址:https://www.cnblogs.com/ltyandy/p/11557829.html
Copyright © 2020-2023  润新知