安卓apk反编译

合集下载

Android逆向助手使用说明

Android逆向助手使用说明

1、“源文件”处支持文件或文件夹拖放;
2、必须安装【.NET Framework2.0简体中文版】框架;
3、部份功能依赖java运行环境,因此必须安装java。
12、替换dex;
13、修复dex;
14、加密xml转txt;
15、字符串unicode编解码。
更新日志
v2.1主要修改:
1、部份功能新增错误回显;
2、修复java环境判断错误的bug;Android逆向助手是一款针对安卓平台的强大逆向辅助软件,功能涵盖apk反编译打包签名;dex/jar互转替换提取修复;so反编译;xml、txt加密;字符串编码等。支持直接将文件拖放到源和目标文件,不用每次都点浏览选择。软件暂时支持WinXP、Win7、Win2003系统。
功能介绍
1、反编译apk;
2、重新打包成apk;
3、对apk进行签名;
4、反编译dex;
5、重新打包成dex;
6、dex转jar;
7、dex转ddx;
8、dex导出成txt;
9、反编译so;
10、jar转dex;
11、提取dex;

怎样使Android APP不被破解和反编译

怎样使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反编译得到Java源代码和资源文件

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:/files/dex2jar-0.0.7-SNAPSHOT.zip JD-GUI:/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.jar3.运行JD-GUI,打开上面生成的jar包,即可看到源代码了。

二.反编译apk生成程序的源代码和图片、XML配置、语言资源等文件如果是只是汉化软件,这将特别有用。

首先还是下载工具,这次用到的是apktool,下载地址:/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盘的根目录里;3.将反编译完的文件重新打包成apk,很简单,输入apktool b c:\***文件夹(你编译出来文件夹)即可。

apk 破解之dexdump反编译Android程序

apk 破解之dexdump反编译Android程序

apk破解之dexdump反编译Android程序-OMS操作系统平台专区-(转载)2010-07-0717:28反编译Android程序目前没有什么好的方法,但是在Android Emulator中可以找到一个名为dexdump的程序,文件中的dex执行情况,ophone一些底层的xx。

相关内容都放到了dex文件中,为什么要反编译apk文件呢?就目前来看Android开放度还很低,很多东西只对于软件开发人员来说,保护代码安全也是比较重要的因素之一,不过目前来说Google Android平台选择了Ja容易破解和被修改,首先APK文件其实就是一个MIME为ZIP的压缩包,我们修改ZIP后缀名方式可以看到内部的Jar压缩格式一样,不过比较去别的是Android上的二进制代码被编译成为Dex的字节码,所有的Java文件托管代码既然虚拟机可以识别,那么我们就可以很轻松的反编译。

所有的类调用、涉及到的方法都在里面体现到时调试的方法来查看,当然这需要借助一些我们自己编写的跟踪程序。

模拟器自带了一个dexdump,有兴趣的关APK文件的汉化,我们将在下一次做详细的分析,因为这里主要是修改的不是dex而是资源文件,使用类似齐的方式逐个替换即可,最终再签名下即可使用,这样的行为可以算作是非法修改,不过目前这样的方法在国内AndroidMarket上设置了权限保护app-private文件夹的安全,但是最终我们使用修改定值的系统仍然可以获取=================================================觉着这2个工具配合学习android太靠谱了,所以放上来给大家共享,开源的好处就是好东西大家一起分享;1.首先找到Android软件安装包中的class.dex源文件;2.把class.dex拷贝到dex2jar.bat所在目录。

运行dex2jar.bat classes.dex,生成classes.dex.dex2jar.jar3.运行JD-GUI工具(它是绿色无须安装的)打开上面的jar文件,即可看到源代码俺也是今天才试验了下效果,那是相当的凑效,所以兄弟姐妹们觉着好就给句鼓励的话把apk文件改名为.zip,然后解压缩其中的class.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上=================================================关于apk文件反编译的方法(dex2jar和JD-GUI)1、下载dex2jar最新版本0.0.7,下载地址http:2、下载class反编译工具,我用的是jad,大家可以根据自己情况选择。

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

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

Android APK反编译得到Java源代码和资源文件一、反编译apk生成程序的源代码和图片、XML配置、语言资源等文件工具下载:地址:/p/android-apktool/downloads/list如下图,途中红圈的两个都要下载。

将上面2个文件解压到同一个文件夹下面,将有3个文件被解压出来,如下图所示打开cmd命令行窗口定位到刚才解压的文件夹下,即apktool.bat所在的文件夹,如下图所示1. 将APK反编译将待反编译的apk文件放到c盘根目录下,特别注意,一定要放到根目录下。

输入反编译命令apktool d c:\xxxxx.apk c:\***文件夹命令行解释:apktool d [要反编译的apk文件] [输出文件夹]如:注意:demo文件夹不能是已存在的文件夹,否则会报错2. 将反编译完的文件重新打包成APK很简单,输入apktool b c:\***文件夹(你编译出来文件夹)即可。

二、反编译apk得到Java源代码工具下载:dex2jar:/p/dex2jar/downloads/listJD-GUI:/p/innlab/downloads/detail?name=jd-gui-0.3.3.windows.zi p&can=2&q=如下图的两个文件:具体步骤:1. 解压上面两个压缩文件。

2. 从apk文件中解压出classes.dex,将它复制到dex2jar.bat所在的文件夹下3. 命令行下定位到dex2jar.bat所在的目录,然后运行dex2jar.bat classes.dex如图:注:classes.dex不一定要复制到这个文件夹下,在其前面加上路径也是一样的,这里只是为了输命令方便。

如上图所示,看到Done表示成功,将得到下图中红圈内所示的jar文件4. 然后双击jd-gui.exe,打开刚才生成的jar文件,即可看到下图如此,便可看到代码了。

附上上文中所有用到的工具:apk2android.rar在此郑重声明:分享此文,不是为了破解别人的软件,完全是一种学习态度,代码要自己手敲出来才会有感情的。

apktool反编译详细使用教程

apktool反编译详细使用教程

apktool反编译详细使⽤教程安装反编⼯具地址apktool⼯具包下载地址apktool.rar1.⾸先安装需要JAVA环境,先下载JDK/JRE,已经有JAVA环境的可跳过此步java JDK:java JRE:还得设置JAVA环境变量CLASSPATH .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jarJAVA_HOME C:\Program Files\Java\jdk1.6.0_10 解释JAVA_HOME指明JDK安装路径,就是刚才安装时所选择的路径Path %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin环境变量配置好了,我们就可以反编译了,(如果有不明⽩的有两种⽅法,1,请教我,2在论坛搜搜怎么设置JAVA环境变量)反编译的使⽤反编译⼯具,⽹上有很多,有APKTOOL,Doapk ,apkmanage..........,你们可以随便下载⼀个,地址我就不提供了,你们⾃⼰搜索⼀下,上百度,上论坛上搜都有的,但apkTOOL⼯具必须包含⼀下⼏个下载完成反编译⼯具后,验证是否安装成功,点击开始菜单,运⾏,输⼊CMD回车按⼀下回车出现,在输⼊APKTOOl,输⼊apktool,要看腻把apkTOOL安装在哪个盘,举例我的,我是安装在D盘APkTOOL⽂件下,先在cmd下输⼊D:回车,在输⼊CD apktool,转⼊apktool⽂件夹下,输⼊apktool 出现如下反应,,说明你安装成功了,可以进⾏APK反编译了,下⾯我已反编译SystemUI.apk为例。

⾸先的知道⼀下⼏条指令的意思1,apktool d SysteUI.apk 12意思是将SystemUI.apk解包到12⽂件下,12⽂件夹不⽤创建,会⾃动⽣成2,apktool b 12打包12⽂件夹(将会⾃动把12⽂件夹⾥的修改过得APK解包后修改完后⾃动打包,⽣成resources.arsc,⽂件,这就是我们反编译的主要⽬的,当然还有其他⽬的,后⾯将会说明怎么apktool需要反编译的⽬的,⽣成的⽂件。

Android逆向工具篇—反编译工具的选择与使用

Android逆向工具篇—反编译工具的选择与使用

Android逆向⼯具篇—反编译⼯具的选择与使⽤作者 | 天天记⼩本⼦上的lilac 来源 | CSDN今天给⼤家介绍⼀下Android App 在Java层的逆向⼯具。

逆向⼯具的介绍在过去,当我们想要了解⼀个 app 内部运作细节时,往往先通过 ApkTool 反编译 APK,⽣成 smali 格式的反汇编代码[1],然后⼤佬和⽼⼿直接阅读 smali 代码,适当的进⾏修改、插桩、调试,经过⼀定的经验和猜想,理解程序的运⾏逻辑和加解密细节,⽐如如下的 smali 代码。

smail我们只要先这样,再那样,最后再这样,对对对,就这样,⼀个程序的加密就被破解出来了。

是不是迫不及待想来⼀次App的逆向之旅了?事实上,这种⽅式对⼩⽩实在不友好,有没有更加友好的⽅式呢?当然是有的,如果你百度或者 google 搜索逆向相关的教程和分享,很容易就会发现下⾯这三个⼯具。

在介绍⼯具之前,我们先补充⼀下APK结构的知识,我们以伊对这个社交 Apk 为例。

APK ⽂件其实是⼀种特殊的 zip 格式,我们可以直接⽤ 360 压缩或者别的压缩⼯具打开。

为了满⾜⾃⾝的功能和设计,⼏乎每⼀个都会在基础的⽂件结构上添加不少东西,但有六个部分是不变的,我们罗列和称述⼀下。

⽂件或⽬录作⽤META-INF/描述apk包信息的⽬录,主要存放了签名信息,配置信息,service注册信息res/存放apk资源⽂件的⽬录,⽐如图⽚、图标、字符串、样式、颜⾊assets/同样是存放apk资源⽂件的⽬录,但和res有差异,和我们关系不⼤resources.arsc资源索引,包含不同语⾔环境中res⽬录下所有资源的类型、名称与ID所对应的信息lib/存放so⽂件,越来越多的应⽤由C/C++编写核⼼代码,以SO⽂件的形式供上层JAVA代码调⽤,以保证安全性,这个⽬录是逆向解密关注的重点classes.dex(⼀个或数个)Android程序运⾏在Dalvik虚拟机上,⽽dex就是Dalvik虚拟机的可执⾏⽂件, 相当于Windows平台中的exe⽂件,通过反编译dex,可以获得apk源码(这个说法不很准确,但⽅便理解)AndroidManifest.xml清单⽂件,包含了App⼤量的的配置信息,⽐如包名、应⽤需要拥有的权限(打电话/录⾳/⽹络通信等等)、以及所有的界⾯和程序组件的信息,⽆法解压apk时直接打开,因为清单⽂件在apk打包过程中被编译成了⼆进制格式⽂件接下来我们介绍以下反编译⼯具,看⼀下反编译⼯具的作⽤⼯具作⽤ApkTool解析resources.arsc,AndroidManifest.xml等⽂件,反编译dex⽂件为smali源码Dex2jar将dex⽂件转化为jar⽂件Jd-gui反编译jar,查看java源码⽐如使⽤ Dex2jar+Jd-gui, 最终得到这样的结果。

反编译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包不能反编译出来。

安卓反编译揭秘(爱加密系列教程五):APK软件反编译 去广告

安卓反编译揭秘(爱加密系列教程五):APK软件反编译 去广告

APK软件反编译去广告具体步骤:1.下载apktool下载地址:https:///p/android-apktool/downloads/list2.通过apktool 反编译apk。

命令行中输入以下命令:apktool.bat d -f aaa.apk (apk路径)反编译APK文件3.开始修改XML布局文件首先,我们进入反编译后的文件夹,以我的为例进入C:\apk\com.youmi.android.sample\res\layout 目录下用记事本打开activity_ad.xml(注:不同的程序广告所在的文件不一样,可以查看一下别的文件里,一般都是在res\layout 目录下的xml文件里。

)可以看到下面一段代码<LinearLayoutandroid:id="@+id/adLayout"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:gravity="center_horizontal"android:orientation="horizontal">这段代码是用来展示广告的我们可以改成<LinearLayoutandroid:id="@+id/adLayout"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_alignParentBottom="true"android:gravity="center_horizontal"android:orientation="horizontal"android:visibility="gone">这样广告就被隐藏起来了。

Android apk反编译之android 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拆包后重新打包,二次打包必将丢失原有的签名。

apk文件的反编译

apk文件的反编译

Android入门教程(六)之------拿来主义.apk文件的反编译分类:android入门篇2011-09-09 09:40 858人阅读评论(0) 收藏举报androidlayouttoolsencodingjava工具一、前言:大家好,今天给大家分享一下Android中的拿来主义,我们时常会碰到一个自己觉得很漂亮很帅气的应用(apk),所以我们会尝试用WinRAR等之类工具查看,而一般的应用程序打包后的目录通常是这样的如下图:当然res里的图片是可以拿来就用的(笔者的好多应用的图片都是从别人的apk里扣出来的),而诸如layout里的布局及权限文件(AndroidManifest.xml)已经是一堆乱码了,完全看不懂,想看看别人是怎么布局的都不容易。

还有源代码都被编译成了classes.dex,完全看不出什么线索。

基于以上的困惑,笔者给大家分享一下Android中的拿来主义。

二、所需工具(点击各自连接进入下载页面):1.AXMLPrinter2.jar2.baksmali.jar3.smali.jar三、准备工作为了方便起见,作者把AXMLPrinter2.jar,还有baksmali.jar,还有smali.jar(下下来为了方便重命名),放在Android SDK tools文件夹中如下图所示:为了便于大家更容易程序比对,作者写了一个简单的应用(叫APKInstaller)目录结构如下图所示:四、开始拿来主义1.用AXMLPrinter2.jar查看apk中的布局xml文件:将ApkInstaller应用生成的ApkInstaller.apk(为了方便起见放到tools目录里)用WinRAR等工具打开,将res/layout/main.xml解压出来(也还是放在tools目录里哦) 打开main.xml文件,内容如下(一堆天文):这时候AXMLPrinter2.jar派上用场了,打开cmd终端,一直进入到tools目录下,输入如下命令: java -jar AXMLPrinter2.jar main.xml > main.txt. (如下图所示)打开main.txt代码如下(是不是有个123了呵呵~):view plain1.<?xml version="1.0" encoding="utf-8"?>2.<LinearLayout3. xmlns:android="/apk/res/android"4. android:orientation="1"5. android:layout_width="-1"6. android:layout_height="-1"7. >8. <WebView9. android:id="@7F050000"10. android:layout_width="-1"11. android:layout_height="-2"12. >13. </WebView>14.</LinearLayout>为了比对打开源程序中的main.xml代码如下(大家比对一下吧):view plain1.<?xml version="1.0" encoding="utf-8"?>2.<LinearLayout xmlns:android="/apk/res/android"3. android:orientation="vertical"4. android:layout_width="fill_parent"5. android:layout_height="fill_parent"6. >7.<WebView8. android:id="@+id/apk_web"9. android:layout_height="wrap_content"10. android:layout_width="fill_parent"11.12./>13.</LinearLayout>2.用baksmali.jar反编译classes.dex:将ApkInstaller.apk里的classes.dex解压到tools目录里,然后baksmali.jar就派上用场了,在cmd命令行里输入如下命令:j ava -jar baksmali.jar -o classout/ classes.dex.(如下图所示:)你将会发现在tools里多一个classout文件夹里面(我代码的包目录结构清晰可见呀),如下图所示:从上面看出除了Android本身资源的类R开头的,我的源程序里只有一个ApkInstaller.java,完全吻合,真TMD的猥琐呵呵~下面我们看一下ApkInstaller.smali内容是什么,如以下代码:view plain1..class public Lcom/tutor/apkinstaller/ApkInstaller;2..super Landroid/app/Activity;3..source "ApkInstaller.java"4.# instance fields5..field private apkWeb:Landroid/webkit/WebView;6.# direct methods7..method public constructor <init>()V8. .registers 19. .prologue10. .line 811. invoke-direct {p0}, Landroid/app/Activity;-><init>()V12.return-void13..end method14.# virtual methods15..method public onCreate(Landroid/os/Bundle;)V16. .registers 517. .parameter "savedInstanceState"18. .prologue19. .line 1320. invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V21. .line 1422.const/high16 v2, 0x7f0323. invoke-virtual {p0, v2}, Lcom/tutor/apkinstaller/ApkInstaller;->setContentView(I)V24. .line 1525.const/high16 v2, 0x7f0526. invoke-virtual {p0, v2}, Lcom/tutor/apkinstaller/ApkInstaller;->findViewById(I)Landroid/view/View;27. move-result-object v228. check-cast v2, Landroid/webkit/WebView;29. iput-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;30. .line 1631. iget-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;32. invoke-virtual {v2}, Landroid/webkit/WebView;->getSettings()Landroid/webkit/WebSettings;33. move-result-object v134. .line 1735. .local v1, webSettings:Landroid/webkit/WebSettings;36.const/4 v2, 0x137. invoke-virtual {v1, v2}, Landroid/webkit/WebSettings;->setJavaScriptEnabled(Z)V38. .line 1939.const-string v0, "/apk/demos/main/index.html#home"40. .line 2041. .local v0, apkUrl:Ljava/lang/String;42. iget-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;43. invoke-virtual {v2, v0}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V44. .line 2145.return-void46..end method同样为了比对我们看一下ApkInstaller.java的源代码如下:view plain1.package com.tutor.apkinstaller;2.import android.app.Activity;3.import android.os.Bundle;4.import android.webkit.WebSettings;5.import android.webkit.WebView;6.public class ApkInstaller extends Activity {7.8.private WebView apkWeb;9.@Override10.public void onCreate(Bundle savedInstanceState) {11.super.onCreate(savedInstanceState);12. setContentView(yout.main);13. apkWeb = (WebView)findViewById(R.id.apk_web);14. WebSettings webSettings = apkWeb.getSettings();15. webSettings.setJavaScriptEnabled(true);16.17. String apkUrl = "/apk/demos/main/index.html#home";18. apkWeb.loadUrl(apkUrl);19. }20.}我相信大家已经能看出来门道来了吧,hoho~3.用smali.jar编译classout成classes.dex:我们上一步已经将classes.dex反编译成了.smali文件,好了,我们看看smali文件看够了,在偿试把它编译成classes.dex吧,输入如下命令:java -jar smali.jar classout/ -o classes.dex.如下图所示:我们可以将新生成的classes.dex塞入ApkInstaller.apk里覆盖原来的classes.dex文件,这样我们的apk还是一样能用的哦~。

教你如何反编译APK

教你如何反编译APK

教你如何反编译APKAPK文件是Android应用程序的包装文件,包含了应用的代码、资源文件和其他相关信息。

反编译APK可以帮助开发人员分析应用的代码结构和功能实现,以及学习其他应用的设计思路和技术实现方法。

下面是一种常用的反编译APK的方法。

步骤1:安装反编译工具步骤2:准备APK文件步骤3:打开终端或命令提示符在你的计算机上打开终端或命令提示符窗口。

如果你使用的是Windows系统,可以按下Win+R组合键,输入“cmd”并按下回车键。

步骤4:进入APK文件所在的目录在终端或命令提示符中输入“cd”命令,然后加上APK文件所在的目录路径,回车进入该目录。

步骤5:执行反编译命令在终端或命令提示符中输入以下命令:apktool d 文件名.apk其中,文件名是你准备反编译的APK文件的文件名。

执行该命令后,apktool将自动解压缩APK文件,并将解压后的文件保存在当前目录。

步骤6:查看反编译结果步骤7:反编译APK的其他方法除了使用apktool之外,你还可以尝试其他的反编译APK的工具。

dex2jar可以将APK文件转换为JAR文件,然后你可以使用Java反编译器对JAR文件进行反编译。

JD-GUI是一个流行的Java反编译器,你可以将JAR文件拖放到JD-GUI的界面中,然后查看反编译后的Java代码。

步骤8:分析和学习通过反编译APK文件,你可以深入了解应用的实现细节、功能实现和资源文件。

你可以借鉴其他应用的设计思路和技术实现方法,提升自己的开发能力。

需要注意的是,在使用反编译工具时,你必须遵守相关法律法规,并尊重其他开发者的知识产权。

只有在合理范围内使用反编译才是合法的,不得用于非法用途。

总结:通过上述步骤,你可以轻松地反编译APK文件。

这个过程可以让你更好地了解应用程序的代码和实现细节,同时也可以为你的开发工作提供参考和借鉴。

但请务必遵守相应法律法规,尊重知识产权。

android apk修改方法(反编译、修改、打包)

android apk修改方法(反编译、修改、打包)

1、baksmali:classes.dex反编译为smali格式(smali:smali格式编译打包为classes.dex,但由于smali格式类似汇编,比较难阅读,所以用dex2jar进行辅助)2、dex2jar:classes.dex转为jar包3、jdgui:jar反编译并阅读操作顺序:apk用zip解开,里面的classes.dex分别用baksmali处理为smali,用dex2jar 处理成jar,然后用jdgui看代码,找好java文件中要改的位置后,在smali 里找对应的位置修改,改完了用smali再编译为classes.dex,覆盖原来apk里的同名文件,最后重新签名。

注意安装时要先删除原来手机里的版本,因为签名不同。

1、apk用zip解开,得到classes.dex2、用baksmali处理为smali(只是反编译看代码就不需要这一步,修改才用) java -jar baksmali-1.4.1.jar -x classes.dex得到out目录,里面是smali文件3、用dex2jar处理classes.dex为jar包dex2jar.bat classes.dex得到classes.dex.dex2jar.jar4、用jdgui打开classes.dex.dex2jar.jar好了,可以看代码,但还不能直接修改,需要对比着来修改smali文件改好后,用java -jar smali-1.2.6.jar -o classes.dex out得到修改后的classes.dex,用这个文件替换fishing_joy_1.apk中的同名文件但这个apk是不能用的,还没有进行重新签名先用keytool生成keystorekeytool -genkey -keystore mykeystore -alias mykeystore -validity 999 把apk中的META-INF删除,再用jarsigner 签名jarsigner -verbose -keystore mykeystore -signedjar fishing_joy_1_signed.apk fishing_joy_1.apk mykeystore先卸载原来手机中安装的这个游戏,再用fishing_joy_1_signed.apk安装最后工作目录是这个样子。

修改和反编译定制ROM合并apk odex

修改和反编译定制ROM合并apk odex

如果是修改CM的apk很简单,修改原始代码使用命令单独编译该apk 就可。

这篇文章主要讲那该死三星闭源系统是如何在有限的环境下最大化修改你的东西。

本人不是什么高手,只是接触android的时间比较长(从G1就开始用起),爱好收集andorid 历史上比较有代表性的机器,时常爱摆动手机,倒腾ROM,因为个人时间问题,一直没制作完整的作品(我比较懒XD),就连自己使用的ROM还停留在CMbeta3中文化版本。

个人关注aosp比较多点,很高兴我编译的中文版能将CM for i9000 推到大家面前,让更多的I9000用户了解到CM,当然从G1时代开始刷CM的兄弟们自然会知道CM的优秀。

CM发展至今,已经不仅仅是手机ROM,他代表了一种精神,开源和共享(国内论坛有多少?),以及无所不能——这是我欣赏和推崇的。

如果将CM放大到无限的时间和个人团体集合,android 会支持理论上一切可以运行它的设备。

一:基本准备!准备工具:Android SDKjava,下载适合您系统的版本。

您需要的是apktool 或者apk manager 4.9(貌似最新版本了)。

推荐用apk manager 4.9,下面主要介绍该工具使用方法。

以上工具Windows和Linux下都有。

三星I9000 FROYO 系统应用软件在 /system/app 同大多数Android系统一样。

但注意三星有着自定义的framework,在 /system/framework/twframework-res.apk。

如果您要修改三星的system app就需要用到他。

首先我们要提取出系统软件。

有两种方法,第一刷完机,获取root权限之后用以下命令:1.windows和linux下面的命令同样:2.adb pull /system/ <your path:>3.//将手机system目录copy到您电脑的某个路径中复制代码或者解压缩三星官方刷机包:挂载factoryfs到某路径:然后拷贝所有文件。

安卓软件APK编译反编译与汉化高级篇

安卓软件APK编译反编译与汉化高级篇

这里以汉化愤怒的小鸟为例。

已经帮大家整理了一些汉化的教程,但是那些教程只能汉化软件和一些简单的游戏,对于大部分游戏来说,以前的教程可能不适用了,有的是找不到需要汉化的字符,有些是找不到需要汉化的图片。

这里为大家整理一个游戏的汉化教程,希望对大家有所帮助,这里以汉化愤怒的小鸟为例。

winrar解压开apk文件后,怒鸟的图片都放在assets\data\images\目录下,里面的文件分为4种:1、pvr*.dat:图片管理数据。

因为大部分的素材都是很多个一起放在同一个图片文件里,这类文件的作用就是在同名的图片文件中标记出各素材的位置和大小,后面会简略描述下其结构。

*.pvr:主要的图片格式文件,基本为16位色图片,主要分R4G4B4A4和R5G6B5A0两种,后面会较为详细地介绍其结构。

*.png:标准图片格式,不再多讲。

*.zip:解压后为pvr文件,注意修改替换后要压缩回去即可,也不再多讲。

本帖隐藏的内容首先说一下pvr图片的查看问题,下载软件UltraEdit-32/file/bhqc91l5,然后用UltraEdit-32打开PVR文件其结构如图:文件头部:长度34h00h~03h:4字节,文件头长度,基本是固定的34h04h~07h:4字节,图片高度08h~0Bh:4字节,图片宽度0Ch~0Fh:4字节,固定为00h10h~13h:4字节,固定为8010h14h~17h:4字节,图片数据长度(不包含头部)18h~1Bh:4字节,固定为10h,应该是颜色位数1Ch~1Fh:4字节,固定为F000h,B位段,意为最高4位对应蓝色20h~23h:4字节,固定为0F00h,G位段,意为相应4位对应绿色24h~27h:4字节,固定为00F0h,R位段,意为相应4位对应红色28h~2Bh:4字节,固定为000Fh,A位段,意为最低4位对应Alpha通道,即透明度2Ch~2Fh:4字节,文件标识"PVR!"30h~33h:4字节,固定为01h图片数据:2字节对应1像素,颜色分配按照如上所述。

关于ApkTool回编译的一些小说明

关于ApkTool回编译的一些小说明

关于ApkTool回编译的一些小说明工具/原料∙apktool∙apkdb∙APK+Dex文件反编译及回编译工具本经验,是针对Apktool反编译APK文件后回编译时,出错的一些问题说明。

-------------------------------------------------------------------------2011-1-11更新一回编译说明1、反编译=回编译后分别是smali目录回编译为classes.dex 文件res目录回编译为resources.arsc 文件2、回编译顺序在回编译时,会先检查“源”即resources当你汉化文件,修改出错了(缺少一个符号也不行),那么回编译会自动跳过编译res文件夹,直接回编译smali 。

所以,如果没有对smali(classes.dex)汉化,那么建议大家删掉这个文件夹,这要会大大加快回编译速度。

3、出错问题1在汉化时,往往会不小心删掉一些符号,如"<" ">"符号等等。

<string name="app_name">File Manager</string><string name="app_name">文件管理器/string><string name="app_name"文件管理器</string>这些小小的错误都会导致回编时译检查出错。

所以汉化时,注意对校,然后再回编译。

建议使用一些高级的文本编辑器,支持语法高亮视图的。

4、出错问题2最近发现有些APK文件反编译后,就算不汉化直接回编译,都会出错。

有可能的原因1,反编译后XML文件语法中@符号前面多了"\" (\@ ),用文本编辑工具直接替换【\@】为【@】,应该可以解决。

建议使用最新版本的反编译工具。

APKTOOL教程

APKTOOL教程

-2)Apktool反编译命令:
首先提取rom包里的framework-res.apk。拉到apktool 文件夹里(这里可以把它重命名为f,以便接下来反编译的时候少打写字-_-)
然后把你想反编译的apk文件同样拉过来。
xp系统:开始-运行-输入cmd
一、工具介绍以及下载
-1)搭建jdk环境是必须的。 详细教程见这里。
-2)Apktool:
apktool是众多apk反编译工具里的佼佼者了,个人感觉操作比较简单。还有像apkmanager这样的这里就不做介绍了。
apktool下载点我。
-3)Notepad:
如图:
在apktool文件夹里出现了名为s的文件夹。
在s\smali\com\android\systemui\statusbar文件夹下找到StatusBarService.smali文件。用Notepad++打开。如图:
搜索 const/4 v5, 0x2
win7系统:开始-搜索程序和文件夹对话框-输入cmd
-
f: 回车
-
cd apktool 回车
-
apktool if f.apk 回车
这是安装搭建框架
-
apktool d x.apk x
d是反编译命令, x.apk是反编译的apk文件,x是反编译后文件所在文件夹。
-
小巧且有效率的代码编辑器,这里我们用来查看和修改xml 文件。
Notepad汉化版点我下载。
到此,工具的介绍就告一段落。
二、Apktool的使用方法。
-1)把下载好的apktool解压缩。放到F盘根目录(我这里拿F盘举例,放到C、E、D盘随你们大小便。都可以)。如图:

Androidapk反编译基础(apktoos)图文教程

Androidapk反编译基础(apktoos)图文教程

Androidapk反编译基础(apktoos)图⽂教程很久有写过⼀个⼴⼯图书馆主页⼀个类爬⾍的demo(因为没接⼝,只能扒取静态⽹页),实现⼀些图书馆系统的⼀些功能。

但最近发现图书馆系统在html页⾯上做了⼿脚,⼀页html 页⾯中嵌⼊了⼏千⾏的注释,并有了⾃⼰的App,应该是为了增加扒取的流量成本来防⽌别⼈去扒取⽹页,不过加注释这⼿段就不敢恭维了,内⽹访问速度还⾏,但外⽹访问的话体验很差的。

如下图:⼀堆注释,导致⼀个⽹页要2MB主页上的APP,必然是⽤了图书馆的后台接⼝和服务器交互的,从⽽想试试⽤反编译的⼿段来看看APP使⽤了什么接⼝。

(另外更简单可以通过来给Android⼿机抓包分析其接⼝,再⽤Wireshark来分析tcp包,不过你想要知道全部接⼝的话,可能需要⼀个个接⼝去调⽤,会⽐较⿇烦,采⽤反编译,可能集中在⼀个类中找到这些接⼝)。

解压缩APKTool,并把要反编译的APK放⼊⽬录中反编译:通过CMD进⼊上⾯的⽬录,执⾏命令: apktool decode ZhaoBenShu.apk outdir稍等⽚刻完成反编译,反编译后的⽂件会在outdir⽬录下。

---outdir⽬录结构res :资源⽂件,跟adnroid⼯程⽬录下的res基本⼀样,各种UI图⽚ XML布局⽂件 values xml⽂件(多了⼀个public.xml,有各个资源的id号(R.java中的id))smail:这个是重点⽂件夹,⾥⾯都是smail格式⽂件,是Dalvik虚拟机执⾏的操作码(Dalvik opcodes),这些操作吗有⾃⼰的语法,如果有学过JNI的话,这些语法还是⽐较容易看懂和理解的。

AndroidManifest.xml:Android⼯程下的AndroidManifest.xmlapktool.yml:⽤于重打包。

smail语法:(全部语法请)smail中的数据类型签名跟java中的是⼀样的,如下。

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

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

Android如何防止apk程序被反编译分类:Android 2011-08-28 23:07 10708人阅读评论(36) 收藏举报作为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 plaincopyprint?1.-optimizationpasses 52.-dontusemixedcaseclassnames3.-dontskipnonpubliclibraryclasses4.-dontpreverify5.-verbose6.-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*7.8.-keep public class * extends android.app.Activity9.-keep public class * extends android.app.Application10.-keep public class * extends android.app.Service11.-keep public class * extends android.content.BroadcastReceiver12.-keep public class * extends android.content.ContentProvider13.-keep public class * extends android.app.backup.BackupAgentHelper14.-keep public class * extends android.preference.Preference15.-keep public class com.android.vending.licensing.ILicensingService16.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(ng.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变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

反编译jar包
• jd-gui.exe
– 直接用此工具打开jar包
如何防止代码被反编译
• 由于apk是Android虚拟机加载的,它有一定的 规范,加密apk的Dalvik无法识别apk了。完全 避免是不可能的,总有人能够破解你的代码。 但是有几种方式来提高 被反编译取代码的难 度。
– 关键代码使用jni调用本地代码,用c或者c++编写, 因此相对比较难于反编译。 – 混淆java代码。混淆是不改变代码逻辑的情况下, 增加无用代码,或者重命名,使反编译后的源代码 难于看懂。网上开源的java代码混淆工具较多,一 般是用ant的方式来编译的
反编译
• • • •
程序的打包与安装过程 反编译资源文件 反编译dex文件 反编译jar包
程序的打包与安装过程
Android package(.apk)
Android project
Compliation And packaging
.dex files
Resource s.sources
Androidmanifest .xml
signin g
Device
反编译资源文件
• 工具
– apktool
• 将xml文件反编译出来,读取应用程序的资源信息
反编译dex文件
• dex2jar
– android应用程序中所有的字节码被放到 classes.dex文件中去 – 将classes.dex编译成classes_dex2jar.jar
相关文档
最新文档