`
fonter
  • 浏览: 857888 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

android混淆(Obfuscate)

阅读更多

Obfuscate an Android application 这篇文章的作者介绍了如何在Android平台下混淆程序,并且给出antbuild.xml文件,经过自己的测试,发现里面少了一些target项,在Eclips会出错,后来结合zxing开源项目的build.xml文件,终于混淆成功,项目包减少了不少。

 

这里主要提一些注意事项,不提供源代码

1、创建build.xml文件

 直接在项目的目录下新建一个名为build.xml的文件

 

 

2、创建Ant打包方式

项目 –> properties –> builders –> new –> ant builder

 

 

接着Buildfile选择项目build.xml文件,Base Dir选择项目目录就行了,记得勾上你的builders

 

 

 

3build.xml文件修改

zxing这个文件没有加入混淆包选项,所以得做一些修改,如下示例

 

<property name="proguard-home" value="D:\\Program Files\\proguard4.2\\lib\\"/>

	<target name="optimize" depends="compile">
		<jar basedir="${outdir-classes}" destfile="temp.jar"/>
		<java jar="${proguard-home}/proguard.jar" fork="true" failonerror="true">
			<jvmarg value="-Dmaximum.inlined.code.length=32"/>
			<arg value="-injars temp.jar"/>
			<arg value="-outjars optimized.jar"/>
			<arg value="-libraryjars ${android-jar}"/>
			<!-- <arg value="-libraryjars ${library-jar}/some_lib_used.jar"/> -->
			<arg value="-dontpreverify"/>
			<arg value="-dontoptimize"/>
			<arg value="-dontusemixedcaseclassnames"/>
			<arg value="-repackageclasses ''"/>
			<arg value="-allowaccessmodification"/>
			<arg value="-keep public class com.iwidsets.WidsetsActivity"/>
			<!-- <arg value="-keep public class com.just2me.obfapp.receiver.*"/> -->
			<arg value="-optimizationpasses 7"/>
			<arg value="-verbose"/>
			<arg value="-dontskipnonpubliclibraryclasses"/>
			<arg value="-dontskipnonpubliclibraryclassmembers"/>
		</java>
		<delete file="temp.jar"/>
		<delete dir="${outdir-classes}"/>
		<mkdir dir="${outdir-classes}"/>
		<unzip src="optimized.jar" dest="${outdir-classes}"/>
		<delete file="optimized.jar"/>
	</target>


 

注意:keep public class com.iwidsets.WidsetsActivity需改成你的主Activity

 

 并修改target dex

 

	<!-- Convert this project's .class files into .dex files. -->
	<target name="dex" depends="compile,optimize">
		<echo>Converting compiled files and external libraries into ${out-folder}/${dex-file}...</echo>
		<apply executable="${dx}" failonerror="true" parallel="true">
			<arg value="--dex" />
			<arg value="--output=${intermediate-dex-location}" />
			<arg path="${outdir-classes-location}" />
			<fileset dir="${external-libs-folder}" includes="*.jar"/>
		</apply>
	</target>

 

  • 大小: 4.9 KB
  • 大小: 27.1 KB
  • 大小: 25.5 KB
  • 大小: 6.4 KB
1
3
分享到:
评论
9 楼 s123451 2013-05-30  
[list]
[*]
引用

[/list]
8 楼 fonter 2011-08-23  
caitiancai 写道
BUILD FAILED
D:\personal\eclipse\S2\build.xml:188: src 'D:\personal\eclipse\core\core.jar' doesn't exist.

请问这个怎么解决呀????

现在的android sdk已支持混淆了,直接通过eclipse就可以混了,不用再写xml了..你可以试试...   http://fonter.iteye.com/blog/942714
7 楼 caitiancai 2011-08-23  
BUILD FAILED
D:\personal\eclipse\S2\build.xml:188: src 'D:\personal\eclipse\core\core.jar' doesn't exist.

请问这个怎么解决呀????
6 楼 songfantasy 2011-04-28  
sdk8以后,google已经给提供很方便的混淆方法。

不过,楼主不错。总结的很好
5 楼 sunburst 2010-10-02  
fonter 写道
No resource found that matches the given name (at 'icon' with value '@drawable/icon').
sunburst 写道
非常感谢你的回答,现在出现了新问题,当我开始build的时候,显示下面的错误,应该如何解决?


resource-src:
     [echo] Generating R.java / Manifest.java from the resources...
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:26: ERROR Error: No resource found that matches the given name (at 'icon' with value '@drawable/icon').
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:26: ERROR Error: No resource found that matches the given name (at 'label' with value '@string/app_name').
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:28: ERROR Error: No resource found that matches the given name (at 'label' with value '@string/app_name').

BUILD FAILED

No resource found that matches the given name (at 'icon' with value '@drawable/icon').
在drawable没有icon吧,“No resource found that matches the given name ”这个

实际是有的,不然project本身也会报错,现在情况是不用ant是正常编译的,说明资源指向是正确的
4 楼 fonter 2010-10-01  
No resource found that matches the given name (at 'icon' with value '@drawable/icon').
sunburst 写道
非常感谢你的回答,现在出现了新问题,当我开始build的时候,显示下面的错误,应该如何解决?


resource-src:
     [echo] Generating R.java / Manifest.java from the resources...
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:26: ERROR Error: No resource found that matches the given name (at 'icon' with value '@drawable/icon').
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:26: ERROR Error: No resource found that matches the given name (at 'label' with value '@string/app_name').
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:28: ERROR Error: No resource found that matches the given name (at 'label' with value '@string/app_name').

BUILD FAILED

No resource found that matches the given name (at 'icon' with value '@drawable/icon').
在drawable没有icon吧,“No resource found that matches the given name ”这个
3 楼 sunburst 2010-09-30  
非常感谢你的回答,现在出现了新问题,当我开始build的时候,显示下面的错误,应该如何解决?


resource-src:
     [echo] Generating R.java / Manifest.java from the resources...
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:26: ERROR Error: No resource found that matches the given name (at 'icon' with value '@drawable/icon').
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:26: ERROR Error: No resource found that matches the given name (at 'label' with value '@string/app_name').
     [exec] E:\Android App\sms\MyPrivateMessages\AndroidManifest.xml:28: ERROR Error: No resource found that matches the given name (at 'label' with value '@string/app_name').

BUILD FAILED
2 楼 fonter 2010-09-28  
sunburst 写道
注意:keep public class com.iwidsets.WidsetsActivity需改成你的主Activity

这里只用添加主Activity?其他的不用添加?那我引用的jar包是否需要添加?

看你需不需要啊。。。比如重要的代码不想让人知道,就混淆。包的话也是这样啊。。。。
1 楼 sunburst 2010-09-28  
注意:keep public class com.iwidsets.WidsetsActivity需改成你的主Activity

这里只用添加主Activity?其他的不用添加?那我引用的jar包是否需要添加?

相关推荐

    obfuscate4e混淆插件

    亲测过在myeclipse下可用,按照插件安装的方式安装后可对项目代码以jar格式输出,反编译出的代码已经经过了混淆

    ProGuard-java混淆加密

    ProGuard能够对Java类中的代码进行压缩(Shrink),优化(Optimize),混淆(Obfuscate),预检(Preveirfy)。  1. 压缩(Shrink):在压缩处理这一步中,用于检测和删除没有使用的类,字段,方法和属性。  2. 优化...

    springboot工程(单个maven工程)利用proguard实现代码混淆

    基于springboot搭建一个简单案例...混淆(Obfuscate):使用 a,b,c,d 这样简短而无意义的名称,对类、字段和方法进行重命名 预检(Preveirfy):在 Java 平台上对处理后的代码进行预检,确保加载的 class 文件是可执行的

    obfuscate-0.6.3-1.16.5.jar

    obfuscate-0.6.3-1.16.5.jar

    NET-Obfuscate:混淆ECMA CIL(.NET IL)程序集以逃避Windows Defender AMSI

    网络混淆混淆ECMA CIL(.NET IL)程序集以逃避Windows Defender AMSI。 随附的博客文章: : PS C:\Users\User\Source\Repos\...

    Obfuscate:CakePHP ORM的ID混淆

    混淆 使用HashIds,Optimus,Tiny和/或自定义混淆策略对CakePHP进行主键混淆。 安装 使用安装插件: composer require muffin/obfuscate 通过运行以下控制台命令来加载插件: bin/cake plugin load Muffin/...

    JavaScript中的混淆器

    混淆 obfuscate/garble:替换变量名或方法名,让js不容易看懂。也做到了压缩的效果。 加密 encrypt:一般用eval方法加密,效果与混淆相似。也做到了压缩的效果。 我们可以通过工具进行混淆,通过工具也是目前最好的...

    python 混淆源码

    python 混淆源码,代码是2.7的 ,可以混淆3.5和2.7的源码,具体有什么问题未知,我只是改了一下输入输出方式,其最源码是在https://github.com/astrand/pyobfuscate 12年前老代码了,仅供参考

    gobfuscate:混淆Go二进制文件和软件包

    使用gobfuscate,您可以从混淆的源代码编译Go二进制文件。 这使得很难或不可能从二进制文件中解密出很多信息。如何使用go get -u github.com/unixpickle/gobfuscategobfuscate [flags] pkg_name out_pathpkg_name是...

    obfuscate

    混淆与反混淆 Bash加密器和解密器 $ pkg update && pkg upgrade $ pkg install python2 $ pkg install nodejs $ npm install -g bash-obfuscate $ pkg install git $ git clone ...

    安卓锁机教程java源码-My-Github-Stars:我的Github星星

    Obfuscate](#Android Obfuscate) [Android deobfuscated ](#Android deobfuscated ) [Android Packer](#Android Packer) [Android UnPacker](#Android UnPacker) [Android Anti-Emulator](#Android Anti-Emulator) ...

    php-obfuscate:PHP代码混淆示例

    PHP混淆安装php composer.phar install 用法cd php-obfuscate 把你PHP代码到input.php php index.php 混淆的代码放在output.php

    Obfuscate-SSL:通过SSL进行流量混淆

    模糊SSL 通过SSL进行流量混淆 去做 包长度混淆 空闲时自动断开连接 压缩 多路复用

    parcel-plugin-obfuscate:使用javascript-obfuscator混淆入口文件的包裹插件

    包裹插件混淆 此插件可让您使用对输入的javascript文件进行。 入门 开始使用您最喜欢的软件包管理器。 用纱安装 纱线添加-D包裹插件模糊处理 使用npm安装 npm install -D parcel-plugin-混淆 在生产模式下运行宗地...

    proguard6.2.0.zip

    因为Java代码是非常容易反编码的,况且Android开发的应用程序是用Java代码写的,为了很好的保护Java源代码,我们需要对编译好后的class文件进行混淆。 ProGuard是一个混淆代码的开源项目,它的主要作用是混淆代码,...

    baby_obfuscator:使用LLVM Pass混淆程序

    婴儿混淆器 使用LLVM Pass混淆程序。 写(中文): 特征 特征 启用标志 混淆常​​量字符串 -obfstr 添加伪控制流 -boguscf 指令替代 -subobf 调用图展平 -flattening 要求 llvm-9 and llvm-9-dev cmake &gt; = ...

    yguard-2.7.1_java_obfuscate_yGuard_

    This is yguard used to obfuscate Java source code.

    JSO.rar_Dot._obfuscate

    JavaScript Obuscator Obfuscate the JavaScript code. @author Shane Ng &lt;gnenahs at poboxes dot com&gt;

    pyarmor:用于混淆python脚本,将混淆的脚本绑定到固定计算机或使混淆的脚本过期的工具

    win32,win_amd64,linux_i386,linux_x86_64,macosx_x86_64 嵌入式平台:Raspberry Pi,Banana Pi,Orange Pi,TS-4600 / TS-7600等参考快速开始安装pip install pyarmor 混淆脚本pyarmor obfuscate foo.

    最新版Unity代码混淆加密插件 Obfuscator v2.5.2

    Unity代码混淆插件 Obfuscator.直接导入即可使用,根据pdf文档 ,可进一步加密。 This asset obfuscates your code to make it harder for bad guys to reverse engineer your projects. Specifically designed for...

Global site tag (gtag.js) - Google Analytics