android代码混淆安卓编程 如何进行代码混淆

android代码混淆  时间:2021-06-23  阅读:()

android源码被混淆了怎么还原

APK混淆以后是不可逆的,以目前的技术无法还原,楼主还是多想想怎么编程吧,别想着用别人辛辛苦苦写的代码,大家都不容易啊。

APK混淆以后 也是可以反编译的 但是都是一些类 abcdef...很难懂的,这就是混淆了类名甚至包名,当然再重新编译还是通过,但是自己收获不大,没有逻辑概念。

android 代码混淆 依赖工程需要加混淆吗

代码混淆有两种重要功能。

其一,混淆代码。

其二,优化代码。

进行代码混淆的程序被称为代码混淆器(混淆工具)。

进行代码混淆的意义主要在于对代码进行一定程度的加密。

在android 2.3之后,sdk中就已经集成了混淆器proguard(目录在sdk oolsproguard),所以我们可以很方便的直接在工程中开启代码混淆。

eclipse android工程开启混淆功能,我们需要手动在项目文件.properties(我的是project.properties文件)中添加下面的代码 # To enable ProGuard to shrink and obfuscate your code, ment this (available properties: sdk.dir, user.home): proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt 某些方式创建的项目中可能已经有如上两行了,只是默认被注释掉了,只要把proguard.config这一行解注释就好了。

这样代码混淆功能就开启了,在打签名包时,项目会自动进行代码混淆。

cocos2dx android 代码混淆

1. 下载cocos2dx 2.2.1   去cocos2dx官网下载就好,最好是2.2.1版本。

3.0版本变化比较大,也没测试过。

  3. 创建工程   使用cocos2dx目录下的tools/project-creator/create_project.py创建一个工程。

  4. 编译android版本   网上很多文章说,编译cocos2dx的Android版本时需要安装cygwin之类的,其实这对于目前的ndk版本来说是不必要的,因为高版本的ndk都集成了cygwin的一些功能。

我这里使用的是ndk r9d。

下面来说一下操作步骤。

  我编译的习惯是直接在jni目录下预先ndk-build命令,因为在Windows下使用.sh结尾的文件太怪异了。

首先来看一下build_native.sh干的工作:   这是build_native.sh中实际工作的部分。

可以看到它使用NDK_ROOT下的ndk-build来编译,还导入了NDK_MODULE_PATH, 这个NDK_MODULE_PATH是为Android.mk中的import-module提供路径选择。

  现在来导入NDK_MODEL_APTH, 在Android.mk的import-module之前加上cocos2dx中的几个路径:   $(call import-add-path, G:/cocos2dx)   $(call import-add-path, G:/cocos2dx/cocos2dx/platform/third_party/android/prebuilt)   运行ndk-build, 编译。

  编译时可能出现这样的错误:error: GLES2/gl2.h: No such file or directory,这是因为低版本的Android版本不支持opengl es2.0,在Application.mk中加上:   APP_PLATFORM := android-17   5. 生成apk包   在eclipse下打开创建的工程,导入相关的包后,在AndroidMenifest.xml中加入:   android:debuggable="true"   表明这是一个可以调试的包。

运行,结果出现:   这是因为该工程默认使用build_native.sh编译:   因为build_native.sh现在已经没用了,所以把它改成:   这个意思是,直接使用NDK_ROOT环境变量下的ndk-build.cmd来编译工程,编译成debug版本,编译成armeabi和armeabi-v7a两种指令格式的库,执行这个命令的目录是工程目录下的jni文件夹。

debug版本和armeabi-v7b主要是为了后面使用visualGDB调试做准备。

  再编译,就可以生成apk包了。

  VisualGDB调试   1. 下载并安装VisualGDB, 安装完成后,在Visual Studio的目录中可以看到Android选项:   2. 配置VisualGDB, 在Android -> Setup SDK/NDK location   主要配置JDK,SDK,NDK,ANT路径   3. 设置要调试的apk包。

Android -> Debug a Custom APK file   4 设置完成后,在代码中设置断点,点击Debug, 开始调试   5. 等apk安装完成后,程序会运行到断点出,就可以开始用Visual Studio调试了

关于Android studio 怎么使用代码混淆的问题

展开全部 1,android studio 1.3之后的版本就没有Generate Signed APK —Run ProGuard 这个选项了! 要在build.grandle 把 minifyEnabled 改成Ture 就可以了! minifyEnabled true 下面是我使用的代码: #指定代码的压缩级别 -optimizationpasses 5 #包明不混合大小写 -dontusemixedcaseclassnames #不去忽略非公共的库类 -dontskipnonpubliclibraryclasses #优化 不优化输入的类文件 timize #预校验 -dontpreverify #混淆时是否记录日志 -verbose # 混淆时所采用的算法 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* #保护注解 -keepattributes *Annotation* # 保持哪些类不被混淆 #-keep public class * extends android.app.Fragment #如果有引用v4包可以添加下面这行 -keep public class * extends android.support.v4.app.Fragment #忽略警告 -ignorewarning #####################记录生成的日志数据,gradle build时在本项目根目录输出################ #apk 包内所有 class 的内部结构 -dump class_files.txt #未混淆的类和成员 -printseeds seeds.txt #列出从 apk 中删除的代码 -printusage unused.txt #混淆前后的映射 -printmapping mapping.txt #####################记录生成的日志数据,gradle build时 在本项目根目录输出-end################ ################混淆保护自己项目的部分代码以及引用的第三方jar包library######################### #-libraryjars libs/xUtils-2.6.14.jar #-libraryjars libs/alipaysdk.jar #-libraryjars libs/alipaysecsdk.jar #-libraryjars libs/alipayutdid.jar #-libraryjars libs/wup-1.0.0-SNAPSHOT.jar #-libraryjars libs/weibosdkcore.jar #三星应用市场需要添加:sdk-v1.0.0.jar,look-v1.0.1.jar #-libraryjars libs/sdk-v1.0.0.jar #-libraryjars libs/look-v1.0.1.jar #我是以libaray的形式引用了一个图片加载框架,如果不想混淆 keep 掉 -keep .nostra13.universalimageloader.** { *; } #忽略警告 mon.** #保留一个完整的包 -keep mon.** { *; } #如果引用了v4或者v7包 -dontwarn android.support.** ############混淆保护自己项目的部分代码以及引用的第三方jar包library-end################## #-keep public class * extends android.view.View { # public (android.content.Context); # public (android.content.Context, android.util.AttributeSet); # public (android.content.Context, android.util.AttributeSet, int); # public void set*(...); #} #保持 native 方法不被混淆 -keepclasseswithmembernames class * { native ; } #保持自定义控件类不被混淆 #-keepclasseswithmembers class * { # public (android.content.Context, android.util.AttributeSet); #} #保持自定义控件类不被混淆 #-keepclasseswithmembers class * { # public (android.content.Context, android.util.AttributeSet, int); #} #保持自定义控件类不被混淆 #-keepclassmembers class * extends android.app.Activity { # public void *(android.view.View); #} #保持 Parcelable 不被混淆 -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; } #保持 Serializable 不被混淆 -keepnames class * implements java.io.Serializable #保持 Serializable 不被混淆并且enum 类也不被混淆 -keepclassmembers class * implements java.io.Serializable { static final long serialVersionUID; private static final java.io.ObjectStreamField[] serialPersistentFields; !static !transient ; !private ; !private ; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve(); } #保持枚举 enum 类不被混淆 如果混淆报错,建议直接使用上面的 -keepclassmembers class * implements java.io.Serializable即可 #-keepclassmembers enum * { # public static **[] values(); # public static ** valueOf(java.lang.String); #} -keepclassmembers class * { public void *ButtonClicked(android.view.View); } #不混淆资源类 -keepclassmembers class **.R$* { public static ; } #避免混淆泛型 如果混淆报错建议关掉 #–keepattributes Signature #移除log 测试了下没有用还是建议自己定义一个开关控制是否输出日志 -assumenosideeffects class android.util.Log { public static boolean isLoggable(java.lang.String, int); public static int v(...); public static int i(...); public static int w(...); public static int d(...); public static int e(...); }

android 代码混淆有什么用

混淆后你的函数就变成了一些混乱的词组成的名字了 这样即使别人反编译了你的程序,他可能也看不懂你的代码 比如你原来有一个函数叫myMethod混淆后可能就变成a了,这样谁也不知道这个函数是什么用意啊

安卓编程 如何进行代码混淆

安卓在eclipse中的ADT已经改变原有的模式了,你在项目文件中找到这两个文件,一般在项目根目录里。

第一个文件是描述文件,第二个文件是配置文件。

如果要实现代码混淆,需要修改第二个文件。

打开第二个文件,如下: 其中红线部分说,如果你要实现代码混淆,你需要把下面一行给反注释掉。

就是把红线第二行前面的#号给去掉就好了。

补充:编程就是让计算机为解决某个问题而使用某种程序设计语言编写程序代码,并最终得到相应结果的过程。

为了使计算机能够理解人的意图,人类就必须要将需解决的问题的思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务。

这种人和计算机之间交流的过程就是编程。

编程:设计具备逻辑流动作用的一种"可控体系"【注:编程不一定是针对计算机程序而言的,针对具备逻辑计算力的体系,都可以算编程】 例子:①比如编写一段代码程序②编写一个控制设备体系

wordpress投资主题模版 白银黄金贵金属金融投资网站主题

wordpress投资主题模版是一套适合白银、黄金、贵金属投资网站主题模板,绿色大气金融投资类网站主题,专业高级自适应多设备企业CMS建站主题 完善的外贸企业建站功能模块 + 高效通用的后台自定义设置,简洁大气的网站风格设计 + 更利于SEO搜索优化和站点收录排名!点击进入:wordpress投资主题模版安装环境:运行环境:PHP 7.0+, MYSQL 5.6 ( 最低主机需求 )最新兼容:完美...

[黑五]ProfitServer新加坡/德国/荷兰/西班牙VPS五折,不限流量KVM月付2.88美元起

ProfitServer已开启了黑色星期五的促销活动,一直到本月底,商家新加坡、荷兰、德国和西班牙机房VPS直接5折,无码直购最低每月2.88美元起,不限制流量,提供IPv4+IPv6。这是一家始于2003年的俄罗斯主机商,提供虚拟主机、VPS、独立服务器、SSL证书、域名等产品,可选数据中心包括俄罗斯、法国、荷兰、美国、新加坡、拉脱维亚、捷克、保加利亚等多个国家和地区。我们随便以一个数据中心为例...

Fiberia.io:$2.9/月KVM-4GB/50GB/2TB/荷兰机房

Fiberia.io是个新站,跟ViridWeb.com同一家公司的,主要提供基于KVM架构的VPS主机,数据中心在荷兰Dronten。商家的主机价格不算贵,比如4GB内存套餐每月2.9美元起,采用SSD硬盘,1Gbps网络端口,提供IPv4+IPv6,支持PayPal付款,有7天退款承诺,感兴趣的可以试一试,年付有优惠但建议月付为宜。下面列出几款主机配置信息。CPU:1core内存:4GB硬盘:...

android代码混淆为你推荐
郭列90后的杰出代表有那些?网络视频下载器万能网络视频下载器 1.34怎么用renderpartialrenderHtml和render有什么区别代发邮件邮件代发会不会有短信代发那么好的市场效益呢?网站客服代码在线客服系统的代码添加到网站中,要怎么做?idataparameterinvalid parameter是什么意思btest进入北大青鸟需要什么学历呢在线操作系统常见的电脑操作系统有哪些?各有什么优缺点pps官方网站什么叫PPS?是什么网站?camel是什么意思Camel骆驼究竟是哪个国家品牌?
域名主机基地 ftp空间 ddos GGC 双11抢红包攻略 realvnc 512au seovip 国外免费空间 一元域名 小米数据库 linux空间 服务器维护方案 asp免费空间申请 shopex主机 联通网站 移动服务器托管 smtp服务器地址 lamp什么意思 稳定空间 更多