android反编译防止反编译

【Android】反编译与预防被反编译 近期在开发一款软件时,遇上了加密、解密数据方面的一些技术问题无法攻克,于是抱着试试看的态度使用jadx-gui工具进行反编译一下。哎,居然还成功了,更骚的是,这一款App没有对应用进行混淆、加密、加固,没多久我就研究明白了他们的应用是如何解决我所遇到的问题,升职加薪又离我更近一步了🤭但是呢,为了防止我所编写的软件遇上像我这样的老六,特地写一篇文章来告诉大家如何能成为我这样的老六,以及如何加强App的软件防护等级。 阅读详情

本文对如何反编译,防止反编译,和常遇到的问题做了个总结,并略有修改。

资源来自:http://blog.youkuaiyun.com/sunboy_2050/article/details/6727581

http://blog.youkuaiyun.com/sunboy_2050/article/details/6727640

http://blog.youkuaiyun.com/wustrive_2008/article/details/7169810

如何防止反编译

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

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

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

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

[html]  view plain copy
  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自动生成的project.properties文件中加上一句“proguard.config=proguard.cfg”就可以了

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

[html]  view plain copy
  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. proguard.config=proguard.cfg  

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


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


如何进行反编译

这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。

在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。


一、反编译Apk得到Java源代码
首先要下载两个工具:dex2jar和JD-GUI

前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。以下是下载地址:

dex2jar:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip

JD-GUI:http://laichao.googlecode.com/files/jdgui.zip

具体步骤:

首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的;

解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行下定位到dex2jar.bat所在目录

运行

dex2jar.bat    classes.dex

生成

classes.dex.dex2jar.jar

生成jar文件的截图如下:

 

运行JD-GUI(jd-gui.exe),打开上面生成的jar包,即可看到源代码了


HelloAndroid源码(编译前的apk源码对照)如下:

 


二、反编译apk生成程序的源代码和图片、XML配置、语言资源等文件

如果是只是汉化软件,这将特别有用。

首先还是下载工具,这次用到的是apktool

下载地址:http://code.google.com/p/android-apktool/downloads/list

下载:apktool1.4.1.tar.bz2 和 apktool-install-windows-r04-brut1.tar.bz2(两个包都下载)

具体步骤:

将下载的两个包解压到同一个文件夹下,应该会有三个文件:aapt.exe,apktool.bat,apktool.jar

在命令行下定位到apktool.bat文件夹,输入以下命令:apktool d C:\*.apk C:\*文件夹,如下图:

 

命令行解释:apktool   d   [apk文件 ]   [输出文件夹]

反编译的文件如下(AndroidManifest.xml为例):


特别注意:你要反编译的文件一定要放在C盘的根目录里


将反编译完的文件重新打包成apk,很简单,输入apktool b c:\***文件夹(你编译出来文件夹)即可,命令如下:

 

打包apk后的文件在目录C:\HelloAndroid下,生成了两个文件夹:

build

dist

其中,打包生成的HelloAndroid.apk,在上面的dist文件夹下,Ok



混淆代码中常遇到的问题

问题一:proguard:Parse Exception:

解决方法:由于Eclipse的工作空间路径中有空格(可能还有其他原因导致此错误),

问题二:Conversion to Dalvik format failed with error 1 

解决办法:网上下一个新版本的proguard,解压后,复制里面的lib和bin目录覆盖SDK中tools/progurad/下的lib和bin目录即可。

proguard的下载地址:http://proguard.sourceforge.net/#downloads.html最终解决问题!

Android如何防止apk程序被反编译教程 非常详细的Android 防止反编译的教程,开发者必须学习的好教程 立即下载

相关推荐

pk 加固工具apkprotect android 防止反编译

一款免费的为apk加固的工具。 特别说明:加固后需要重新签名apk才能安装。加固的apk包会比未加固的大一些。

Android安全之防止被反编译

关于防止android apk被反编译的技术,主要介绍以下几种: 1、加壳技术(推荐) 2、运行时修改字节码 3、伪加密 4、对抗JD-GUI(推荐) 5、完整性校验(推荐) 防止apk反编译的技术1---加壳技术 一、什么是加壳? 加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作。 大多数病毒就是基于此原理。...

LVXIANGAN的专栏 5832

Android编程之防止反编译的实现方法

本文实例讲述了Android编程之防止反编译的实现方法。分享给大家供大家参考,具体如下: 1. 判断程序是否运行在模拟器上 boolean isRunningInEmualtor() { boolean qemuKernel = false; Process process = null; DataOutputStream os = null; try{ process = Runtime.getRuntime().exec(getprop ro.kernel.qemu); os = new DataOutputStream(process.getOutput

android 防止反编译的若干方法

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

weixin_33843947的博客 999

Android如何防止apk程序被反编译(尊重劳动成果)

作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来,天下痛苦之事莫过于此啊,本文会介绍一种防止apk程序被反编译的方法,感兴趣的朋友可以了解下哦

【数据分析与挖掘实战】金融风控之贷款违约预测详解1(有代码和数据集)

金融风控一.题目理解1.1.题目概况1.2数据概况1.3预测指标二.数据来源三.查看数据四.分类指标计算示例4.1混淆矩阵4.2准确度4.3precision(精确度),recall(召回率),f1-score4.4P-R曲线4.5ROC曲线4.6AUC曲线4.7KS值五.数据分析5.1基本信息5.2查看数据集中特征缺失值,唯一值等5.3查看特征的数值类型有哪些,对象类型有哪些5.3.1数值连续型变量分析5.3.2非数值类别型变量分析5.3.3总结:5.4变量分布可视化5.4.1单一变量分布可视化 更新中~

m0_49263811的博客 1万+

Android反编译与防止反编译

1、Android反编译 1)下载两个工具 dex2jar,jar2java 2)修改apk后缀为.zip,解压得classes.dex 3)用dex2jar.bat打开classes.dex得到classes.dex.dex2jar.jar 4)用jar2java打开上面得到的jar包即得Java文件   2、Android防止反编译 这里介绍的Android反编译工具是ProGuard。 P

qq353067548的专栏 646

RRAM/ Near Memory Computing (NMC) Survey - Reading Notes 0707

Reading Notes of Resistive Random Access Memory – Day 2 Chapter 3 RRAM Characterization and Modeling Overview of RRAM Physical Mechanism A general picture for the filamentary switching mechanism. Forming: 对本征RRAM样本,加电压VformingV_{forming}Vforming​,中间氧化层的O

Blog of Lucky H6 989

android 防止反编译 安全加固技术

代码混淆(ProGuard)技术 主要是重新组织和处理Class文件,降低代码逆向编译后的可读性,即反编译后的代码很难理解。 但该技术无法防止加壳技术进行加壳(加入吸费、广告、病毒等代码),而且只要是细心时间够多的人,依然可以对代码依然可以对代码进行逆向分析,所以该技术并没有从根本解决破解问题,只是增加了破解难度。并且还可以起到压缩APK包的作用。 但是从实际情况来看,由于混淆技术的多元化发展,混淆理论的成熟,混淆的Java代码可以很好地防止反编译。 如何混淆代码 Eclipse的话可以通过Joc.

写自己看而已 2750

如何产生ATPG IR-drop分析波形文件(DFT)

摘要:本文介绍了生成VCD波形的流程与要求,主要用于后端进行IR-drop分析。生成过程分为ATPG shift和speed ATPG capture两部分,分别对应不同的输入要求、模式设置和仿真参数。

murphyrong的博客 870

笔记汇总 | 斯坦福 CS229 机器学习

本文为斯坦福大学 2014 秋季 CS229 机器学习课程学习笔记本文主体部分转载自黄海广博士,文末已给出,大家有兴趣可以直接访问笔记首页,下载对应课程资料及作业代码。

ReturnTmp的博客 2461

android安卓APK 防止反编译技术

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

定期分享编程干货~ 606

别再手动改文献了!手把手教你定制Mendeley的GB/T 7714-2005引用格式(附常见问题修复)

本文详细指导如何定制Mendeley的GB/T 7714-2005引用格式,解决科研文献管理中的常见问题。通过深度解析Mendeley样式编辑器,精准控制作者显示规则、出版社信息精简及期刊页码处理,实现参考文献一键合规。附常见问题修复和实战调试方法,大幅提升学术写作效率。

weixin_26833503的博客 374

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

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

站在巨人的肩膀上学习 700

Python爬虫抓取学术期刊数据(Springer、Elsevier)

本文详细介绍了如何使用Python爬虫抓取学术期刊网站(如Springer、Elsevier)上的文章信息,并进行数据清洗和存储。我们使用了requestsSeleniumpandas等技术,通过模拟浏览器行为来绕过反爬虫机制,并将数据保存为Excel文件,方便后续分析。未来,我们可以通过加入更多的期刊网站数据源,扩展爬虫的功能,抓取更多的学术数据。同时,结合自然语言处理(NLP)技术,可以对抓取的文章进行自动化的摘要提取和主题分类,为学术研究提供更多的支持。

2201_76125261的博客 1487

构建一个基于Simulink的LC滤波器仿真模型

需求分析LC滤波器(Inductor-Capacitor Filter)是一种常见的无源滤波器,广泛应用于电力电子、通信、音频处理等领域。其主要作用是平滑输入信号中的高频谐波成分,保留低频或直流成分,从而提高输出信号的质量。在电力电子系统中,LC滤波器常用于逆变器、整流器等设备的输出端,以减少开关噪声和电磁干扰(EMI),确保输出电压和电流的稳定性。本项目将基于Simulink平台,开发一个完整的LC滤波器仿真模型,涵盖从电源输入到滤波输出的整个过程,并通过PI控制器实现对滤波效果的闭环控制。

MHD0815的博客 740

Android-如何防止apk被反编译

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

weixin_33778778的博客 844

回归预测 | MATLAB实现TCN时间卷积神经网络多输入单输出回归预测

回归预测 | MATLAB实现TCN时间卷积神经网络多输入单输出回归预测

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 2490

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

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

Jackson-huang的专栏 488

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android 反编译与防止被反编译

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

weixin_33762130的博客 153

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【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
上一篇: 采用execSQL()和rawQuery()方法完成数据的添删改查
下一篇: android反编译和防止反编译的方法
thisiscx
博客等级 码龄26年 5粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值