• 防止 apk反编译 jocky-- java混淆代码 (转至:http://my.oschina.net/f839903061/blog/72554)


    1、下载jocky,解压后把整个文件夹复制到Eclipse的plugin目录。
    2、重启Eclipse,在项目上点右键,如果出现jocky菜单,则安装成功。

    3、在项目上点右键,选菜单jocky->jocky setting,弹出菜单后设置如图

    4、点ok后,将在项目的根目录下生成一个jocky_build.xml文件,事实上是一个ant build文件。打开这个文件,作适当修改
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!-- WARNING: Jocky autogenerated file. 
       Any modifications will be overwritten.
    -->
    <project basedir="." default="build" name="iSzmap.Android.public.jocky">
       <property name="jocky.jar" value="D:eclipse-jee-galileo-SR1-win32-2eclipsepluginsorg.apusic.jocky_1.0.3jocky.jar"/>
       <property name="jocky.output.dir" value="iszmap"/>
       <property name="jocky.scramble.level" value="package"/>
       <property name="target" value="1.5"/>
       <path id="project.classpath">
       <pathelement location="bin"/>
      <pathelement location="D:/android-sdk-windows-1.5_r3/platforms/android-1.5/android.jar"/>
       </path>
       <target name="init">
       <jocky jar="${jocky.jar}" level="${jocky.scramble.level}"/>
       <mkdir dir="${jocky.output.dir}"/>
       <mkdir dir="${jocky.output.dir}/bin"/>
       </target>
       <target name="clean">
       <delete dir="${jocky.output.dir}/bin"/>
       <delete dir="${jocky.output.dir}"/>
       </target>
       <target depends="init" name="build">
       <echo message="${ant.project.name}: ${ant.file}"/>
       <jocky enable="true"/>
       <javac destdir="${jocky.output.dir}/bin" target="${target}" encoding="UTF-8">
       <src path="src/com/iszmap/android/map"/>
       <classpath refid="project.classpath"/>
       </javac>
       </target>
    </project>


    注意红色的部分,第一部分是添加编译时需要的额外的类包;第二部分是设定java源文件的编码,如果您的文件中有中文的话,必须设定编码;第三部分是设定源文件的目录,因为有时候我们只想输出src目录下的部分包而不是全部。

    5、保存后选jocky-jocky Now就可以进行混码了。

    混码后的class文件可以通过命令进行打包,或用winrar进行压缩,注意必须压成.zip文件而不是.rar文件。

    二、
    使用jocky的时候,如果你的java文件使用了utf-8编码,而windows默认是gbk编码,可能会出现"unmappable character for encoding GBK"错误而导致jocky不能使用的情况。可以通过修改jocky_build.xml中的javac段,为其添加encoding="UTF-8"就可以解决这个问题了。
    这个问题的实质原因是因为ant的javac使用了默认编码(如果你使用windows xp中文版,默认编码就是GBK),从而导致编码不一致。
            <javac destdir="${jocky.output.dir}/WebRoot/WEB-INF/classes" target="${target}" encoding="UTF-8">
                <src path="src"/>
                <classpath refid="project.classpath"/>
            </javac>
    jocky下载:

    http://www.pudn.com/downloads133/sourcecode/others/detail567839.html

    当你将这些都搞到了之后,运行你的android项目,然后从bin文件夹中拷贝出你的apk文件,用我上一章说的apk反编译一下,查看是不是有一大堆的不搭边的.java文件,这表示被混淆了,祝你好运,如果成功的话如图所示:

  • 相关阅读:
    最简单跨平台的日志库
    linux文件锁
    Linux 获取屏幕分辨率与窗口行列数(c/c++)
    linux 信号机制
    记一次函数异常(getopt_long)
    程序单实例运行
    简单地 Makefile 书写
    学习go的一些笔记
    20200930 10. Netty 核心源码剖析
    20200930 9. TCP 粘包和拆包 及解决方案
  • 原文地址:https://www.cnblogs.com/kobe8/p/3822318.html
Copyright © 2020-2023  润新知