Android-程序反编译

合集下载

Android反编译查看源代码

Android反编译查看源代码

Android是个神奇的货,近两年比较火热,学习他的人也比较多,但是对于很多初学者来说比较头疼,(当然本人也很菜鸟),今天在学习一个安卓项目时,苦于找不到源代码,无奈只好下载网上现成的.apk文件,顿时好奇能不能反编译看到源代码呢?答案是肯定的!让我们行动起来!
首先,我们将文件的后缀名改为.zip。

这时候我们将可以解压这个文件,如图:
此处我们已经看到一个压缩文件了,打开它。

注意我们的重点是.dex 文件
这个classes.dex是个好东西呀!
然后,然后……
我们需要下两个软件:
dex2jar下载地址:/p/dex2jar/
JD-GUI下载地址:http://java.decompiler.free.fr/?q=jdgui
把我们刚找到的classes.dex拷贝到dex2jar的目录下吧(与dex2jar.bat在同一个目录下),然后运行dex2jar.bat classes.dex,将会生成一个文件classes_dex2jar.jar。

快OK 啦~~~~
运行jd-gui.exe 直接将classes_dex2jar.jar 拖进去吧,瞧!我们要的出来了!。

菜鸟夜谈android反编译

菜鸟夜谈android反编译

菜鸟夜谈android反编译⼯具:反编译命令提取资源(smail汇编代码):apktool d file.apk pathdex2jar反编译:dex2jar file.apk (or classes.dex)⽤jd-gui就可以打开jar看了⽤jd-gui在windows下没问题,在linux64下要装ia32的库。

⼀般代码都被混淆过。

都是abcdefg。

下⾯讲讲本⼈的⼀些⼩技巧。

本⼈最近反编译⼀个aide,菜鸟抄抄别⼈的实现。

⼀般都是从布局⼊⼿,找出相应关键的view类:如<com.aide.ui.AIDEEditorPager 。

可以在代码⽂件⾥找到AIDEEditorPager这个类,下⾯贴点代码:package com.aide.ui;import android.content.Context;import android.graphics.Rect;import android.os.Build.VERSION;import android.support.v4.view.ViewPager;import android.support.v4.view.aa;import android.util.AttributeSet;import youtInflater;import android.view.MotionEvent;import android.view.View;import mon.c;import com.aide.engine.SyntaxError;import com.aide.ui.util.k;import ng.reflect.Field;import java.util.ArrayList;import java.util.Iterator;import java.util.List;import rg;import rh;import ri;public class AIDEEditorPagerextends ViewPagerimplements ri{private boolean DW;private f FH;private boolean Hw;private List j6 = new ArrayList();private l v5;public AIDEEditorPager(Context paramContext){super(paramContext);sG();}public AIDEEditorPager(Context paramContext, AttributeSet paramAttributeSet){super(paramContext, paramAttributeSet);sG();}private void DW(boolean paramBoolean){int i = 4;View localView1 = getRootView();int j;View localView3;if (localView1 != null){View localView2 = localView1.findViewById(2131427448);if (localView2 != null){if (!paramBoolean) {break label62;}j = 0;localView2.setVisibility(j);}localView3 = localView1.findViewById(2131427446);if (localView3 != null) {if (!paramBoolean) {break label68;}}}for (;;){localView3.setVisibility(i);return;label62:j = i;break;label68:i = 0;}}private int Hw(String paramString){for (int i = 0;; i++){if (i >= this.j6.size()) {i = -1;}while (v5(i).d_().equals(paramString)) {return i;}}}private void Sf(){postDelayed(new Runnable(){public void run(){AIDEEditorPager.DW(AIDEEditorPager.this).v5();}}, 50L);}这么乱的代码,想找到⾃⼰想要的代码真是不容易。

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:\***文件夹(你编译出来文件夹)即可。

Android 反编译dex2&jd-gui&apktool教程

Android 反编译dex2&jd-gui&apktool教程

一.APKTool的安装1.其实这个谈不上安装,不过如果你愿意的话可以把下载到的APKTOOL中的三个文件(aapt.exe、apktool.bat、apktool.jar)解压缩到任一目录下2.在DOS命令下切换到APKTool解压缩目录。

3.运行下面命令:1.decode该命令用于进行反编译apk文件,一般用法为Apktool d <file.apk><dir><file.apk>代表了要反编译的apk文件的路径,最好写绝对路径,比如C:\MusicPlayer.apk<dir>代表了反编译后的文件的存储位置,比如C:\MusicPlayer??如果你给定的<dir>已经存在,那么输入完该命令后会提示你,并且无法执行,需要你重新修改命令加入-f指令apktool d –f<file.apk><dir>这样就会强行覆盖已经存在的文件2.build该命令用于编译修改好的文件,一般用法为Apktool b <dir>这里的<dir>就是刚才你反编译时输入的<dir>(如C:\MusicPlayer),输入这行命令后,如果一切正常,你会发现C:\MusicPlayer内多了2个文件夹build和dist,其中分别存储着编译过程中逐个编译的文件以及最终打包的apk文件。

3.install-framework该命令用于为APKTool安装特定的framework-res.apk文件,以方便进行反编译一些与ROM相互依赖的APK文件。

二、dex2jar&jd-gui的使用1.首先将apk文件后缀改为zip并解压,得到其中的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.15文件夹。

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反编译和二次打包教程

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 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在此郑重声明:分享此文,不是为了破解别人的软件,完全是一种学习态度,代码要自己手敲出来才会有感情的。

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, 最终得到这样的结果。

Android程序反编译工具JEB

Android程序反编译工具JEB

Android程序反编译⼯具JEB
⼀、下载并打开
JEB是⼀个付费的逆向⼯具,专业版售价⾼达1800美元,此分享仅供学习使⽤,切勿⽤于商业盈利。

下载并解压后,找到jeb_wincon.bat,双击这个批处理程序。

会依次出现⼀个命令⾏窗⼝和JEB程序窗⼝
不⽤在意那个“检查更新出错”,不影响正常使⽤。

⼆、简要介绍
JEB是⼀个功能强⼤的为安全专业⼈⼠设计的Android应⽤程序的反编译⼯具。

⽤于逆向⼯程或审计APK⽂件,可以提⾼效率,节约⼯程师的分析时间。

①可将Dalvik字节码反编译为Java源码,⽆须DEX-JAR转换⼯具
②JEB强⼤的⽤户界⾯使你可以检查交叉引⽤,重命名的⽅法、字段、类、代码和数据之间导航,以及做笔记和添加注释等
③可以检查解压缩的资源和资产、证书、字符串和常量等。

可以保存对JEB数据库⽂件的分析,通过JEB的修订历史记录机制跟踪进展。

④JEB⽀持Windows、Linux和macOS
⑤使⽤Java或Python语⾔,⽤户可以编写⾃⼰的脚本和插件来⾃动执⾏逆向⼯程流程。

⾼级⽤户可以编写完整的分析模块。

三、参考书籍
《Android⾼效进阶:从数据到AI》第9章静态分析Android引⽤。

Android应用的反编译

Android应用的反编译

A dod应用 的反编译 n ri
徐 尤华 , 熊传玉
( 广东松 山职 业技术学院 , 东 韶关 5 22 ) 广 1 16 摘 要: 随着计算机软件 的广泛应 用, 反编译 n ri 应
的方法。 通过对 A dod应用的反编译 , n ri 可以推导出他人的思路 、 原理 、 结构 、 算法、 处理过程、 运行 方法等设计要素 , 为 自 作
让更多的人加入到应用开发队伍 中来 ,并且能够以更
该 应用运行界 面如下图 1 所示 , 点击 “ 开始 朗读” 按钮后开始朗读输入的内容。
快的速度成长 , 从而提供更多的优秀的应用产品 , 这无 疑能够很好的推动 A do 应用产业的发展。但是各 n rd i
个厂商和开发者出于各种原因,都不会公开 自己应用 的源代码 ,通过对应用 的反编译可以达到学习其设计
(un d n o ghnP lt hi ol e S aga 1 16Clm) G ag o gS n sa oy cncC lg , houn5 22 , a e e i
Ab t a t W i e tn i e u e f c mp t r s f r , e o f h s e o a i p r n r sa c r a n t e o t r sr c : t x e sv s o o u e o t e d c mp e a h wa l b c me n m o t t ee r h a e i h s f a wae r v r n i e r g ti p p r p ee t a wa o d c mp e a d o d a p c  ̄ n .Th o g d c mp e e es e g n e i , h s a e r sn s y t e o f n r i p f a o s e n l i ruh e o f ,we C l d r e t e i al e v h i ie s r c ls tu t r ,a o i ms r c s s p rt g me h d n te ein ee n s o t e , a s h s d a,p n i e ,s cu e l r h ,p 0 es 'o e ai t o s a d o h r d s lme t f o h r we c u e t e e a i p r g t e n g s n s o r o ee e c e e eo i g s f r ,o ie t o o r s f r e p o u t. u wn r fr n e wh n d v lp n ot e r d rcl t u ot wa y wa r d cs

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安装最后工作目录是这个样子。

androidmanifest回编译

androidmanifest回编译

androidmanifest回编译
AndroidManifest.xml文件是Android应用程序的一个重要组成部分,它包含了应用程序的基本信息和组件声明。

如果你想回编译AndroidManifest.xml文件,你需要按照以下步骤进行操作:
1. 确保你有原始的AndroidManifest.xml文件。

如果原始文件已经丢失或被修改,你可能无法完全恢复到原始状态。

2. 将AndroidManifest.xml文件放置在你的Android项目的根目录下。

3. 打开命令行工具(如终端或命令提示符),并导航到你的项目目录。

4. 使用Android Studio打开你的项目。

如果你的项目已经打开,请关闭并重新打开它,以确保更改生效。

5. 在Android Studio中,选择"File"(文件)菜单,然后选择"Invalidate Caches / Restart"(清除缓存/重启)。

这将清除Android Studio的缓存并重新启动它。

6. 重新启动后,Android Studio将自动检测到AndroidManifest.xml文件的更改,并重新编译应用程序。

请注意,回编译AndroidManifest.xml文件可能无法完全恢复应用程序的原始状态,特别是如果其他代码或资源文件已经发生了更改。

因此,建议在修改AndroidManifest.xml文件之前备份整个项目,以避免不必要的损失。

安卓apk反编译查看源代码

安卓apk反编译查看源代码

安卓apk反编译查看源代码
相信很多初学者很像看看大公司比如jd,qq,淘宝手机端的商城是如何开发的,对于java开发的系统来说,大家都知道,反编译是容易的事情,如果换成android的,安装文件变成apk,那么又是什么情况了
带着好奇,我googl e了一下,分享一下:
反编译apk文件,得到其源代码的方法!!
dex2jar和JD-GUI这2个工具配合学习android太靠谱了,所以放上来给大家共享,开源的好处就是好东西大家一起分享。

dex2jar下载地址:http://laichao.googl /fil es/dex2jar-0.0.7-SNAPSHOT.zip
JD-GUI下载地址:http://cod e.googl /p/dex2jar/ 请下载最新版的,旧版本有bug
1.首先找到Android软件安装包中的classes.dex
方法是把apk文件改名为.zip,然后解压缩其中的classes.dex文件,它就是java文件编译再通过dx工具打包成的,所以现在我们就用上述提到的2个工具来逆方向导出java源文件
2.把classes.dex拷贝到dex2jar.bat所在目录。

windows系统下:
在命令行模式下定位到dex2jar.bat所在目录,运行dex2jar.bat classes.dex ,生成classes.dex.dex2jar.jar linux、Ubuntu系统下:在终端下定位到dex2jar.sh所在目录,运行
sh dex2jar.sh classes.dex
则可生成classes.dex.dex2jar.jar
3.运行JD-GUI工具(它是绿色无须安装的)
打开上面的jar文件,即可看到源代码
来源:清源教育。

安卓反编译教程

安卓反编译教程

2.手把手教你配置java环境变量难度系数:1失败概率:3危险系数:0(满分为5)本帖隐藏的内容这一步比较简单,基本度娘可以帮你解决一切,但是要求细心。

新手配置的时候很可能会失败的,所以失败概率为3。

至于java环境配置的意义,我想也不用多说了。

安卓是基于java语言的,因此apk需要在java环境里头进行编译跟反编译。

所以,配置好java环境变量是所有工作的第一步。

配置步骤(win7,32位为例):第一步,下载jdk1.7 ,我网盘里头提供下载。

第二步,然后安装,建议默认目录,当然也可以自己选择,安装后要记住安装的路径。

第三步,安装成功之后可以进行配置,右键我的计算机-属性-高级系统选项,如图:第四步,点开环境变量选项卡新建变量1.变量名:JAVA_HOME 值:C:\Program Files\Java\jdk1.7.0 (以你安装目录为准,确认里面有bin和lib,jre等多个文件夹)2.变量名:CLASSPATH 值:.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;(千万别漏了开头的小点)如果变量目录下没有PATH这个变量,还需要新建一个3.变量名:PATH 值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;如果已经存在PATH,就在值前面加上面的一段路径就可以了,末尾有;隔开。

用表格表示可能会比较清晰...JAVA环境变量到此配置完成,结果只有两个,成功,与失败。

下面是检验方法:打开开始菜单,输入cmd,输入javac如果出现以下中文提示,恭喜你,你成功了。

如果你失败了,从新检查环境变量的值。

很容易错的。

第一章到此完结。

第二章:从解包说起本帖隐藏的内容一、解包sbf详解大家一直用sbf刷底包,相信对sbf也不会太陌生。

其实sbf就是一个经过签名的压缩文件而已。

让我们把它拆开看看。

a.下载我提供的解包工具并解压,得到三个文件,其中MotoAndroidDepacker就是专门解包sbf的文件。

Android反编译教程

Android反编译教程

息,但实在是不好读啊~~~~二、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包不能反编译出来。

三、AXMLPrinter2.jar + baksmali.jar + smali.jar 方法这个方法就强大了,AXMLPrinter2是还原AndroidManifest.xml和main.xml的工具,直接打开这两个xml文件是乱码,而通过还原之后,可以很明白的看到里面的内容(我猜测还是使用了字节异或的方式加的密)。

baksmali.jar是反解析dex的工具,smali.jar则是再还原成dex的工具操作方式如下:1、java -jar AXMLPrinter2.jar D:\play\AndroidManifest.xml > AndroidManifest.txt2、java -jar AXMLPrinter2.jar D:\play\res\layout\main.xml > main.txt3、java -jar baksmali-1.2.5.jar -o classout/ d:\play\classes.dexbaksmali可解析(注意,是解析,不是反编译)原java包以及引用的lib包,解析出的文件认真看还是能看懂,比如以下片段:view plaincopy to clipboardprint?.class Lcom/paul/test/a;.super Landroid/view/View;# static fields.field private static final a:Landroid/graphics/Typeface;# instance fields.field private b:I.field private c:I.field private d:Z.field private e:J.field private f:I.field private l:[Ljava/lang/String;# direct methods.method static constructor <clinit>()V.registers 2sget-object v0, Landroid/graphics/Typeface;->SANS_SERIF:Landroid/graphics/Typeface;const/4 v1, 0x0invoke-static {v0, v1},Landroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;move-result-object v0sput-object v0, Lcom/wiyun/ad/a;->a:Landroid/graphics/Typeface;return-void.end method## other methods ..........## virtual methods.method public onKeyUp(ILandroid/view/KeyEvent;)Z.registers 4const/16 v0, 0x42if-eq p1, v0, :cond_8const/16 v0, 0x17if-ne p1, v0, :cond_b:cond_8invoke-direct {p0}, Lcom/paul/test/a;->d()V:cond_bconst/4 v0, 0x0invoke-virtual {p0, v0}, Lcom/paul/test/a;->setPressed(Z)Vinvoke-super {p0, p1, p2}, Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z move-result v0return v0.end method.class Lcom/paul/test/a;.super Landroid/view/View;# static fields.field private static final a:Landroid/graphics/Typeface;# instance fields.field private b:I.field private c:I.field private d:Z.field private e:J.field private f:I.field private l:[Ljava/lang/String;# direct methods.method static constructor <clinit>()V.registers 2sget-object v0, Landroid/graphics/Typeface;->SANS_SERIF:Landroid/graphics/Typeface;const/4 v1, 0x0invoke-static {v0, v1},Landroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;move-result-object v0sput-object v0, Lcom/wiyun/ad/a;->a:Landroid/graphics/Typeface;return-void.end method## other methods ..........## virtual methods.method public onKeyUp(ILandroid/view/KeyEvent;)Z.registers 4const/16 v0, 0x42if-eq p1, v0, :cond_8const/16 v0, 0x17if-ne p1, v0, :cond_b:cond_8invoke-direct {p0}, Lcom/paul/test/a;->d()V:cond_bconst/4 v0, 0x0invoke-virtual {p0, v0}, Lcom/paul/test/a;->setPressed(Z)Vinvoke-super {p0, p1, p2}, Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Zmove-result v0return v0.end method认真一看,就知道:# static fields 定义静态变量的标记# instance fields 定义实例变量的标记# direct methods 定义静态方法的标记# virtual methods 定义非静态方法的标记以onKeyUp方法为例,其中定义了处理逻辑,if-eq p1, v0, :cond_8 表示如果p1和v0相等,则执行cond_8的流程::cond_8invoke-direct {p0}, Lcom/paul/test/a;->d()V调用com.paul.test.a的d()方法不相等:if-ne p1, v0, :cond_b 则执行cond_b的流程::cond_bconst/4 v0, 0x0invoke-virtual {p0, v0}, Lcom/paul/test/a;->setPressed(Z)Vinvoke-super {p0, p1, p2}, Landroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Zmove-result v0大概意思就是调用com.paul.test.a的setPressed方法,然后再调用父类View的onKeyUp方法最后return v0该方法,能把外部引用的lib包类也解析出来,能开到包的全貌。

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变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。

美化反编译教程

美化反编译教程

美化反编译教程【一】反编译介绍高级语言源程序经过但是通常不能把可执行文件变成高级语言源代码,只能转换成汇编程序安卓的所有APK文件都需要反编译出来才能进行修改【二】2.什么是反编译什么是编译反编译是把apk文件反编译出来变成可执行文件编译是把你反编译后修改好的文件夹编译回来3.学会apktool工具反编译命令apktoolifframework-re.apk是建立framework-re框架apktoold某某某.apk是反编译你所需要的APK文件(这是某某某代表你要反编译的文件名字)apktoolb某某某是编译你修改好的文件(这里某某某代表你要编译的文件夹名字)--------------------------------------------------------------------------------------------------------------------------------------------------实例一/修改状态栏时间居中:本帖隐藏的内容反编译ytemui.apk键盘的窗口键+R输入CMD回车然后输入你反编译工具的盘目录我这里放在E盘所以输入为E:然后CD到反编译工具的目录这里我存放在E盘apktool文件夹里所以输入CDapktool开始反编译APK文件输入命令apktooldytemui.apk这时反编译开始等结束后会有个反编译出来的文件夹ytemui然后打开编译出来的文件夹,找到RES然后打开layout文件然后找到tatu_bar.某ml这个文件“某mln:android="/apk/re/android">”这一段的下面同时在这段里添加android:layout_gravity="center_horizontal"居中命令行如果有了就不用添加没有就要添加。

打开编译出来的文件夹dit里的SytemUI.apk用WINRAR方式打开原来的的SytemUI.apk也用WINRAR方式打开从编译出来的SytemUI.apk文件里替换tatu_bar.某ml这个文件到原来的的SytemUI.apk文件里压缩方式选择存储--------------------------------------------------------------------------------------------------------------------------------------------------实例二/修改状态栏透明:1.状态栏的透明,需要修改clae某.de某文件所以要反编译SytemUI.apk文件反编译出来后找到下面这个文件反编译ytemui.apk 键盘的窗口键+R输入CMD回车然后输入你反编译工具的盘目录我这里放在E盘所以输入为E:然后CD到反编译工具的目录这里我存放在E盘apktool文件夹里所以输入CDapktool开始反编译APK文件输入命令apktooldytemui.apk这时反编译开始等结束后会有个反编译出来的文件夹ytemui更多内容回复查看本帖隐藏的内容然后打开编译出来的文件夹,找到mali文件夹最后找到StatuBarService.mali进行修改new-intancev0,Landroid/view/WindowManager$LayoutParam;cont/4v1,-0某1cont/16v3,0某7d0cont/16v4,0某48cont/4v5,0某2修改为new-intancev0,Landroid/view/WindowManager$LayoutParam;cont/4v1,-0某1cont/16v3,0某7d0cont/16v4,0某48cont/4v5,-0某3打开编译出来的文件夹dit里的SytemUI.apk用WINRAR方式打开原来的的SytemUI.apk也用WINRAR方式打开从编译出来的SytemUI.apk文件里替换clae某.de某到原来的的SytemUI.apk文件里压缩方式选择存储--------------------------------------------------------------------------------------------------------------------------------------------实例三/给手机添加精确电量%1本帖隐藏的内容首先准备framework-re.apk准备精确电量的电池图标反编译framework-re.apk键盘的窗口键+R输入CMD回车然后输入你反编译工具的盘目录我这里放在E盘所以输入为E:然后CD到反编译工具的目录这里我存放在E盘apktool文件夹里所以输入CDapktool开始反编译APK文件输入命令apktooldframework-re.apk这时反编译开始等结束后会有个反编译出来的文件夹framework-re打开反编译目录找到RES找到drawable目录主要修改的是两个文件195)ROM都通用的然后替换精确电量的电池图标路径为RES到drawable-hdpi目录替换好后编译回来输入apktoolbframework-re编译完成找到反编译文件夹然后用winrar方式打开dit里的编译出来的文件framework-re.apk 同时打开原来的framework-re.apk也用WINRAR方式打开从编译出来的framework-re.apk文件里替换reource.arc到原文件framework-re.apk里压缩方式选择存储从编译出来的framework-re.apk文件里替换tat_y_battery.某ml 和tat_y_battery_charge.某ml到原文件framework-re.apk里压缩方式选择存储从编译出来的framework-re.apk文件里替换电池图标到原文件framework-re.apk--------------------------------------------------------------------------------------------------------------------------实例四/修改phone.apk铃声连续响准备材料phone.apk反编译phone.apk键盘的窗口键+R输入CMD回车然后输入你反编译工具的盘目录我这里放在E盘所以输入为E:然后CD到反编译工具的目录这里我存放在E盘apktool文件夹里所以输入CDapktool开始反编译APK文件输入命令apktooldphone.apk这时反编译开始等结束后会有个反编译出来的文件夹phone回复一下哦亲这样我才有动力发帖本帖隐藏的内容用n++打开,查找etStreamVolume(III)V然后删除这一行保存然后输入apktoolbphone编译然后用winrar方式打开dit里的编译出来的文件phone.apk同时打开原来的phone.apk也用WINRAR方式打开从编译出来的phone.apk文件里替换clae某.de某到原文件phone.apk里压缩方式选择存储--------------------------------------------------------------实例五/修改拨号键盘底部颜色准备材料Contact.apk反编译Contact.apk 键盘的窗口键+R输入CMD回车然后输入你反编译工具的盘目录我这里放在E盘所以输入为E:然后CD到反编译工具的目录这里我存放在E盘apktool文件夹里所以输入CDapktool开始反编译APK文件输入命令apktooldContact.apk这时反编译开始等结束后会有个反编译出来的文件夹Contact在编译后的文件夹里面RES目录layout-long-finger文件里看到这儿啦还不回复?本帖隐藏的内容twelve_key_dialer.某ml用N++打开键盘CTRL+F搜索claDialpadFunc在这个后面有个android:background="#ff24282e"这里分号注释的是颜色代码大家可以用PS或者图片编辑软件查这种颜色代码这里我把他改为黑色黑色的颜色代码为#ffoooooo改好后保存然后输入apktoolbContact进行编译然后用winrar方式打开dit里的编译出来的文件Contact.apk同时打开原来的Contact.apk也用WINRAR方式打开-----------------------------------------------------------------------------------------实例六/修改全局二级字体颜色本帖隐藏的内容准备材料framework-re.apk反编译framework-re.apk键盘的窗口键+R输入CMD回车然后输入你反编译工具的盘目录我这里放在E盘所以输入为E:然后CD到反编译工具的目录这里我存放在E盘apktool文件夹里所以输入CDapktool开始反编译APK文件输入命令apktooldContact.apk这时反编译开始等结束后会有个反编译出来的文件夹framework-re在编译后的文件夹里面RES目录color文件里lititem_ummary_te某t.某ml用N++打开最后第八行为未启用的二级字体颜色最后一行9行为二级字体颜色修改下面的android:color="#ff038c8c"/>,#ff038c8c为颜色代码修改你想要的颜色就好了改好后保存然后输入apktoolbframework-re进行编译然后用winrar方式打开dit里的编译出来的文件framework-re.apk 同时打开原来的framework-re.apk也用WINRAR方式打开----------------------------------------------------------------------------------------实例7/修改下拉菜单运营商字体颜色正在运行字体颜色通知字体颜色无通知字体颜色本帖隐藏的内容准备材料ytemui.apk反编译ytemui.apk键盘的窗口键+R输入CMD回车然后输入你反编译工具的盘目录我这里放在E盘所以输入为E:然后CD到反编译工具的目录这里我存放在E盘apktool文件夹里所以输入CDapktool开始反编译APK文件输入命令apktooldytemui.apk这时反编译开始等结束后会有个反编译出来的文件夹ytemui.apk在编译后的文件夹里面RES目录layout文件里tatu_bar_e某panded.某ml用N++打开下拉运营商的字体颜色:android:te某tAppearance="android:te某tAppearanceLarge"在这一段添加或者修改字体颜色代码android:te某tColor="#ff000000"这里我添加为黑色的大家可以自己定义别的颜色下拉里无通知字体颜色:查找<Te某tView在这段里添加字体颜色代码android:te某tColor="#ff000000"这里我添加为黑色的大家可以自己定义别的颜色下拉里正在进行的字体颜色:查找<Te 某tView在这段里面添加字体颜色代码android:te某tColor="#ff000000"这里我添加为黑色的大家可以自己定义别的颜色下拉里通知的字体颜色:查找<Te某tView在这段里面添加字体颜色代码android:te某tColor="#ff000000"这里我添加为黑色的大家可以自己定义别的颜色然后用winrar方式打开dit里的编译出来的文件ytemui.apk同时打开原来的ytemui.apk也用WINRAR方式打开-----------------------------------------------------------------------------------------------------------------------实例8/进度条颜色修改及大小尺寸修改本帖隐藏的内容准备材料framework-re.apk反编译framework-re.apk键盘的窗口键+R输入CMD回车然后输入你反编译工具的盘目录我这里放在E盘所以输入为E:然后CD到反编译工具的目录这里我存放在E盘apktool文件夹里所以输入CDapktool开始反编译APK文件输入命令apktooldframework-re.apk这时反编译开始等结束后会有个反编译出来的文件夹framework-re在编译后的文件夹里面RES目录drawable文件里progre_horizontal.某ml用N++打开android:tartColor="#ffdddddd"android:endColor="#ffdddddd"这里背景我给改成了灰色大家自己可以定义想要的颜色android:endColor="#ff000000"这里背景我给改成了黑色大家自己可以定义想要的颜色修改好了保存然后修改进度条尺寸大小打开RES里的value文件找到tyle.某ml用N++打开拖动条尺寸修改修改下面的<itemname="ma某Height">20.0dip</item>和<itemname="minHeight">20.0dip</item>这里的值越小进度条越细最后改好数值后保存然后编译输入apktoolbframework-re然后用winrar方式打开dit里的编译出来的文件framework-re.apk 同时打开原来的framework-re.apk也用WINRAR方式打开从编译出来的framework-re.apk文件里替换reource.arc到原文件framework-re.apk里压缩方式选择存储。

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

同样为了比对我们看一下ApkInstaller.java的源代码如下:
view plaincopy to clipboardprint?packagecom.tutor.apkinstaller;importandroid.app.Activity;importandroid.os.Bundle;importandroid.webkit.WebSettings;importandroid.webkit.WebView;publicclassApkInstallerextendsActivity{privateWebViewapkWeb;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(yout.main);apkWeb=(WebView)findViewById(R.id.apk_web);WebSettingswebSettings=apkWeb.getSettings();webSettings.setJavaScriptEnabled(true);StringapkUrl="/apk/demos/main/index.html#home";apkWeb.loadUrl(apkUrl);}}package com.tutor.apkinstaller;import android.app.Activity;import android.os.Bundle;import android.webkit.WebSettings;import android.webkit.WebView;public class ApkInstaller extends Activity { private WebView apkWeb; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(yout.main); apkWeb = (WebView)findViewById(R.id.apk_web); WebSettings webSettings = apkWeb.getSettings(); webSettings.setJavaScriptEnabled(true); String apkUrl = "/apk/demos/main/index.html#home"; apkWeb.loadUrl(apkUrl); }}
Android 程序反编译Android 程序反编译
一、前言:
大家好,今天给大家分享一下Android中的拿来主义,我们时常会碰到一个自己觉得很漂亮很帅气的应用(apk),所以我们会尝试用WinRAR等之类工具查看,而一般的应用程序打包后的目录通常是这样的如下图:
当然res里的图片是可以拿来就用的(笔者的好多应用的图片都是从别人的apk里扣出来的),而诸如layout里的布局及权限文件(AndroidManifest.xml)已经是一堆乱码了,完全看不懂,想看看别人是怎么布局的都不容易。还有源代码都被编译成了classes.dex,完全看不出什么线索。基于以上的困惑,笔者给大家分享一下Android中的拿来主义。
为了便于大家更容易程序比对,作者写了一个简单的应用(叫APKInstaller)目录结构如下图所示:
四、开始拿来主义
1.用AXMLPrinter2.jar查看apk中的布局xml文件:
将ApkInstaller应用生成的ApkInstaller.apk(为了方便起见放到tools目录里)用WinRAR等工具打开,将res/layout/main.xml解压出来(也还是放在tools目录里哦)
view plaincopy to clipboardprint?.classpublicLcom/tutor/apkinstaller/ApkInstaller;.superLandroid/app/Activity;.source"ApkInstaller.java"#instancefields.fieldprivateapkWeb:Landroid/webkit/WebView;#directmethods.methodpublicconstructor<init>()V.registers1.prologue.line8invoke-direct{p0},Landroid/app/Activity;-><init>()Vreturn-void.endmethod#virtualmethods.methodpubliconCreate(Landroid/os/Bundle;)V.registers5.parameter"savedInstanceState".prologue.line13invoke-super{p0,p1},Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V.line14const/high16v2,0x7f03invoke-virtual{p0,v2},Lcom/tutor/apkinstaller/ApkInstaller;->setContentView(I)V.line15const/high16v2,0x7f05invoke-virtual{p0,v2},Lcom/tutor/apkinstaller/ApkInstaller;->findViewById(I)Landroid/view/View;move-result-objectv2check-castv2,Landroid/webkit/WebView;iput-objectv2,p0,Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;.line16iget-objectv2,p0,Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;invoke-virtual{v2},Landroid/webkit/WebView;->getSettings()Landroid/webkit/WebSettings;move-result-objectv1.line17.localv1,webSettings:Landroid/webkit/WebSettings;const/4v2,0x1invoke-virtual{v1,v2},Landroid/webkit/WebSettings;->setJavaScriptEnabled(Z)V.line19const-stringv0,"/apk/demos/main/index.html#home".line20.localv0,apkUrl:Ljava/lang/String;iget-objectv2,p0,Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView;invoke-virtual{v2,v0},Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V.line21return-void.endmethod.class public Lcom/tutor/apkinstaller/ApkInstaller;.super Landroid/app/Activity;.source "ApkInstaller.java"# instance fields.field private apkWeb:Landroid/webkit/WebView;# direct methods.method public constructor <init>()V .registers 1 .prologue .line 8 invoke-direct {p0}, Landroid/app/Activity;-><init>()V return-void.end method# virtual methods.method public onCreate(Landroid/os/Bundle;)V .registers 5 .parameter "savedInstanceState" .prologue .line 13 invoke-super {p0, p1}, Landroid/app/Activity;->onCreate(Landroid/os/Bundle;)V .line 14 const/high16 v2, 0x7f03 invoke-virtual {p0, v2}, Lcom/tutor/apkinstaller/ApkInstaller;->setContentView(I)V .line 15 const/high16 v2, 0x7f05 invoke-virtual {p0, v2}, Lcom/tutor/apkinstaller/ApkInstaller;->findViewById(I)Landroid/view/View; move-result-object v2 check-cast v2, Landroid/webkit/WebView; iput-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView; .line 16 iget-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView; invoke-virtual {v2}, Landroid/webkit/WebView;->getSettings()Landroid/webkit/WebSettings; move-result-object v1 .line 17 .local v1, webSettings:Landroid/webkit/WebSettings; const/4 v2, 0x1 invoke-virtual {v1, v2}, Landroid/webkit/WebSettings;->setJavaScriptEnabled(Z)V .line 19 const-string v0, "/apk/demos/main/index.html#home" .line 20 .local v0, apkUrl:Ljava/lang/String; iget-object v2, p0, Lcom/tutor/apkinstaller/ApkInstaller;->apkWeb:Landroid/webkit/WebView; invoke-virtual {v2, v0}, Landroid/webkit/WebView;->loadUrl(Ljava/lang/String;)V .line 21 return-void.end method
相关文档
最新文档