深入了解APK反编译(分解,编译和打包)

1、下载dex2jar最新版本0.0.7,下载地址

https://www.360docs.net/doc/d612248860.html,/p/dex2jar/downloads/list

2、下载class反编译工具,我用的是jad,大家可以根据自己情况选择。

3、在cmd下进入dex2jar.bat所在路径,然后输入“dex2jar.bat XXX”,XXX指的是你要反编译的apk中的classes.dex文件所在路径及名称,比如:我的dex2jar.bat在

D:\Android\apk_decode\dex2jar-0.0.7-SNAPSHOT路径下, classes.dex在D:\Android下所以:你进入dex2jar.bat路径下后,输入dex2jar.bat D:\Android\classes.dex

4、这样会生成一个jar文件,然后用jad工具将.class文件反编译成.java文件。

5、反编译jar文件,见下载的附件

要反编译一个apk译文件,需要做以下几步:

1.找到apk安装文件

2.找到安装软件的*.dex译文件

3.dump dex文件

4.分析dex文件获取想要的代码

1.找到apk安装文件

这个比较容易,把手机或者模似器安装好后,可以在eclipse的File Explorer下找到安装程序的apk译文件,也可以通过adb命令找到:

$ adb shell

# cd /system/app

cd /system/app

# ls

2.找到安装软件的*.dex译文件

运行安装软件后,会在android文件系统下生成一个*.dex文件,一般在目录

/data/dalvik-cache下,也可以通过adb命令找到:

$ adb shell

# cd /data/dalvik-cache

cd /data/dalvik-cache

# ls

3.编译软件对应的dex文件,通过以下指令:

adb shell dexdump -d -f -h

/data/dalvik-cache/data@app@be.citylive.twitpic.apk@classes.dex > twitpic.text 指令参数解释:

-d : disassemble code sections

-f : display summary information from file header

-h : display file header details

-C : decode (demangle) low-level symbol names

-S : compute sizes only

4.获取需要的代码:

打开刚才得到的编译出来的text文件,会看到形如以下的代码:

Class #0 header:

class_idx : 32

access_flags : 196625 (0x30011)

superclass_idx : 61

interfaces_off : 0 (0x000000)

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

Android如何防止apk程序被反编译 作为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] -optimizationpasses 5n -dontusemixedcaseclassnamesn -dontskipnonpubliclibraryclassesn -dontpreverifyn -verbosen -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*n -keep public class * extends android.app.Activityn -keep public class * extends android.app.Applicationn -keep public class * extends android.app.Servicen -keep public class * extends android.content.BroadcastReceivern -keep public class * extends android.content.ContentProvidern -keep public class * extends android.app.backup.BackupAgentHelpern -keep public class * extends android.preference.Preferencen -keep public class com.android.vending.licensing.ILicensingServicen -keepclasseswithmembernames class * {n nnn native ;n }n -keepclasseswithmembernames class * {n nnn public (android.content.Context, android.util.AttributeSet);n }n -keepclasseswithmembernames class * {n nnn public (android.content.Context, android.util.AttributeSet, int);n }n -keepclassmembers enum * {n nnn public static **[] values();n nnn public static ** valueOf(https://www.360docs.net/doc/d612248860.html,ng.String);n }n -keep class * implements android.os.Parcelable {n n public static final android.os.Parcelable$Creator *;n }n 从脚本中可以看到,混淆中保留了继承自Activity、Service、Application、BroadcastReceiver、ContentProvider等基本组件以及com.android.vending.licensing.ILicensingService, 并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。(详细信息请参考/examples中的例子及注释。) 让proguard.cfg起作用的做法很简单,就是在eclipse自动生成的default.properties文件中加上一句“proguard.config=proguard.cfg”就可以了 完整的default.properties文件应该如下: [html] n# This file is automatically generated by Android Tools.n # Do not modify this file --YOUR CHANGES WILL BE ERASED!n #n # This file must be checked in Version Control Systems.n #n # To customize properties used by the Ant build system use,n # "build.properties", and override values to adapt the script to yourn # project structure.n # Project target.n target=android-9n proguard.config=proguard.cfgn 大功告成,正常的编译签名后就可以防止代码被反编译了。反编译经过代码混淆的apk得到的代码应该类似于下面的效果,是很难看懂的: 如果您使用的是2.3之前的SDK版本也没关系,把上面的proguard.cfg文件复制一份放到项目中,然后进行相同的操作即可\

APK文件的解包打包和修改

APK文件的解包打包和修改 相信每位玩机的人对APK文件都不陌生。你可能每天都与APK文件打交道,无论是安装和卸载有用的应用工具、插件、好玩的游戏等等。。。你可曾知道这些每天都伴随着你的APK文件是什么吗?怎样对它们作些修改呢?比如说:对英文版进行汉化、修改功能、修改文字描述、去掉广告等等。本文介绍APK的基本知识、结构、APK文件的解包、打包及签名,以及对APK文件的常规修改。 1.APK文件简介 APK是Android Package的缩写,即即Android application package文件或Android安装包。每个要安装到Android平台的应用都要被编译打包为一个单独的文件,后缀名为.apk。APK文件是用专业软件eclipse编译生成的文件包,其中包含了应用的二进制代码、资源、配置文件等。通过将APK文件直接传到Android手机中执行即可安装。APK文件其实就是zip格式,但其扩展名被改为apk,用解压软件可以直接打开。通过WinRAR或UnZip解压后,你会看到有几个文件和文件夹。一个典型的APK文件通常有下列内容组成:AndroidManifest.xml程序全局配置文件 classes.dex Dalvik字节码 resources.arsc编译后的二进制资源文件

META-INF\该目录下存放的是签名信息 res\该目录存放资源文件 assets\该目录可以存放一些配置文件 下面对这些文件和目录做些基本的注释和介绍。?AndroidManifest.xml 该文件是每个应用程序都必须定义和包含的文件,它描述了应用程序的名字、版本、权限、引用的库文件等等信息。需要解包后才能加以阅读。 ?classes.dex文件 classes.dex是java源码编译后生成的java字节码文件。dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。 ?resources.arsc 编译后的二进制资源文件。 ?META-INF目录 META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。在eclipse编译生成一个apk包时,会对所有要打包的文件做一个校验计算,并把计算结果放在META-INF目录下。这就保证了apk包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码,或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染

Apk反编译及签名工具使用

Apk反编译及签名工具使用 1) APKtool软件包及签名tool APKtool软件包有2个程序组成:apktool.jar 和aapt.exe 另外提供一个批处理文件:apktool.bat,其内容为: java -jar "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9 运行apktools.jar需要java环境(1.6.0版本以上)。 apktool.jar用于解包,apktool.jar和aapt.exe联合用于打包。 signapk.jar 用于签名。 2) APK文件的解包 下面以解开Contacts.apk为例。首先把Contacts.apk Copy到当前工作目录下(例:Test)。在DOS下打入命令 apktool d Contacts.apk ABC 这里“d”表示要解码。Contacts.apk是要解包的APK文件。ABC是子目录名。所有解包的文件都会放在这个子目录内。 3) APK文件的打包 在DOS下打入命令 apktool b ABC New-Contacts.apk 这里“b”表示要打包 ABC是子目录名,是解包时产生的子目录,用来存放所有解包后的和修改后的文件。 New-Contacts.apk是打包后产生的新的APK文件。 4) 签名,不签名安装时可能提示如下错误: Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES] --- 没有签名,可以尝试test证书;签名方法见下面。

Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] ---- 已存在签名,但使用证书不对,可以尝试使用其他证书签名。 签名方法:到目录android\build\target\product\security找到证书文件,这里可能会有几种证书, test/shared/platform/media,各种证书使用场景不同,可以自己google一下,因为签名很快而且可任意后续更改签名,可以自己尝试各种不同签名; 这个命令行是使用test证书的例子:java -jar signapk.jar testkey.x509.pem testkey.pk8 YOURAPK.apk YOURAPK_signed.apk YOURAPK_signed.apk就是签完名的apk,去测试一下您重新打包的apk吧。

如何反编译APK

如何反编辑 第一:要在你的PC上建立Java的环境,下载JDK并安装即可:https://www.360docs.net/doc/d612248860.html,/file/bw256kw9 第二:下载必要的工具。Apktool工具。apktoo.rar (6.31 MB) 下载后解压(有三个文件aapt.exe,apktool.bat,apktool.jar),为了方便。将解压出来的文件放在CDM模式(win+R)默 认的目录下。 比如,我的是Windows7 32位我的CDM模式默认目录是C:\USER\用户名。 第三:如果你是要编译系统文件的话,请将你要修改的rom里的framework-res.apk以及twframework-res.apk(暂时叫做 依赖包)用CMD模式“安装”下。 这样编译才不会出错。我一开始就是在这里纠结了很久。呵呵 安装方法:把依赖包放在刚才放apktool的目录下。(你也可以用指定目录的方法安装) cmd模式执行apktool if framework-res.apk 这个是安装framework-res.apk cmd模式执行apktool if twframework-res.apk 这个是安装twframework-res.apk

第四:准备工作都做好了,现在就可以反编译和编译了。(反编辑的APK一定要用没换过图片的,否则回编辑失败) 将你要反编译的apk放在apktool的目录下。(你也可以用指定目录) cmd模式执行apktool d XXXX.apk 这个是Decode也就是反编译 比如反编译SystemUI 就执行apktool d SystemUI.apk 就可以了(会在当前的目录下生成SystemUI 的文件夹,修改就是在这个文件夹里进行) 第五:当你修改好文件后需要回编辑 cmd模式执行apktool b XXXX 这个是build 也就是编译回去 比如编译SystemUI就执行apktool b SystemUI 就可以了(会生成一个叫dist的文件夹,编译回去的apk就是此文件夹中) 注意:第三步很重要,很多人不成功就是因为没做第三步。回编辑以后将编辑过的文件统统替换回原APK的原位置,如果要替换图片的话,最好在回编辑以后直接往原APK里替换,同理,反编辑时最好用原版没有替换过图片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.zip 3.解压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到文件夹PATH apktool b PATH //从文件夹PATH重建apk到PATHdistout.apk //============================================================ ========================// 案例: “超级指南针”的顶部有一条广告区,我们的目的就是把它去掉。 运行cmd 进入Apktool所在目录(我的是:“E:Android学习工具反编译ApkTool”)后,使用Apktool命令操作,如下

现在在“E:Android学习.工具反编译新建文件夹指南针”目录下就得到了反编译后的文件,用记事本打开其中的AndroidManifest.xml,找到与下面类似的代码段: 也就是找到有一连串字符序列的地方,如上 CD0E46BC8B9DF1394F1E5F6030067A71和 DEE43EDE-D2DF-4B4D-A754-894C9E7F960E两处,这两处分别是架势广告与admob提供的id地址。 接下来要做的就是将上述的字符序列改掉一两个字。。。 然后,将散架的文件编译回去(apktool b PATH): 可以看到E:Android学习工具反编译新建文件夹指南针distout.apk文件。。。

Android APK反编译得到Java源代码和资源文件

Android APK反编译得到Java源代码和资源文件 2011年3月9日iStar发表评论阅读评论 这段时间在学Android应用开发,在想既然是用Java开发的应该很好反编译从而得到源代码吧,google了一下,确实很简单,以下是我的实践过程。在此郑重声明,贴出来的目的不是为了去破解人家的软件,完全是一种学习的态度,不过好像通过这种方式也可以去汉化一些外国软件。 一.反编译Apk得到Java源代码 首先要下载两个工具:dex2jar和JD-GUI,前者是将apk中的classes.dex转化成Jar文件,而JD-GUI是一个反编译工具,可以直接查看Jar包的源代码。以下是下载地址:dex2jar: https://www.360docs.net/doc/d612248860.html,/files/dex2jar-0.0.7-SNAPSHOT.zip JD-GUI:https://www.360docs.net/doc/d612248860.html,/files/jdgui.zip 具体步骤: 1.首先将apk文件,将后缀改为zip,解压,得到其中的classes.dex,它就是java 文件编译再通过dx工具打包而成的; 2.解压下载的dex2jar,将classes.dex复制到dex2jar.bat所在目录。在命令行 下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex 生成classes.dex.dex2jar.jar 3.运行JD-GUI,打开上面生成的jar包,即可看到源代码了。 二.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件 如果是只是汉化软件,这将特别有用。首先还是下载工具,这次用到的是apktool,下载地址: https://www.360docs.net/doc/d612248860.html,/p/android-apktool/,apktool-1.0.0.tar.bz2和 apktool-install-windows-2.1_r01-1.zip两个包都要下。 具体步骤: 1.将下载的两个包解压到同一个文件夹下,应该会有三个文件:aapt.exe, apktool.bat,apktool.jar; 2.在命令行下定位到apktool.bat文件夹,输入以下命令: apktool d C:\***.apk C:\***文件夹 命令行解释:apktool d [要反编译的apk文件 ] [输出文件夹],特别注意:你要反编译的文件一定要放在C盘的根目录里;

反编译详细教程

.去震动教程.时间居中教程,时间显示到秒且居中 在通知栏增加模拟时钟透明状态栏代码修改 字体颜色修改关于运营商图标修改 可以ctrl+F,按需搜索 一:去震动教程: 一、首先是配置编译和反编译环境,具体方法如下: 1、在电脑上下载安装JRE(https://www.360docs.net/doc/d612248860.html,/file/clif5w53)。其次下载好apk反编译工具 (apk反编译软件.rar(2.43 MB, 下载次数: 5756) ) 2、在系统环境变量Path里加入java.exe所在路径。 右键我的电脑--属性--高级系统--设置--环境变量--系统环境变量,里面的path变量项,值里面添加java的所在路径(例如“;C:\Program Files\Java\jre6\bin”) 3、将反编译软件解压出来,为了便于使用,最好放在C:\Windows目录下。 二、提取并反编译framework-res.apk文件 1、手机必须root,先用RE管理器将/system/framework文件夹下的文件framework-res.apk复制到/sdcard,然后复制到电脑(为了方便后面的操作,建议将文件放到电脑某个盘符的根目录下。例如:e:\framework-res.apk)

2、反编译framework-res.apk文件。具体方法运行cmd.exe(如图) 然后在出来的命令提示行中输入以下命令:apktool+空格d+空格+framework-res.apk路径+空格+反编译后文件存放路径,比如文件放入d盘根目录则命令为:apktool d d:\framework-res.apk d:\framework-res(如图)(此时反编译出来的文件放在d盘framework-res文件夹下) 三、修改去震动相关的xml文件 一般framework-res\res\values\arrays.xml就是我们要修改的对象。用xml编辑器(xml 编辑器.rar(345.03 KB, 下载次数: 3223) )打开这个文件。修改如图:

apk反编译文件夹详解

反编译: 反编译apk得到的几个文件和文件夹 1。 assets 文件夹 此文件夹可以存放资源文件。至于是神马资源文件,怎么读取,这些我们就不用深究了,因为不常改。 2。 res 文件夹 主要用来存放资源。此文件夹下可以创建子文件,常见的有: anim 动画 drawable 图片 color 颜色 menu 菜单 layout 布局 values 常量值 xml 任意xml文件 我们修改apk时,一般就在这里修改。比如汉化,改名称,去广告,改字体颜色,大小神马的。 3。smali 里面主要是dex文件反编译得到的smali文件。不会java的改不起。顶多搜几个关键词汉化一下。值得注意的是,汉化时不能直接输入汉字,而应输入对应的十六进制代码。 4。AndroidManifest.xml 此文件是apk中最重要的文件之一。它是apk的全局配置文件,提供了android系统所需要的关于该应用的必要信息。 res目录浅说: 1 anim文件夹 后缀名为.xml。动画文件都放在这里。 2 drawable文件夹

用于存放图片资源,图片或者xml。 (1) 图片 图片格式:png,9.png,jpg,gif。 注意:9.png是一种特殊的png格式,与一般的png格式有区别!很多人在改完图片后将两种格式混淆,导致回编译失败。后面有制作9.png格式图片的方法。 (2) xml xml文件通常为自定义的形状shape或图片选择器类selector似的东西,就是不同状态下不同的图片,用于设置background什么的。 (3) drawable文件夹为了对屏幕的适配, ①对分辨率笼统的分:名字可以为:drawable-ldpi drawable-mdpi drawable-hdpi drawable-xhdp drawable-nodpi drawable-tvdpi 分辨率依次由高到低 ②具体到某一分辨率:drawable-分辨率,比如:drawable-1280x720 ③如果有横竖屏的区别,则命名为:drawable-land/port-mdpi, 3 color文件夹 用于存放color列表,和drawable的xml一样,表示不同状态下的不同颜色 4 menu文件夹 菜单资源文件夹。 5 layout文件夹 布局文件夹。此文件夹的名字也是可以起到屏幕适配的功能的。 ①横竖屏:layout-land/port ②分辨率:layout-1280x720 6 values文件夹 存放常量值的文件夹。里面常见的xml文件为: arrays.xml :资源数组.

APK 反编译

Apk文件的格式 Android application package文件。每个要安装到android平台的应用都要被编译打包为一个单独的文件,后缀名为.apk,其中包含了应用的二进制代码、资源、配置文件等。 apk文件实际是一个zip压缩包,可以通过解压缩工具解开。可以用zip解开*.apk文件,下面是一个he lloword的apk示例文件 |–AndroidManifest.xml |–META-INF | |–CERT.RSA | |–CERT.SF | `–MANIFEST.MF |–classes.dex |–res | |–drawable | | `–icon.png | `–layout | `–main.xml `–resources.arsc 1.Manifest文件:AndroidManifest.xml是每个应用都必须定义和包含的,它描述了应用的名字、 版本、权限、引用的库文件等等信息[ , ],如要把apk上传到Google Market上,也要对这个xml做一些配置。注意:在apk中的xml文件是经过压缩的,不可以直接打开。 2.Res文件:res文件夹下为所有的资源文件。 3.resources.arsc文件:为编译后的二进制资源文件,许多做汉化软件的人都是修改该文件内的资源 以实现软件的汉化的。 4.META-INF目录:META-INF目录下存放的是签名信息,用来保证apk包的完整性和系统的安全。 在eclipse编译生成一个api包时,会对所有要打包的文件做一个校验计算,并把计算结果放在ME TA-INF目录下。而在OPhone平台上安装apk包时,应用管理器会按照同样的算法对包里的文件做校验,如果校验结果与META-INF下的内容不一致,系统就不会安装这个apk。这就保证了apk 包里的文件不能被随意替换。比如拿到一个apk包后,如果想要替换里面的一幅图片,一段代码,或一段版权信息,想直接解压缩、替换再重新打包,基本是不可能的。如此一来就给病毒感染和恶意修改增加了难度,有助于保护系统的安全。 5.classes.dex是java源码编译后生成的java字节码文件。但由于Android使用的dalvik虚拟机 与标准的java虚拟机是不兼容的,dex文件与class文件相比,不论是文件结构还是opcode都不一样。 XML文件的反编译 在apk中的xml文件是经过压缩的,可以通过AXMLPrinter2工具解开,具体命令为: java -jar AXMLPrinter2.jar AndroidManifest.xml HelloAndroid程序中Manifest文件的实例:

Android 反编译apk 到java源码的方法

Android 反编译apk 到java源码的方法 分类:Android 2010-12-31 15:46 1931人阅读评论(1) 收藏举报Apk文件破解可见源码 1.获取apk的资源图片 直接用WinRAR打开,res/drawable直接拖拽出来即可。 2.获取xml文件信息 虽然能用WinRAR看到里面的xml文件,但是xml是经过优化的,无法直接查看,需要使用apktool工具,下载地址: https://https://www.360docs.net/doc/d612248860.html,/p/android-apktool/。 下载apktool-1.3.1.tar.bz2和apktool-install-windows-2.2_r01-2.tar.bz2解压到同一个目录,然后把待破解的apk文件拷贝到同一目录,DOS在cmd下进入apktool 所在路径,然后输入apktool d "XXX1" "XXX2",XXX1指的是你要反编译的apk文件,XXX2指的是反编译后文件存放的路径, 如:apktool d "C:/taobao.apk" "C:/taobao" 3 .反编译dex获取Java源代码 Apktool工具只能反编译成smali的中间代码文件,这里需要借助另外一个开源工具:dex2jar,下载地址:https://www.360docs.net/doc/d612248860.html,/p/dex2jar/。这个工具不能直接翻译成java文件,但是可以把dex文件转换成jar文件,然后可以通过jad工具把jar文件反编译成Java源文件,jd-gui下载地址: http://java.decompiler.free.fr/jd-gui/downloads/jd-gui-0.3.3.windows.zip。 详细步骤: 解压apk文件,直接拖拽(rar解压软件),找到classes.dex文件 在cmd下进入dex2jar.bat所在路径, 然后输入“dex2jar.bat XXX”,XXX指的是你要反编译的apk中的classes.dex 文件所在路径及名称(classes上面解压得到), 如:dex2jar.bat D:/classes.dex; 这样会生成一个classes.dex.dex2jar.jar文件,然后用jd-gui工具将jar文件反编译成java文件,选择保存所有,它会生成一个压缩文件,所有的源码都在这个压缩文件中,解压了就可以看到详细的代码了。很强大吧。

APK反编译接口

APK反编译接口 接口名称:APK反编译接口 接口平台:聚合数据 根据url上传待加密的apk 接口地址:https://www.360docs.net/doc/d612248860.html,/ijiami/upload 支持格式:json/xml 请求方式:http get 请求示例:https://www.360docs.net/doc/d612248860.html,/ijiami/upload?key=您的APPKEY&apkurl=您的应用下载地址JSON返回示例: { "reason": "成功", "result": { "appId": "20141105150359939873" }, "error_code": 0 } 提交加密应用加密 接口地址:https://www.360docs.net/doc/d612248860.html,/ijiami/encrypt 请求示例:https://www.360docs.net/doc/d612248860.html,/ijiami/encrypt?key=您的APPKEY&appid=20141105150359939873 JSON返回示例: { "reason": "成功", "result": { "appId": "d266d1cb038ffd67fdc6fe142cad02ba49fb6a57c1dfe641" }, "error_code": 0 } 查询加密结果 接口地址:https://www.360docs.net/doc/d612248860.html,/ijiami/result 请求示例:https://www.360docs.net/doc/d612248860.html,/ijiami/result?key=您申请的KEY&appid=1266d1cb038ffd67fdc6fe142cad02ba49fb6a57c1dfe641 接口备注:根据appid,查询加密结果,视不同APK加密时长不一样,需要隔段时间再次请求

Android apk反编译之android APK有效加密方法

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已经做了相当高级的加密保护。但是面对破解技术是否有效果呢?我们试着对破解一下!

apk反编译步骤

apk反编译步骤 2011-02-24 21:17:25 标签:apk反编译休闲Android职场 原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。 https://www.360docs.net/doc/d612248860.html,/2400264/499893 对于软件开发人员来说,保护代码安全也是比较重要的因素之一,不过目前来说Google Android平台选择了Java Dalvik VM的方式使其程序很容易破解和被修改,首先APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式,然后解压缩可以看到内部的文件结构,类似Sun JavaMe的Jar压缩格式一样,不过不同的是Android上的二进制代码被编译成为Dex的字节码,所有的Java文件最终会编译进该文件中去,作为托管代码既然虚拟机可以识别,那么我们就可以很轻松的反编译。所有的类调用、涉及到的方法都在里面体现到,至于逻辑的执行可以通过实时调试的方法来查看,当然这需要借助一些我们自己编写的跟踪程序。Google最然在Android Market上设置了权限保护app-private 文件夹的安全,但是最终我们使用修改定值的系统仍然可以获取到需要的文件。 当然了,我们反编译的目的是为了学习。 1. Apk文件:自己准备apk文件。 2. 将xxx.apk扩展名修改为xxx.rar或者xxx.zip,用WinRar解压缩,你可以看到内部文件的结构,类似下图所示:

3. 直接打开AndroidManifest.xml会发现是乱码,这里面是二进制字符,需要用AXMLPrinter2.jar (https://www.360docs.net/doc/d612248860.html,/p/android4me/downloads/list),下载AXMLPrinter2.jar文件,为了方便,这里我把它放到了Android SDK文件夹下面的tools文件夹中) 4. 逆向xml文件:把相应的AndroidManifest.xml放到AXMLPrinter2.jar同一目录,进入命令行模式,输入以下命令(注意空格):

APK应用程序的解包、修改、编辑、打包及应用

APK应用程序的解包、修改、编辑、汉化、打包及应用 前两讲主要讲玩机的最基本的知识,集中在如何刷机。本讲是进级的内容,来谈谈与apk 应用程序有关的知识,内容包括akp文件的解包、打包、反编辑、解析、汉化、修改等内容,也介绍几个常用的软件。最后要介绍对apk操作有哪些应用,学会了能干些什么。 这些内容实际上构成了一个很大的课题,用简短的文字无法描述清楚。我准备用三个部分来介绍如下内容: 第一部分:apk应用介绍,解包和打包,常用软件工具 第二部分:三星闭源系统apk文件的处理,汉化和签名 第三部分:介绍apk文件打包解包的各种应用 第一部分是基础知识,第二部分进入实战修改apk应用程序,最后在第三部分来介绍APK 应用程序的修改和编辑的各种各样实际应用。 ---------------------------------------------------------------------------------- 第一部分:apk应用介绍,解包和打包,常用软件 相信每为机友对APK文件都不陌生。你可能每天都与APK文件打交道,无论是安装和卸载有用的应用工具、插件、好玩的游戏等等。。。尤其是最近关于2.3.4 XXJVP ROM的汉化,更成为论坛里的热门话题。你们可曾知道ROM是怎样汉化的吗?说来容易做来难。这里要涉及很广泛的知识、手段,以及要花大量的时间。 1. APK文件简介 APK是Android Package的缩写,即Android application package文件或Android安装包。每个要安装到Android平台的应用都要被编译打包为一个单独的文件,扩展名为 .apk。APK 文件是用专业软件eclipse编译生成的文件包,其中包含了应用的二进制代码、资源、配置文件等。通过将APK文件直接传到Android手机中执行即可安装。APK文件其实就是zip格式,但其扩展名被改为apk,在Windows下用解压软件WinRAR/WinZIP/7-Zip可以直接打开。解压后,你会看到有几个文件和文件夹。一个典型的APK文件通常有下列内容组成:AndroidManifest.xml 程序全局配置文件 classes.dex Dalvik字节码 resources.arsc 编译后的二进制资源文件 META-INF\ 该目录下存放的是签名信息 res\ 该目录存放资源文件 assets\ 该目录可以存放一些配置文件 下面对这些文件和目录做些基本的注释和介绍: ? AndroidManifest.xml 该文件是每个apk应用程序都必须包含的文件,它描述了应用程序的名字、版本、权限、引用的库文件等等信息。 ? classes.dex文件

framework-res.apk文件详解

首先需要反编译framework-res(在system/framework目录下) 这里提供一个很方便的反编译工具 assets这个目录就不多说了- -,不是音频就是图片 然后是res目录,这个要好好说一说: anim文件夹(存放ROM动画效果控制文件)——***.xml color(一目了然,这个文件夹存放的是ROM各位置的颜色控制代码)——***.xml drawable / drawable-***(ROM 的基本资源库,存放各种资源来供控制文件调用)——***.xml / **.png layout / layout-***(ROM 层面布局控件,简单理解就是控制各个部位的所在位置,如各种图标)——***.xml raw / raw-***(一般情况这些目录不需要动)——***.png / ***.ogg /***.html values / values-***(各种语言包控件)——***.xml xml / xml-**(全局控制文件,一般情况这些目录不需要动)——***.xml AndroidManifest.xml 和 apktool.yml AndroidManifest.xml 是每一个应用都需要的文件; 位于应用的根目录下,描述了程序包的一个全局变量; 包括暴露的应用组件(activities, services 等)和为每个组件的实现类; 什么样的数据可以操作,以及在什么地方运行; ▲ 一般情况下不需要动该文件 AndroidManifest.xml 的结构大纲: 文件根节点,描述了程序包的所有内容; 请求一个安全授权,必须被授予该权限,程序包才能正确的操作; 声明一个安全授权,用来限制哪些应用可以访问程序包内的组件和特有机制; 描述程序包内应用级别组件的根节点,该节点能够描述应用程序的全局和默认属性; 应用于用户交互的最主要机制,当一个应用运行的时候,用户看到的第一个屏幕就是 activity; 一个 IntentReceiver 可以让应用接收到一次数据变化和一次行为发

反编译APK方法

一.反编译Apk得到Java源代码 转载自: https://www.360docs.net/doc/d612248860.html,/%CB%BF%D4%B5%CC%EC%CF%C2/blo g/item/2284e2debafc541e495403ec.html 工具下载:需用到dex2ja r和JD-GUI这2个工具 dex2jar下载地址: https://www.360docs.net/doc/d612248860.html,/files/dex2jar-0.0.7-SNAPSHOT. zip JD-GUI下载地址: windows版JD-GUI: https://www.360docs.net/doc/d612248860.html,/files/jdgui.zip Linux版JD-GUI: https://www.360docs.net/doc/d612248860.html,/files/jd-gui-0.3.2.linux.i686.tar. gz 步骤: 1.首先找到Android软件安装包中的classes.dex 把.apk文件改名为.zip,然后解压缩,得到其中的classes.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件

2.把classes.dex拷贝到dex2jar.bat所在目录。 在命令行模式下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex ,生成 classes.dex.dex2jar.jar 3.运行JD-GUI工具(它是绿色无须安装的) 打开上面的jar文件,即可看到源代码 --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- 二.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件。 转载自: https://www.360docs.net/doc/d612248860.html,/s/blog_5752764e0100kv34.html 工具下载: 在https://www.360docs.net/doc/d612248860.html,/p/android-apktool/下载获得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip 两个包都要下。 步骤:

如何修改APK文件名和图标

如何反编译apk文件?修改apk文件名和图标教程 作者:绿茶来源:木子软件时间:2013-09-22 11:21 点击:次 有时候在安装apk文件的时候是不是觉得文件名字不理想或者程序图标太山寨?不用担心,今天小编就教大家如何利用apktools反编译工具来修改apk文件的 名称和图标。让自己的手机更加美,图标和程序名字更加整齐! 一、准备工作 1、下载安装java jdk 2、配置java环境 3、下载apktools反编译工具包 二、具体操作 1、将下载来的apktools工具包解压至c:\目录下,然后将需要反编译(修改)的apk文件放入解压文件夹内。今天就用一键锁屏来做试验吧。 2、打开一键apktools.exe工具,因为不是系统文件所以就直接反编译,不需 要安装环境!选择2,然后选择文件名。这里我们是lockscreen.apk所以我们 选2!

3、等待解压完成,我们在lockscreen文件夹内的res目录里去修改程序名称和程序图标。程序名称的文件路径为 lockscreen\res\values-zh- rCN\strings.xml我们使用记事本打开找到app_name 在两个>< 修改自己需要显示的程序名称,我们就把一键锁屏改为锁屏,修改好以后保存即可~

4、然后在lockscreen\res\drawable-hdpi文件夹内替换图标。先找到现在的程图标,因为一键锁屏很简单,所以只有一个图标。我们记下图标的名字lock.png 然后删除它,将我们准备好的图标放入目录下,改名为刚才的名字lock.png。

5、然后返回到apktools解压文件夹,编译后的文件在回编apk生成目录下,我们将其签名,然后安装即可。 是不是很简单啊,小伙伴们快去试一试吧!

相关文档
最新文档