• Android 自动分析apk加固方式


    本实例只对apk中lib文件夹中的文件进行分析

    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Enumeration;
    import java.util.HashMap;
    import java.util.HashSet;
    import java.util.Set;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;

    public class GetReinforcementMoth {

    public static void main(String[] args) throws IOException {
    initData();
    // String apkSourceCodeDir[] = {"G:\workspace\...\...\..", "G:\workspace\...\...\.."};
    String apkSourceCodeDir[] = {"D:\develop\apks"};

    getReinforcementMothByPaths(apkSourceCodeDir);

    // ArrayList<String> apkSourceCodeDir= new ArrayList<String>();
    //// apkSourceCodeDir.add("G:\workspace\...\...\..");
    //// apkSourceCodeDir.add("G:\workspace\...\...\..");
    // apkSourceCodeDir.add("E:\workspace\...\...\...\..");
    // getReinforcementMothByPaths(apkSourceCodeDir);
    }

    /**
    * 加固so集合
    */
    static HashMap<String, String> reinforcementSoMaps;

    private static void initData() {
    reinforcementSoMaps = new HashMap<>();
    reinforcementSoMaps.put("libsecexe.so", "梆梆加固免费版");
    reinforcementSoMaps.put("libsecmain.so", "梆梆加固免费版");
    reinforcementSoMaps.put("libSecShell.so", "梆梆加固免费版");
    reinforcementSoMaps.put("secData0.jar", "梆梆加固免费版");
    reinforcementSoMaps.put("libSecShell-x86.so", "梆梆加固免费版");

    reinforcementSoMaps.put("libDexHelper.so", "梆梆企业版");
    reinforcementSoMaps.put("libDexHelper-x86.so", "梆梆企业版");
    reinforcementSoMaps.put("classes.jar", "梆梆加固定制版");
    reinforcementSoMaps.put("DexHelper.so", "梆梆加固定制版");

    reinforcementSoMaps.put("libtup.so", "腾讯加固");
    // ReinforcementSoMaps.put("libexec.so", "腾讯加固");
    reinforcementSoMaps.put("libshell.so", "腾讯加固");
    reinforcementSoMaps.put("mix.dex", "腾讯加固");
    reinforcementSoMaps.put("mixz.dex", "腾讯加固");
    reinforcementSoMaps.put("libshella-xxxx.so", "腾讯加固");
    reinforcementSoMaps.put("libshellx-xxxx.so", "腾讯加固");

    reinforcementSoMaps.put("libtosprotection.armeabi-v7a.so", "腾讯御安全");
    reinforcementSoMaps.put("libtosprotection.armeabi.so", "腾讯御安全");
    reinforcementSoMaps.put("libtosprotection.x86.so", "腾讯御安全");
    reinforcementSoMaps.put("tosversion", "腾讯御安全");
    reinforcementSoMaps.put("libTmsdk-xxx-mfr.so", "腾讯御安全");
         reinforcementSoMaps.put("aliprotect.dat", "阿里加固");
       reinforcementSoMaps.put("libsgmain.so", "阿里加固");
       reinforcementSoMaps.put("libsgsecuritybody.so", "阿里加固");
       reinforcementSoMaps.put("libmobisec.so", "阿里加固");
       reinforcementSoMaps.put("libfakejni.so", "阿里加固");
       reinforcementSoMaps.put("libzuma.so", "阿里加固");
       reinforcementSoMaps.put("libzumadata.so", "阿里加固");
       reinforcementSoMaps.put("libpreverify1.so", "阿里加固");

       reinforcementSoMaps.put("kdpdata.so", "几维加固");
       reinforcementSoMaps.put("dex.dat", "几维加固");
       reinforcementSoMaps.put("libkdp.so", "几维加固");
       reinforcementSoMaps.put("libkwscmm.so", "几维加固");
       reinforcementSoMaps.put("libkwscr.so", "几维加固");
       reinforcementSoMaps.put("libkwslinker.so", "几维加固");

       reinforcementSoMaps.put("libexec.so", "爱加密");
       reinforcementSoMaps.put("libexecmain.so", "爱加密");
       reinforcementSoMaps.put("ijiami.dat", "爱加密");
       reinforcementSoMaps.put("ijiami.ajm", "爱加密");
       reinforcementSoMaps.put("af.bin", "爱加密");
       reinforcementSoMaps.put("signed.bin", "爱加密");

       reinforcementSoMaps.put("libchaosvmp.so", "娜迦");
       reinforcementSoMaps.put("libddog.so", "娜迦");
       reinforcementSoMaps.put("libfdog.so", "娜迦");
       reinforcementSoMaps.put("libedog.so", "娜迦");

       reinforcementSoMaps.put("libprotectClass.so", "360加固");
       reinforcementSoMaps.put("libjiagu.so", "360加固");
       reinforcementSoMaps.put("libjiagu_art.so", "360加固");
       reinforcementSoMaps.put("libjiagu_x86.so", "360加固");

       reinforcementSoMaps.put("libcmvmp.so", "中国移动安全加固");
      reinforcementSoMaps.put("libmogosec_dex.so", "中国移动安全加固");
      reinforcementSoMaps.put("libmogosec_sodecrypt.so", "中国移动安全加固");

        reinforcementSoMaps.put("libmogosecurity.so", "中国移动安全加固");
        
        reinforcementSoMaps.put("libbaiduprotect.so", "百度加固");  
        
    reinforcementSoMaps.put("baiduprotect1.jar", "百度加固");
        reinforcementSoMaps.put("baiduprotect.jar", "百度加固");


      reinforcementSoMaps.put("libuusafe.jar.so", "UU安全加固");
       reinforcementSoMaps.put("libuusafe.so", "UU安全加固");
       reinforcementSoMaps.put("libuusafeempty.so", "UU安全加固");

       reinforcementSoMaps.put("dp.arm-v7.so.dat", "DexProtect加固");
       reinforcementSoMaps.put("dp.arm.so.dat", "DexProtect加固");

       reinforcementSoMaps.put("libegis.so", "通付盾加固");
       reinforcementSoMaps.put("libNSaferOnly.so", "通付盾加固");

       reinforcementSoMaps.put("libreincp.so", "珊瑚灵御加固");
       reinforcementSoMaps.put("libreincp_x86.so", "珊瑚灵御加固");

       reinforcementSoMaps.put("libnqshield.so", "网秦加固");

       reinforcementSoMaps.put("libnesec.so", "网易易盾");

       reinforcementSoMaps.put("libAPKProtect.so", "APKProtect加固");

       reinforcementSoMaps.put("libx3g.so", "顶象技术加固");

       reinforcementSoMaps.put("libitsec.so", "海云安加固");

       reinforcementSoMaps.put("libapssec.so", "盛大加固");

       reinforcementSoMaps.put("librsprotect.so", "瑞星加固");

       reinforcementSoMaps.put("libapktoolplus_jiagu.so", "apktoolplus加固");
      }


      public static void getReinforcementMothByPaths(String[] JavaSourceCodeDirs) throws IOException {
       for (String dirPath : JavaSourceCodeDirs) {
       File fl = new File(dirPath);
       if (fl.exists()) {
       getApkFileReinforcementMoth(fl);
       }
       }
      }


      public static void getReinforcementMothByPaths(ArrayList<String> JavaSourceCodeDirs) throws IOException {
       for (String dirPath : JavaSourceCodeDirs) {
       File fl = new File(dirPath);
       if (fl.exists()) {
       getApkFileReinforcementMoth(fl);
       }
       }
      }


      private static void getApkFileReinforcementMoth(File fl) throws IOException {
    if (fl != null && fl.exists()) {
    if (fl.isDirectory()) {
    File[] listFiles = fl.listFiles();
    for (File file : listFiles)
    getApkFileReinforcementMoth(file);
    } else if (fl.isFile() && !fl.isHidden()) {
    if (fl.getName().endsWith(".apk")) {
    Enumeration<? extends ZipEntry> entries = new ZipFile(fl).entries();
    Set<String> libSo = new HashSet<>();
    while (entries.hasMoreElements()) {
    ZipEntry apk = entries.nextElement();
    if (!apk.isDirectory() && apk.getName().startsWith("lib/"))
    libSo.add(apk.getName().substring(apk.getName().lastIndexOf("/") + 1));
    }
    if (libSo.isEmpty()) { // 没有lib
    System.out.println(fl.getName() + ": 从lib中没有分析出加固方式");
    return;
    }
    Set<String> reinforcementMoth = new HashSet<>();
    // 有so
    for (String libFile : libSo)
    if (reinforcementSoMaps.containsKey(libFile)) {
    reinforcementMoth.add(reinforcementSoMaps.get(libFile));
    }
    if (reinforcementMoth.size() > 0) {
    System.out.println(fl.getName() + ": 分析出加固方式为:" + reinforcementMoth.toString());
    } else {
    System.out.println(fl.getName() + ": 从lib中没有分析出加固方式");
    }
    reinforcementMoth.clear();
    }
    }
    }
    }
    }
    
    
  • 相关阅读:
    MongoDB 数据类型
    linux 查看网卡流量:nload
    Linux 抓包工具:tcpdump
    python 合并列表 从大到小排序
    MongoDB的客户端管理工具--nosqlbooster 连接MongoDB服务器
    MongoDB 用户管理
    MongoDB 数据库操作
    MongoDB与关系型数据库 区别
    MongoDB 新建数据库和集合 查询集合
    POJ 1491
  • 原文地址:https://www.cnblogs.com/wf-l5201314/p/9714435.html
Copyright © 2020-2023  润新知