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已经改变原有的模式了,你在项目文件中找到这两个文件,一般在项目根目录里。

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

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

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

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

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

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

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

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

WHloud Date鲸云数据($9.00/月), 韩国,日本,香港

WHloud Date(鲸云数据),原做大数据和软件开发的团队,现在转变成云计算服务,面对海内外用户提供中国大陆,韩国,日本,香港等多个地方节点服务。24*7小时的在线支持,较为全面的虚拟化构架以及全方面的技术支持!官方网站:https://www.whloud.com/WHloud Date 韩国BGP云主机少量补货随时可以开通,随时可以用,两小时内提交退款,可在工作日期间全额原路返回!支持pa...

LightNode(7.71美元),免认证高质量香港CN2 GIA

LightNode是一家位于香港的VPS服务商.提供基于KVM虚拟化技术的VPS.在提供全球常见节点的同时,还具备东南亚地区、中国香港等边缘节点.满足开发者建站,游戏应用,外贸电商等应用场景的需求。新用户注册充值就送,最高可获得20美元的奖励金!成为LightNode的注册用户后,还可以获得属于自己的邀请链接。通过你的邀请链接带来的注册用户,你将直接获得该用户的消费的10%返佣,永久有效!平台目前...

wordpress外贸企业主题 wordpress经典外贸企业建站主题

WordPress经典外贸企业建站主题,经典配色扁平化简约设计+跨屏自适应移动端设备,特色外贸企业建站功能模块+在线Inquiry询单功能,更有利于Google等英文搜索优化和站点收录。采用标准的HTML5+CSS3语言开发,兼容当下的各种主流浏览器: IE 6+(以及类似360、遨游等基于IE内核的)、Firefox、Google Chrome、Safari、Opera等;同时支持移动终端的常用...

android代码混淆为你推荐
isbackground什么叫做背景反应?background reaction一起作业网站一起作业官网是什么?怎么用电脑发短信谁知道怎样能用电脑给手机发短信东兴证券网站东兴证券超强版下载,东兴证券超强版v6下载官方网站,东兴证券软件下载在线沟通什么是在线状态?空间导航怎么设置QQ空间个性导航flex是什么Adobe 软件系列有那些,分别是做什么的?手机在线客服手机客服热线卡发短信为什么我的手机卡不能发短信camel是什么意思cantorp与骆驼是什么关系,想买一双骆驼鞋,分不清cantorp和camel骆驼是什么关系
me域名注册 网游服务器租用 深圳主机租用 查询ip地址 naning9韩国官网 服务器评测 liquidweb ion omnis koss 国外php空间 web服务器架设 服务器托管什么意思 息壤代理 服务器硬件防火墙 根服务器 cloudlink google台湾 英国伦敦 国外在线代理服务器 更多