Android apk反编译之android APK有效加密方法
用安卓apk反编译利器Apktool

用安卓apk反编译利器Apktool,教你去掉软件里的广告(只用于学习交流。
)给大家介绍下windows环境下使用Apktool的方法。
安装:1.先装JAVA环境,JDK/JRE都行,官网下载装过的就跳过吧!2.下载apktool.jar及相关文件,这里下apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip3.解压apktool.jar到C:Windows 解压apktool-install-windows.zip到任意文件夹(例如:E:Android学习工具反编译ApkTool)4.Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入apktool看看。
会列出一些帮助的话就成功了。
Apktool命令:apktool d XXX.apk PATH //反编译XXX.apk到文件夹PATHapktool b PATH //从文件夹PATH重建apk到PATHdistout.apk//============================================================ ========================//案例:“超级指南针”的顶部有一条广告区,我们的目的就是把它去掉。
运行cmd进入Apktool所在目录(我的是:“E:Android学习工具反编译ApkTool”)后,使用Apktool命令操作,如下现在在“E:Android学习.工具反编译新建文件夹指南针”目录下就得到了反编译后的文件,用记事本打开其中的AndroidManifest.xml,找到与下面类似的代码段:也就是找到有一连串字符序列的地方,如上CD0E46BC8B9DF1394F1E5F6030067A71和DEE43EDE-D2DF-4B4D-A754-894C9E7F960E两处,这两处分别是架势广告与admob提供的id地址。
怎样使Android APP不被破解和反编译

我Android APP怎样不被破解和反编译话不多说直接进入主题,Android开发者都会遇到APK被破解的情况。
而我们怎能让Android APP不被破解和反编译呢?首先我们要知道普通的加密技术如混淆代码、防二次打包技术已经无法保证APK的安全。
而对于DEX、RES、.SO 库的保护目前普通的技术还无法实现,所以我们要寻求第三方加密保护平台。
对APK进行高级别的加密保护,来防止APP被破解和反编译的情况。
下面我就向大家分享某加密平台的使用步骤!首先我们先登陆官网注册一个账号,注册在右上角。
如果已经拥有账号可以直接使用登录使用。
注册成功或是登陆后,进入个人中心。
在最右边可以看到个人中心、操作流程等,我们点击基本资料填写完成信息。
个人资料一定要填写完整,要不然是审核不通过的,无法使用加密服务。
审核通过后就可以使用爱加密的加密服务了。
点击个人中心,在右边有一个“提交加密”,点击进入上传界面。
然后点击“选择文件”,选择要加密的APK包。
根据APK包的大小不同,需要稍等一下。
上传完成后点击“提交加密”,下面就需要工作人员进行加密。
等加密完成后会受到一封邮件,通知你已经加密完成。
然后我们点击加密记录,会发现需要加密的APK包已经加密完成。
我们只需要将加密好的APK包下载,然后完成签名就OK了!此次加密已经完成!经过加密的APK包是否真的可以防止破解和反编译呢?我们就到源码安全检测平台检测一下!首先我们登录检测平台可以看到“上传检测文件”,点击后可以选择需要检测的APK文件。
选择我们刚刚加密的文件进行检测!根据APK包的大小不同需要稍等一下!之后检测结就出来了!同时我们也可以使用反编译工具看看能不能再进行破解和反编译!我们通过加密前后的对比分析得出,经过加密后的APK包。
在反编译的时候里面的smali 文件内容已经进行加密,对有的文件已经无法找到。
通过对加密前后的安全检测和反编译分析得知,对APK的DEX、RES、.SO库、的加密是可以对Android APP进行有效的防止破解和反编译的!。
Android开发apk反编译和二次打包教程

Android开发apk反编译和⼆次打包教程作为Android开发者,⼯作中少不了要反编译别⼈的apk,当然主要⽬的还是为了学习到更多,取彼之长,补⼰之短。
今天就来总结⼀下Android反编译和⼆次打包的⼀些知识。
⾸先声明本⽂的⽬的是为了通过例⼦讲解反编译和⼆次打包的原理和⽅法,继⽽作为后续讲解防⽌⼆次打包和App安全的依据,并不是⿎励⼤家去重新打包别⼈的App,盗取他⼈劳动成果。
本⽂⾸先介绍⼏种Android反编译⼯具的使⽤,然后实现在不需要知道源代码的情况下,仅通过修改反编译得到的smali⽂件实现修改apk逻辑功能的⽬的。
Android中常⽤的反编译⼯具有三个:dex2jar、jd-gui和apktool,这三个⼯具的作⽤如下:dex2jar:将apk中的classes.dex⽂件转换成jar⽂件。
jd-gui:查看由dex2jar转换成的jar⽂件,以界⾯的形式展⽰反编译出来的Java源代码。
apktool:反编译⽣成smali字节码⽂件,提取apk中的资源⽂件。
为了尽可能的把问题讲清楚,我们来实现⼀个很简单的例⼦。
⾸先创建⼀个⼯程DecompileDemo,在MainActivity中定义⼀个布局,其中包含⼀个Button,点击会打印⼀段⽇志。
public class MainActivity extends AppCompatActivity implements View.OnClickListener {private static final String TAG = "MainActivity";private Button btn;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);btn = (Button) findViewById(R.id.btn);btn.setOnClickListener(this);}@Overridepublic void onClick(View v) {Log.d(TAG,"Button is clicked");}}将这个⼯程编译⽣成的apk解压,取出其中的classes.dex放在dex2jar⼯具的⽬录下,然后执⾏命令会在当前⽬录下⽣成class-dex2jar.jar⽂件然后打开jd-gui,将class-dex2jar.jar⽂件拖进去,就可以看到反编译出来的源代码。
Android开发之反编译与防止反编译

Android开发之反编译与防止反编译Android开发之反编译与防止反编译防止反编译是每个程序员的必修课,因为当你辛辛苦的研发一个应用,被人家三下五除二给反编译了,是一件多么尴尬的事啊。
那么如何防止反编译啊?这里就用Google Android自带的代码混编的方式来防止反编译。
孙子兵法中讲得好:“知彼知己百战不殆”,所以在讲解防止反编译之前,先让我们了解一下如何反编译一个应用。
一、反编译Android应用实验环境:Windows8.1企业版、dex2jar-0.0.9.9反编译工具包:Android反编译工具包(升级版)1.将Apk反编译得到Java源代码具体步骤:1) 首先将apk文件后缀改为zip并解压,得到其中的classe s.dex,它就是java文件编译再通过dx工具打包而成的,将classes.d ex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。
在命令行下定位到dex2jar.bat所在目录,运行dex2jar.bat classes.dex如图:生成classes_dex2jar.jar如图:2) 进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包c lasses_dex2jar.jar,即可看到源代码了,如下图:2. 将apk反编译生成程序的源代码和图片、XML配置、语言资源等文件具体步骤:1) 下载上述反编译工具包,打开apk2java目录下的apktool1.4. 1文件夹,内含三个文件:apktool.jar ,aapt.exe,apktool.bat,注:里面的apktool_bk.jar是备份的老版本,最好用最新的apkt ool.jar在命令行下定位到apktool.bat文件夹,输入以下命令:apktoo l.bat d -f abc123.apk abc123如下图:上图中,apktool.bat命令行解释:apktool.bat d -f [apk文件 ] [输出文件夹][html] view plain copy1.<?xml version="1.0"encoding="utf-8"?>2.<manifest android:versionCode="1"android:versionNam e="1.0"package="com.jph.recorder"3.xmlns:android="/apk/res/android">4.<uses-sdk android:minSdkVersion="8"android:targetSdk Version="18"/>5.<uses-permission android:name="android.permission.W RITE_EXTERNAL_STORAGE"/>6.<uses-permission android:name="android.permission.R ECORD_AUDIO"/>7.<uses-permission android:name="android.permission.VI BRATE"/>8.<uses-permission android:name="android.permission.SE ND_SMS"/>9.<application android:theme="@style/AppTheme"androi d:label="@string/app_name"android:icon="@drawable/ic_laun cher"android:allowBackup="true">10.<activity android:label="@string/app_name"android: name="com.jph.recorder.Recorder">11.<intent-filter>12.<action android:name="android.intent.action.MAIN "/>13.<category android:name=" UNCHER"/>14.</intent-filter>15.</activity>16.<activity android:label="@string/show_recordFile"an droid:name="com.jph.recorder.ShowRecordFiles"/>17.<activity android:theme="@android:style/Theme.Dial og"android:name=".AboutActivity"/>18.<activity android:label="@string/feedback_label"and roid:name=".FeedBackActivity"/>19.<service android:name="com.jph.recorder.RecordServ ice"/>20.</application>21.</manifest>将反编译完的文件重新打包成apk,很简单,输入apktool.bat b abc123(你编译出来文件夹)即可,命令如下:打包apk后的文件在目录C:\HelloAndroid下,生成了两个文件夹:builddist其中,打包生成的HelloAndroid.apk,在上面的dist文件夹下,Ok3. 图形化反编译apk上述步骤一、二讲述了命令行反编译apk,现在提供一种图形化反编译工具:Androidfby首先,下载上述反编译工具包,打开Androidfby目录,双击An droid反编译工具.exe,就可以浏览打开要反编译的apk文件。
反编译APK文件的三种方法(转)

反编译APK⽂件的三种⽅法(转)因为学习Android编程的需要,有时我们需要对⽹络上发布的应⽤项⽬进⾏学习,可是Android项⽬⼀般是通过APK⽂件进⾏发布的,我们看不到源代码,嘿嘿,办法总会有的,⽽且不⽌⼀个...ps:对于软件开发⼈员来说,保护代码安全也是⽐较重要的因素之⼀,不过⽬前来说Google Android平台选择了Java Dalvik VM的⽅式使其程序很容易破解和被修改,⾸先APK⽂件其实就是⼀个MIME为ZIP的压缩包,我们修改ZIP后缀名⽅式可以看到内部的⽂件结构,类似Sun JavaMe的Jar压缩格式⼀样,不过⽐较去别的是Android上的⼆进制代码被编译成为Dex的字节码,所有的Java⽂件最终会编译进该⽂件中去,作为托管代码既然虚拟机可以识别,那么我们就可以很轻松的反编译。
所有的类调⽤、涉及到的⽅法都在⾥⾯体现到,⾄于逻辑的执⾏可以通过实时调试的⽅法来查看,当然这需要借助⼀些我们⾃⼰编写的跟踪程序。
Google最然在Android Market上设置了权限保护app-private⽂件夹的安全,但是最终我们使⽤修改定值的系统仍然可以获取到需要的⽂件。
⼀、dexdump⽅法dexdump是emulator⾃带提供的查看dex⽂件的⼯具,可使⽤类似这样的命令将dex⽂件dump到txt⽂件中:D:\Program Files\android-sdk-windows-1.6_r1\platforms\android-1.6\tools>dexdump.exe -d classes.dex > spk.dump.txt 得到的⽂件内容,描述了类的信息,但实在是不好读啊~~~~⼆、dex2jar + XJad ⽅法该⽅法是使⽤dex2jar.jar包,将classes.dex⽂件解包成jar,在通过XJad(或者其他class反编译⼯具)进⾏java反编译。
如:1、dex2jar.bat d:\play\classes.dex默认的输出路径同classes.dex,⽣成的⽂件名为classes.dex.dex2jar.jar2、使⽤XJad反编译该jar包之后的使⽤⽅法,⼤家都懂的:)该⽅法的好处在于,通过XJad反编译后,⼤家可直接开到java源⽂件,缺点在于只能反编译出开发时的java⽂件,⽽开发时使⽤的lib包不能反编译出来。
AndroidApk的破解:反编译、修改资源代码、重新打包、签名

AndroidApk的破解:反编译、修改资源代码、重新打包、签名⼯具准备apktool附上Mac安装说明:Download Mac (Right click, Save Link As apktool)Download apktool-2 ()Rename downloaded jar to apktool.jarMove both files (apktool.jar & apktool) to /usr/local/bin (root needed)Make sure both files are executable (chmod +x)Try running apktool via cli问题:⽣成的都是smail ⽂件,JD-GUI能查看jar⽂件。
dex2jarTools to work with android .dex and java .class filesJD-GUIJava Decompiler实验步骤提取资源$apktool d xxx.apk提取jar将xxx.apk改名成xxx.apk.zip,⽤压缩⼯具解压⽂件,得到classes.dex⽂件。
运⾏d2j-dex2jar.sh classes.dex, 得到classes-dex2jar.jar$cd dex2jar-2.0/$chmod u+x *.sh$cd ../xxx.apk/$../dex2jar-2.0/d2j-dex2jar.sh classes.dex查看java代码使⽤JD-GUI打开classes-dex2jar.jar,界⾯中选择class⽂件即可查看java代码。
修改代码注意,修改代码及资源,最好的⽅式是修改apktool反编译后的资源级smali代码。
JD-GUI查看的java代码不适宜修改,因为修改后还需要重新转换成smali,才能重新编译打包会apk。
⾄于smali的修改,则要学习smali语⾔的语法了,smali是⼀种类似汇编语⾔的语⾔,具体语法可⾃⾏上⽹学习。
Android APK加密方案

Android APK加密方案Android APK加密方案都有哪些?看如下分析:1、伪加密伪加密是Android4.2.x系统发布前的Android加密方式之一,通过java代码对APK(压缩文件)进行伪加密,其修改原理是修改连续4位字节标记为”P K 01 02”的后第5位字节,奇数表示不加密偶数表示加密。
虽然伪加密可以起到一定防破解作用,但也会出现问题,首先使用伪加密对其APK加密后市场无法对其进行安全检测,导致部分市场会拒绝这类APK上传;其次,伪加密的加密方式和解密方式也早已公布导致它的安全程度也大大降低;再次,Android4.2.x系统无法安装伪加密的APK;最后伪加密只是对AP K做简单保护,在java层源码加壳保护、核心so库、资源文件、主配文件、第三方架包方面却没有任何保护处理。
Android APK加密方案2、混淆保护把原来有具体含义的类名,变量名,方法名,修改成让人看不懂的名字,例如方法名getUserName编程了方法名。
Android APK加密方案3、运行时验证运行时验证,主要是指在代码启动的时候本地获取签名信息然后对签名信息进行检验来判断自己的应用是否是正版,如果签名信息不是正版则提示盗版或者直接崩溃。
当然你可以把必要的数据放在服务器端。
AndroidAPK加密方案破解:找到smali文件中,判断是否相等的部分。
改为常量true,即失效。
总之,反编译一些apk之后,只要是java代码写的总会有smil文件。
对于s mil文件,如果耐心读的话,还是可以查看到一些关键代码的。
相较于应用来说,游戏apk因为采用cocos2d-x或者unity3D,采用的是c++和c#编写的跨平台程序,在apk采用JNI的方式。
所以没有smali,可以防止静态被破解apk包。
Android APK加密方案当然游戏包apk在运行的时候,会把.*so加载到内存中。
动态也是可以在内存中抓取相应的数据。
android反编译

Android APK反编译详解(附图)分类:Android 2011-08-28 22:42 29996人阅读评论(31) 收藏举报这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。
在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。
一、反编译Apk得到Java源代码首先要下载两个工具:dex2jar和JD-GUI前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。
以下是下载地址:dex2jar:/files/dex2jar-0.0.7-SNAPSHOT.zipJD-GUI:/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下载地址:/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下,生成了两个文件夹:builddist其中,打包生成的HelloAndroid.apk,在上面的dist文件夹下,Ok注:本android反编译教程,是在Windows 7 Ultimate 64bit ,测试通过上述反编译工具包下载另外,作为应用开发者,肯定不希望自己的代码被反编译的,下一遍博客中讲述如何通过混淆代码放在反编译:Android如何防止apk程序被反编译。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android apk反编译之有效防止破解和反编译加密方法对于Android开发者来说,自己开发的Android APP被破解是个让人头疼的事。
那有什
么办法能防止Android apk反编译和破解呢?一般的混淆代码和防二次打包还有效么?我们通过下面的内容来验证一下!
首先我们找一个经过混淆代码和防二次打包的Android APK,这样的Android APK包不难找!只要到爱加密APK源代码安全检测平台,检测一下就可以知道做过什么保护。
通过图片我们可以看到这款Android APK做了混淆代码和防二次打包保护,对于其他的Android APK中的DEX、RES、SO库等文件未做任何保护。
下面我就通过对APK源代码的安全分析,看看这Android APK的安全怎么样!
首先我先将APK反编译,看看能不能拿到代码!经过简单的反编译我们就可以轻松的拿到APK里面的源代码,下面我们就修改一下里面的东西,看看之前的APK保护是否有效!
1、配置用户权限(重要)
2、添加必须组件(重要)
完成这2个步骤我们的sdk就已经植入成功了,如图:
那么我们怎么解决这款APK做的保护呢?不用着急,我们慢慢来!
首先我们发现当登录的时候会提示签名信息不一致,导致不能登录!经过分析发现他是给apk做了签名信息认证,这时我们需要找到他获取签名信息的地方,如下图:
到这一步就可以绕过这款APK的二次打包防护了,这样我们就可以登录了!登陆后我们可以看到这款Android APK已被植入广告!
这里我要简单介绍一下APK的混淆代码、防二次打包的加密技术是怎么回事!
混淆代码:
Android APP的源码进行混淆后混淆器将代码中的所有变量、函数、类的名称加密为简短的英文字母代号,在APP被破解后增加破解者对代码的阅读难度。
但是混淆的功效只能运作在APP已经被破解后,而且只是增加破解者的难度时间,对其防止破解的作用意义不是很大。
防二次打包:
二次打包是指将APK拆包后重新打包,二次打包必将丢失原有的签名。
大多数的Android开发者都是将签名信息作为认证标准,所以只要原有的签名信息改变,APK就无法正常运行。
但是如果将这个认证信息功能屏蔽掉,防二次打包就失效了!
通过对APK的反编译我们知道,混淆代码和防二次打包的APK加密技术已经无用!下面我们通过对DEX、RES、SO库等主要Android APK文件进行加密,看看是否能有效防止APK被破解和反编译!
我们先通过爱加密的APK安全保护平台,对这款Android APK进行安全保护。
步骤如下:
登录/注册→上传APK→等待系统加密→完成后下载APK→给APK签名→完成!
注意:
在爱加密APK源代码安全保护平台,个人信息要填写完整,否则无法正常使用。
APK 加密完成后,系统会发出邮件通知加密完成。
最后下载APK包再次完成签名,就可以正常使用了!
下面我们对加密过得APK进行源代码的安全检测,看看对DEX、RES、SO库等主要文件的加密,是否真能防止破解和反编译!
经过爱加密APK源代码安全检测平台的检测,我们看到这款APK已经做了相当高级的加密保护。
但是面对破解技术是否有效果呢?我们试着对破解一下!
我们先解压,然后反编译。
当我们解压的时候会得到“解压文件损坏”的提示,而我们打开源代码却看到里面的代码已经和原来的不一样了!
所以我们最后得到总结就是对DEX、RES、SO库等主要APK文件的加密是有效的,因为我们根本无法拿到里面的代码,无法进行任何修改。
这是我的Android APK防止破解和反编译的经验分享,希望可以帮到Android开发者朋友!。