android 反编译及防止反编译

代码混淆—android被反编译的两种解决方案 最近在做一些android的项目,对apk文件能够被反编译这一情况有点头大,就花了点时间,研究了下关于apk被反编译的一些解决方法。        Java的字节码一般是非常容易反编译的,而android采用java编写,生成的apk安装文件实际上就是一个压缩格式,后缀改为.zip,解压缩,再借用其他工具就能被反编译出来,目前android程序所谓的去广告版、汉化版都是通过反编译修改源码 阅读详情
 

android 反编译 APK,请看http://blog.youkuaiyun.com/happyhell/article/details/5836361

同时还有个更好的工具,可以直接参考源代码,结合上面的反编译,无敌!

一下是该反编译地址及使用方法:

找到Android软件安装包中的class.dex:
把apk文件改名为.zip,然后解压缩其中的class.dex文件,它就是java文件编译再通过dx工具打包成的。
 
工具准备:
1、把dex文件反编译为jar文件的工具。(dex2jar)
http://code.google.com/p/dex2jar/downloads/list
 
2、把jar反编译为java的工具。(JD-GUI)
http://java.decompiler.free.fr/?q=jdgui
 
反编译步骤:
1、把class.dex拷贝到dex2jar.bat所在目录。运行dex2jar.bat class.dex,生成classes.dex.dex2jar.jar。
2、运行JD-GUI工具(它是绿色无须安装的),打开上面的jar文件,即可看到源代码。

但如何防止反编译: 

作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来。

Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一个proguard文件夹

proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用。

下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先来看看android-sdk-windows\tools\lib\proguard.cfg的内容:

  1. -optimizationpasses 5  
  2. -dontusemixedcaseclassnames  
  3. -dontskipnonpubliclibraryclasses  
  4. -dontpreverify  
  5. -verbose  
  6. -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*  
  7.   
  8. -keep public class * extends android.app.Activity  
  9. -keep public class * extends android.app.Application  
  10. -keep public class * extends android.app.Service  
  11. -keep public class * extends android.content.BroadcastReceiver  
  12. -keep public class * extends android.content.ContentProvider  
  13. -keep public class * extends android.app.backup.BackupAgentHelper  
  14. -keep public class * extends android.preference.Preference  
  15. -keep public class com.android.vending.licensing.ILicensingService  
  16.   
  17. -keepclasseswithmembernames class * {  
  18.     native <methods>;  
  19. }  
  20.   
  21. -keepclasseswithmembernames class * {  
  22.     public <init>(android.content.Context, android.util.AttributeSet);  
  23. }  
  24.   
  25. -keepclasseswithmembernames class * {  
  26.     public <init>(android.content.Context, android.util.AttributeSet, int);  
  27. }  
  28.   
  29. -keepclassmembers enum * {  
  30.     public static **[] values();  
  31.     public static ** valueOf(java.lang.String);  
  32. }  
  33.   
  34. -keep class * implements android.os.Parcelable {  
  35.   public static final android.os.Parcelable$Creator *;  
  36. }  

从脚本中可以看到,混淆中保留了继承自Activity、Service、Application、BroadcastReceiver、ContentProvider等基本组件以及com.android.vending.licensing.ILicensingService,

并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。(详细信息请参考<proguard_path>/examples中的例子及注释。)

让proguard.cfg起作用的做法很简单,就是在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了

完整的default.properties文件应该如下:

  1. # This file is automatically generated by Android Tools.  
  2. # Do not modify this file -- YOUR CHANGES WILL BE ERASED!  
  3. #  
  4. # This file must be checked in Version Control Systems.  
  5. #  
  6. # To customize properties used by the Ant build system use,  
  7. # "build.properties", and override values to adapt the script to your  
  8. # project structure.  
  9.   
  10. # Project target.  
  11. target=android-9  
  12. proguardproguard.config=proguard.cfg  

大功告成,正常的编译签名后就可以防止代码被反编译了。反编译经过代码混淆的apk得到的代码应该类似于下面的效果,是很难看懂的:


如果您使用的是2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可 

 

防反编译转自:http://blog.youkuaiyun.com/sunboy_2050/article/details/6727640

npm报错 npm WARN deprecated....的问题解决方式 报错 :npm WARN deprecated … 现象:无法进行有效的vue项目的部署以及npm install 命令的执行。 原因一:版本问题 说明:由于npm的版本过低或者过高导致的报错 检查版本: npm -v 如果版本是比较旧的,或者是最新的,这里可以进行对npm的更新和回退。 更新npm版本: npm updated -d 查看可以更新的版本 npm install -g npm 默认安装最新版本 安装回退指定的版本: npm updated -d 查看所有的版本 npm -g i. 阅读详情

相关推荐

“开宝五子棋陪练”-首款开放智能的五子棋习题练习安卓应用

使用Kotlin语言以及Jetpack Compose UI库开发,主要就是写Composable函数,显示棋盘、棋子和一些按钮,响应用户的点击和滑动操作,以及保存和恢复数据。但我针对本应用是用于做题的特殊需求,对该算法库做了一个简单的JNI层封装,方便UI前端Kotlin代码的调用。

weixin_44120030的博客 2396

教大家防止Jar包被反编译

加密的方法就是,向Jar注入无效代码(不合法的,或者根本不是代码的字符串)。 那么无效的代码又怎么能正确运行呢? 答案就是,你要保证你的代码永远不会执行到那一步。 我作一个简单的例子说明: 我们建立一个项目: package com.TestJar; public class Main { public static void main(String[]

ZhengJingLe的博客 4万+

Gröbner基方法入门第I部分:项序和约化

Gröbner基方法入门第I部分:项序和约化 理想的准素分解与矩阵分解是计算代数的核心问题,它们在计算机代数、计算代数几何、代数编码和密码学、多维系统理论等学科都有非常重要的理论意义与应用价值.Gröbner基理论是研究理想的准素分解与矩阵素分解的重要工具之一.更简单地概括:Gröbner基方法是从任意一个多项式理想的一组给定生成元,计算另一组性质良好的生成元,并称为该理想的Gröbner基.它能用来判定任意多项式是否属于该理想. Gröbner基的代数算法是Buchberger在1960年代开发的,并

MinCong Luo的博客 4258

app加固&apk文件防止反编译&apk打包流程

文章目录【1】Android上apk【2】直接放上原理图:(加壳原理)【3】后续时间充足 我会整理一篇app加固文章 【1】Android上apk Android上可直接运行的文件类型是apk文件,它其实是一种zip文件。就好比windows上的exe文件。 通过反编译apk可以获得dex文件和一些res文件,也可获得相应的java文件,从而也可以达到自定义apk,或者汉化等效果。但同时这也对某些apk来说是不安全的。所以有时会用到app加固技术。 【2】直接放上原理图:(加壳原理) 【3】后续时间

zjcoming 9665

用Django框架+爬虫技术实现自动获取可画(Canva)团队会员资格的方法

可画(canva)是一个非常流行的在线平面设计平台,因为它无需专业训练和技能就可以利用其丰富的资源设计出美观、酷炫的作品,因而它受到了极其广泛的设计专业和非专业人群的喜爱本文介绍了一种方法,它采用Django网络框架与爬虫技术相结合,实时监控定时更新可画团队版免费邀请链接的网站页面,一旦链接有更新动作,第一时间获取相关信息,并直接加载这个有效的邀请链接,自动进入可画网站获得团队版使用资格。

hhyyqq的博客 2207

Cursor插件安装CodeX保姆级教程:从登录到调整面板布局,一步不落

本文提供Cursor编辑器安装CodeX插件的详细教程,涵盖从登录到调整面板布局的全流程。通过优化界面布局和配置参数,帮助开发者提升编码效率,特别适合需要智能代码补全的编程场景。

weixin_42648844的博客 4744

android 防止反编译的若干方法

第一种方式:混淆策略 混淆策略是每个应用必须增加的一种防护策略,同时他不仅是为了防护,也是为了减小应用安装包的大小,所以他是每个应用发版之前必须要添加的一项功能,现在混淆策略一般有两种: 对代码的混淆 我们在反编译apk之后,看到的代码类名,方法名,已经代码格式看起来不像正常的Android项目代码,那么这时候就会增加阅读难度,增加破解难度,...

weixin_33843947的博客 999

网安保研避坑指南:中科院信工所各研究室真实体验与导师选择建议

本文为中科院信工所网络安全保研生提供深度指南,详细解析了信工所六个研究室的研究方向、真实氛围与导师选择策略。文章特别强调,选择导师是决定研究生体验的关键,并提供了针对各研究室的避坑建议与实战调研方法,帮助学生做出明智选择。

weixin_29210727的博客 1575

灵魂一问,如何彻底防止反编译?(1)

主要步骤 用加密算法对源程序APK进行加密,再将其与壳程序APK的DEX文件合并生成新的DEX文件,最后替换壳程序中的原DEX文件即可。得到新的APK也叫做脱壳程序APK,它已经不是一个完整意义上的APK程序了,它的主要工作是:负责解密源程序APK,然后加载APK,让其正常运行起来。 在这个过程中需要了解的知识是:如何将源程序APK和壳程序APK进行合并 这需要了解DEX文件的格式,下面简单介绍一下: 现在只要关注其中三个部分:我们需要将加密之后的源程序APK文件写入到DEX中,那么就需要修改checks

2401_83641491的博客 1230

辐射制冷无规散射结构非球形散射体的结构优化与设计准则

本文针对辐射制冷材料中非球形散射体的光散射特性开展研究,提出了一种基于体积散射截面和不对称因子的综合评价方法。通过建立简化模型分析球体、圆柱体、长方体等六种几何形状在太阳波段的散射性能,发现金字塔形和圆锥形具有更强的后向散射能力。研究创新性地提出"反射因子SR=S(1-g)"这一评价参数,该参数与宏观反射率高度相关,为非球形散射体的优化设计提供了定量依据。仿真结果表明,合理选择散射体形状可显著提升辐射制冷材料的太阳反射率,为实现高效被动制冷提供了新的结构设计思路。

huanghm88的专栏 78

8.时间序列预测

目标:使用历史数据预测未来的销售额。通过以上步骤,可以在Excel中有效进行预测分析,帮助做出更准确的决策通过考虑不同时期数据的影响,可以显著提高预测的准确性。结合多种方法和模型,可以灵活应对复杂的市场环境和变化。

学习,输出==》再学习再输出 891

android安卓APK 防止反编译技术

android apk 防止反编译技术加壳技术(转)android apk 防止反编译技术第二篇 – 运行时修改 Dalvik 指令(转)android apk 防止反编译技术第三篇 – 加密(转)android apk 防止反编译技术第四篇 – 对抗 JD-GUI(转)android apk 防止反编译技术第五篇 – 完整性校验(转)android apk 防止反编译技术大家好,我叫方包,关注公...

定期分享编程干货~ 606

基于SpringBoot+SpringCloud+Vue前后端分离项目实战 --开篇

如何高效学习Java? 毕业设计项目应该怎么做?入门实战项目应该怎么做? 做Java开发都应该学习哪些框架技术? 我想来跟你聊聊为什么要学习此专栏?我们经常说,看一个事儿千万不要直接陷入细节里,你应该先鸟瞰其全貌,这样能够帮助你从高维度理解问题。同样,当你迷茫想努力没有方向时,最事半功倍的方法是:找人带你! 因为过来人,更懂得如何学、如何做、如何少走弯路! 那今天就给大家带来一门专栏课程,由 天罡gg 和 经海路大白狗 两位实力大牛合力打造的一款专栏,可以让你从0到1快速拥有企业级规范的项目实战经验!

天罡gg的专栏 2万+

Android反编译与防止反编译

光有这些思路和搞懂单个知识的应用是还远远不够的,在Android开源框架设计思想中的知识点还是比较多的,想要搞懂还得学会整理和规划:我们常见的**Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,**这些都是属于Android开源框架设计思想的。如下图所示:这位阿里P8大佬针对以上知识点,熬夜整理出了一本长达1042页的完整版如何解读开源框架设计思想。

2401_87034185的博客 1014

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

反编译Android APK及防止APK程序被反编译

怎么逆向工程对Android Apk 进行反编译 google Android开发是开源的,开发过程中有些时候会遇到一些功能,自己不知道该怎么做,然而别的软件里面已经有了,这个时候可以采用反编译的方式,解开其他的程序,来了解一些它 的做法,同时啊,还可以借鉴别人的软件结构,资源文件;作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看。此方式主

站在巨人的肩膀上学习 700

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Android-如何防止apk被反编译

一、对抗反编译   对抗反编译是指apk文件无法通过反编译工具(如apktool,baksmali,dex2jar)对其进行反编译,或者反编译后无法得到软件正确的反汇编代码。常用的做法有两种: 阅读反编译工具源码   这种办法需要分析人员具较强的代码阅读与理解能力,因此,这种方法具体实施起来困难。 压力测试   比起阅读反汇编工具的源码,这种方法思路就简单多,而且实施起来...

weixin_33778778的博客 844

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android如何防止apk程序被反编译

反编译地址及使用方法: 找到Android软件安装包中的class.dex: 把apk文件改名为.zip,然后解压缩其中的class.dex文件,它就是java文件编译再通过dx工具打包成的。 工具准备: 1、把dex文件反编译为jar文件的工具。(dex2jar) http://code.google.com/p/dex2jar/downloads/list 2、把jar反编译为java的工具。...

L的博客 3060

谈谈android反编译和防止反编译的方法

android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原。 因此开发人员如果不准备开源自己的项目就需要知道怎样防止反编译和反编译他人的项目来学习。 2.3版本以上在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”可以对代码进行混淆,反编译后是很难看懂的

Jackson-huang的专栏 488

Android 反编译与防止被反编译

泉贸软件工作室原创、原帖地址:http://www.svch0st.com/cont.asp?id=38Android App使用Java语言进行开发,因此十分容易就可以被反编译出近乎原始的程式码。也因为这个特性,许多人在写Android App的时候会喜欢去反编译别人写好的程式,再挪为己用,虽然很不道德,但这也是一种有效提升软体开发速度的方法。但换个角度想,如果是自己写的程...

weixin_33762130的博客 153

【Android】apk反编译与防止反编译

【Android】apk反编译与防止反编译 相关工具下载:http://pan.baidu.com/s/1bnAkIb9 apktool 这是一个可以对apk进行反编译和重打包的工具。 下载地址:http://code.google.com/p/android-apktool/ 反编译apk 1.把apk文件放到apktool解压目录下。 2.打开命令行,cd到工具解压缩目录,使用“apktool d apk文件路径”命令反编译apk。 apktool反编译命令辅助脚本代码(windows)

1769

android studio生成so,防止反编译

一、下载NDK资源文件 1、 下载地址:http://www.androiddevtools.cn/,android开发很多常用的工具都可以在这个网站上下载 2、解压NDK下载文件,配置NDK环境 在Path路径的后面追加分号然后将ndk路径配置上去就OK了 3、在android studio中配置ndk路径 4、测试NDK是否配置成功

huanying68的专栏 4775

android反编译详解暨如何防止反编译暨apk解析快速获取包名

一、反编译 在开发过程中,我们往往会被各种app的精致布局和动画效果所吸引,这时我们就会想着模仿他们,但往往我们不知从何入手。这时反 编译就出现了,个人理解的反编译是为了借鉴别人的代码,更好的学习,提高自己(自恋ing...) 二、防止反编译 三、一步获取包名

梦痕的专栏 2022

android反编译和防止反编译的方法

android基于java的,而java反编译工具很强悍,所以对正常apk应用程序基本上可以做到100%反编译还原。   因此开发人员如果不准备开源自己的项目就需要知道怎样防止反编译和反编译他人的项目来学习。   2.3版本以上在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”可以对代码...

weixin_33739646的博客 144
上一篇: Android程序的退出终于完美解决
下一篇: android 混淆错误 Proguard returned with error code 1
happy hell
博客等级 码龄23年 136粉丝 179原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值