当前位置: 首页 > news >正文

proguard混淆jar文件

Proguard是个优秀的java混淆工具,使用示例如下,一个java工程对外接口代码如下(无需混淆)

package com.ciaos.open;

import com.ciaos.inner.InnerTool;

public class OpenTool {
    public static void method()
    {
        System.out.println("public method");
        InnerTool.method();
    }
}

内部调用函数如下(需要混淆)

package com.ciaos.inner;

public class InnerTool {
    public static void method()
    {
        System.out.println("need encrypt");
    }
}

我们只想在打包的jar文件中保留OpenTool.method接口,则proguard配置文件library.pro文件如下:

#
# This ProGuard configuration file illustrates how to process a program
# library, such that it remains usable as a library.
# Usage:
#     java -jar proguard.jar @library.pro
#

# Specify the input jars, output jars, and library jars.
# In this case, the input jar is the program library that we want to process.

-injars  D:\libtool.jar
-outjars D:\libtool_min.jar

-libraryjars  C:\Users\shipeng\AppData\Local\MyEclipse Professional 2014\binary\com.sun.java.jdk7.win32.x86_1.7.0.u45\jre\lib\rt.jar
#-libraryjars  E:\Works\fastjson-1.1.34.android.jar


-printmapping map\proguard.map 
-overloadaggressively 
-defaultpackage ''  
-allowaccessmodification 
-dontoptimize
-overloadaggressively
-keepattributes InnerClasses,SourceFile,LineNumberTable,Signature
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-optimizationpasses 5
-keepattributes Exceptions
-keep public class com.ciaos.open.OpenTool
{   
public *; 
}
#-keep public class com.ciaos.inner.InnerTool 
#{   
#public *; 
#}

混淆工具脚本

del "D:\libtool_min.jar"
java -jar lib/proguard.jar @library.pro
pause

更多用法参照Proguard官网,proguard也有插件集成到eclipse中。

转载于:https://www.cnblogs.com/ciaos/p/4368588.html

相关文章:

  • js操作大全(转)
  • 试用day one小记
  • 我的CSDN生涯
  • Animation动画详解
  • An Introduction to Garbage Collection(垃圾回收简介)
  • Cookie与Session的区别
  • LINUX 中实现逻辑卷、自动挂载
  • 关于OSC项目演示平台maven的一点疑问
  • 关于DatagramSocket中connet()方法和getInetAddress()方法返回null的说明
  • 通过调用文摘列表API获取文摘
  • 如何在LLDB下排查message sent to deallocated instance问题
  • 提高tomcat的并发能力
  • 对Oracle数据库坏块的理解
  • Delphi 中Format的字符串格式化使用说明(转)
  • 经典问题回忆
  • @angular/forms 源码解析之双向绑定
  • CSS 提示工具(Tooltip)
  • C语言笔记(第一章:C语言编程)
  • es的写入过程
  • java8 Stream Pipelines 浅析
  • JavaScript DOM 10 - 滚动
  • jQuery(一)
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • vue自定义指令实现v-tap插件
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 排序算法之--选择排序
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • 如何正确理解,内页权重高于首页?
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • (1)STL算法之遍历容器
  • (7)STL算法之交换赋值
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (七)c52学习之旅-中断
  • (五)c52学习之旅-静态数码管
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .bat批处理(九):替换带有等号=的字符串的子串
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET CORE 第一节 创建基本的 asp.net core
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET delegate 委托 、 Event 事件
  • .Net Web项目创建比较不错的参考文章
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET 事件模型教程(二)
  • .net/c# memcached 获取所有缓存键(keys)
  • .net网站发布-允许更新此预编译站点
  • /bin、/sbin、/usr/bin、/usr/sbin
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @ModelAttribute注解使用
  • @NoArgsConstructor和@AllArgsConstructor,@Builder
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [AIGC] Kong:一个强大的 API 网关和服务平台