jar包混淆工具(如何才能使Java免受逆向工程攻击) 您所在的位置:网站首页 Android逆向工程 jar包混淆工具(如何才能使Java免受逆向工程攻击)

jar包混淆工具(如何才能使Java免受逆向工程攻击)

2023-03-22 23:43| 来源: 网络整理| 查看: 265

本文目录如何才能使Java免受逆向工程攻击被混淆的jar包如何反编译如何使用Android Studio打包混淆的Jarandroid-android怎么实现只混淆自己的代码,而不混淆第3方jar包如何让用Android studio 导出jar包并混淆和aarandroid代码混淆以及怎么判断一个apk代码是否被混淆过proguard 混淆器怎么用,请教android jar包类名如何混淆成方框Android第三方类库中的jar包不被混淆Android项目里如何混淆自己打的jar包或者防止被反编译如何才能使Java免受逆向工程攻击

毕竟java是编译+解释型语言 不可能做到100受攻击, 一般情况下,  我们会这样做: 

代码的混淆 打的jar包经过代码混淆工具进行打乱压缩

核心算法使用jna 或 jni 即用 c/c++编写

对 .classs文件进行加密, 使用自定义的classLoader来加载类文件

被混淆的jar包如何反编译

暂时想到的只有将jar文件解压,用反编译工具反编译相关类,修改,编译成类替换原文件,再打包成。

如何使用Android Studio打包混淆的Jar

使用AS打包混淆Jar包,百度一下,一片一片的,但是很多都是零零散散的写得不是很详细或是直接拷贝,按照他们的教程测试总不是很顺利,所以这里我就把我个人学习AS打包混淆Jar的成果总结出来,希望对大家有帮助。个人觉得写得还是比较详细的

使用gradle混淆打包Jar

使用AS开发项目,引入第三方库是非常方便的,我们只需要在build.gradle中配置一行代码就可以轻松引入我们需要的开发库。那么gradle可以帮我们混淆打包Jar吗?答案是当然可以!

那么我们如何打包Jar呢?其实我们在编译项目的时候,AS已经帮我们在目录build/intermediates/bundles/release/classes.jar打好了Jar。那么我们需要做的就是把Jar进行混淆的工作了。这里以个人项目bannerDemo 为例,混淆步骤如下:

在你的library的build.gradle文件中加入如下代码:

task makeJar(type: proguard.gradle.ProGuardTask, dependsOn: “build“) {// 未混淆的jar路径injars ’build/intermediates/bundles/release/classes.jar’// 混淆后的jar输出路径outjars ’build/outputs/cocolove2-banner-1.1.0.jar’// 混淆协议configuration ’proguard-rules.pro’}

配置混淆协议

1.我们先把AS自带的协议配置进来中文注释,笔者添加

# This is a configuration file for ProGua

proguard5.2.1下载地址

阅读

android-android怎么实现只混淆自己的代码,而不混淆第3方jar包

当项目中有第3方jar包时,怎么实现混淆打包,而不对第3方包混淆在项目中有第3方包时打包出错日志: Proguard returned with error code 1. See console Note: there were 2068 duplicate class definitions. Warning: org.apache.harmony.awt.datatransfer.DataProxy: can’t find superclass or interface java.awt.datatransfer.Transferable Warning: org.apache.harmony.awt.datatransfer.NativeClipboard: can’t find superclass or interface java.awt.datatransfer.Clipboard Warning: javax.activation.CommandInfo: can’t find referenced class java.beans.Beans Warning: javax.activation.CommandInfo: can’t find referenced class java.beans.Beans Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can’t find referenced class javax.security.sasl.SaslException Warning: com.sun.mail.imap.protocol.IMAPSaslAuthenticator: can’t find referenced class javax.security.sasl.SaslException Warning: org.apache.harmony.awt.datatransfer.DataSource: can’t find referenced class java.awt.datatransfer.DataFlavor Warning: org.apache.harmony.awt.datatransfer.DataSource: can’t find referenced class java.awt.datatransfer.DataFlavor………………………………………………………………………………中间部分省略 Warning: org.apache.harmony.awt.ContextStorage: can’t find referenced class java.awt.Toolkit Warning: org.apache.harmony.awt.ContextStorage: can’t find referenced class java.awt.Toolkit Warning: org.apache.harmony.awt.ContextStorage: can’t find referenced class java.awt.GraphicsEnvironment Warning: org.apache.harmony.awt.ContextStorage: can’t find referenced class java.awt.GraphicsEnvironment Warning: org.apache.harmony.awt.ContextStorage: can’t find referenced class java.awt.GraphicsEnvironment Warning: org.apache.harmony.awt.datatransfer.NativeClipboard: can’t find referenced class java.awt.datatransfer.Clipboard Warning: org.apache.harmony.awt.datatransfer.NativeClipboard: can’t find referenced class java.awt.datatransfer.Clipboard Warning: there were 288 unresolved references to classes or interfaces. You may need to specify additional library jars (using ’-libraryjars’), or perhaps the ’-dontskipnonpubliclibraryclasses’ option. java.io.IOException: Please correct the above warnings first. at proguard.Initializer.execute(Initializer.java:308) at proguard.ProGuard.initialize(ProGuard.java:210) at proguard.ProGuard.execute(ProGuard.java:85) at proguard.ProGuard.main(ProGuard.java:499)我的proguard.cfg 文件时这样的-optimizationpasses 5-dontusemixedcaseclassnames-dontskipnonpubliclibraryclasses-verbose-ignorewarnings-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*-libraryjars libs/bcprov-jdk15on-147.jar-libraryjars libs/PanoramaGL.jar-libraryjars libs/activation.jar-libraryjars libs/additionnal.jar-libraryjars libs/mail.jar-keep public class * extends android.app.Activity-keep public class * extends android.app.Application-keep public class * extends android.app.Service-keep public class * extends android.content.BroadcastReceiver-keep public class * extends android.content.ContentProvider-keep public class * extends android.app.backup.BackupAgentHelper-keep public class * extends android.preference.Preference-keep public class com.android.vending.licensing.ILicensingService-keepclasseswithmembernames class * { native 《methods》;}-keepclasseswithmembers class * { public 《init》(android.content.Context, android.util.AttributeSet);}-keepclasseswithmembers class * { public 《init》(android.content.Context, android.util.AttributeSet, int);}-keepclassmembers class * extends android.app.Activity { public void *(android.view.View);}-keepclassmembers enum * { public static ** values(); public static ** valueOf(java.lang.String);}-keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *;}已经尝试的方案:方案一: 加入-ignorewarnings 可以正常打包了。 能过滤掉警告信息。但是治标不治本,打好的包,在实际运行中用到过的第3方包类库时,均报空指针。方案二:不使用-ignorewarnings 添加-dontwarn java.awt.datatransfer.Transferable.** 警告信息并没有减少,打包会失败。

如何让用Android studio 导出jar包并混淆和aar

  首先说明我使用的android studio 版本是0.4.因为现在android studio的bug还不较多,所以你的版本能不能正常使用我就不敢说了。  如果你只是单纯的想使用actionbarsherlock的话,引用是十分简单的      dependencies {  // compile fileTree(dir: ’libs’, include: ’*.aar’)  compile ’com.actionbarsherlock:actionbarsherlock:4.4.0@aar’  compile ’com.android.support:support-v4:18.0.+’  }    不过官方也出了一个兼容包,也非常的不错。so 没必要非得要使用actionbarsherlock。  然后重新编译一下项目就行了。(ps 引用第三方jar包,请看我的第一行注释,你只要新建一个libs的文件夹,然后把想要jar包复制到文件夹下,接着把注释那句复制到build文件中,修改一下(*.aar -》 *.jar)就可以了)。  但是我们要是使用本地的自定义的aar文件,请看我的实现过程,如果你有更好的请转告小弟共同进步第一步 :生成aar文件

我的方法是通过maven-android-plugin来生成的,如果你使用过actionbarsherlock以前的版本的话,这个工具应该不陌生,如果你连maven 都不知道的话,建议好好学习一下maven,虽然现在gradle很火 ,但是我还是最喜欢maven。

关于具体生成步骤不久不详细说了,文章最后贴出几个网址供大家学习使用,放心我按顺序给你们,只要一步一步的来绝对能成功

1 把你的maven版本提升到3.1.1 2 去github上clone下来 maven-android-sdk-deployer 这个项目  3 通过maven-android-plugin生成一个android项目    mvn archetype:generate \  -DarchetypeArtifactId=android-quickstart \  -DarchetypeGroupId=de.akquinet.android.archetypes \  -DarchetypeVersion=1.0.11 \  -DgroupId=your.company \  -DartifactId=my-android-applica如果你和我一样不幸的话,请看下一步

2 手动的添加class.jar文件到android -studio

选中项目F4 ,可以查看到详细的依赖关系

android代码混淆以及怎么判断一个apk代码是否被混淆过

方案一: 一、 下载dex2jar包,解压 二、把apk包的后缀名改为.zip 三、把apk压解压拿到classes.dex文件,并放到dex2jar所在的目录下 四、运行命令dex2jar.exe classes.dex 五、下载jd-gui 六、把jar包加载到jd.gui,查看源码,源码中的类名,方法名,变量名是否已经改变

方法二: 一、下载apktool工具 二、运行apktool.bat d xxx.apk,把apk反编译成smali 三、如果想要进一步查看源码,可下载smali2java 四、使用smali文件的文件名进行分析,如果存在1个或1个以上的资源类的smali文件,就可以证明该apk没有被混淆过。

proguard 混淆器怎么用,请教

如何保护我们的源代码,实际上,应该有几种方法可以使用:1、使用代码混淆器 2、重载应用服务器的classloader 对于第一种方法来说,现在外面有很多开源工具可以使用,个人认为最好用的当属proguard莫属。proguard主要是易用易学。而且提供的功能也挺多。下面是个人一点使用心得 (1)、从网上download proguard工具,proguard工具主要包含是几个jar文件和一些example,(2)、将里面的几个jar文件添加到类路径下面。当然,也可以不添加,但是下面在做混淆的时候,必须指定classpath,使在做混淆的过程中,能否访问该类 (3)、编写一个配置文件,主要是混淆器的一些参数。比如,下面是一个例子 -injars platform.jar -outjars platform_out.jar -libraryjars 《java.home》/lib/rt.jar -libraryjars ibatis-common-2.jar -libraryjars ibatis-dao-2.jar -libraryjars ibatis-sqlmap-2.jar -libraryjars junit-3.8.1.jar -libraryjars d:/j2ee.jar -libraryjars struts.jar -libraryjars commons-lang.jar -libraryjars D:/0working/coreproject/byislib/jasperreports-0.6.1.jar -libraryjars commons-beanutils.jar -printmapping proguard.map -overloadaggressively -defaultpackage ’’ -allowaccessmodification -dontoptimize -keep public class * { public protected *; } -keep public class org.** -keep public class it.** 各个参数的含义参考proguard文档,该文档非常详细,上手很容易 OK,到此就完成了代码混淆,打开产生的jar包可以看到,多了好多a、b、c之类的类文件。说明混淆结果已经成功。将原jar删除、运行产生的混淆jar包,一切正常!

android jar包类名如何混淆成方框

一、如何指定某个包不被混淆不被混淆的包下放一个指定不被混淆的class,这样该包名就不会被混淆举例demo原有目录结构如下: 图1-1指定MainActivity不被混淆-keep public class * extends android.app.Activity # 保持哪些类不被混淆-flattenpackagehierarchy ’yjrtest’ #重新包装所有重命名的包并放在给定的单一包中混淆后的目录结构如下: 图1-2可以看出除了MainActivity所在的包没有被混淆之外其他的包名都被混淆了。

Android第三方类库中的jar包不被混淆

假如你的项目中有这样一个image类库, 打开image类库下的build.gradle文件,查看里面有哪些 引用包 ,如果lib里面也有包, lib中的也需要查看

假如现在,让 最后一个“ compile’com.blankj:utilcode:1.9.8 ’“ 不被混淆

打开图中的 External Libraries 文件, 我们导入的所有的第三方jar包都在里面 找到“ compile’com.blankj:utilcode:1.9.8 ’“

查看包名,在混淆文件中添加

所有的jar包都依次写上 -keep class “jar包名“ ,就ok了 --注意事项-- 1.保证实体类不被混淆 2.保证第三方的jar包不被混淆,类似于,友盟,地图,等等,配置的时候,就把混淆文件也copy过来,免得再回去找 3.添加基础混淆配置,网上有很多的实例

################ 以下直接copy到 proguard-rules.pro文件中,实体类,第三方部分,需修改####################

Android项目里如何混淆自己打的jar包或者防止被反编译

我们打出的apk是混淆的,根本原因是这样的。1、代码编译成class文件2、代码打成jar包3、混淆jar包4、用jar包生成classes.dex5、resources.ap_6、生成apk以及签名只不过工具帮我们一次性全做了,如果你要写批处理来做,就要按上面的步骤来做了。 到eoeAndroid网站查看回答详情》》



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有