zoukankan      html  css  js  c++  java
  • 反编译apk文件,得到其源代码的方法

    一.反编译Apk得到Java源代码

    dex2jar和JD-GUI这2个工具配合学习android太靠谱了,所以放上来给大家共享,开源的好处就是好东西大家一起分享。

    dex2jar下载地址:http://laichao.googlecode.com/files/dex2jar-0.0.7-SNAPSHOT.zip
    JD-GUI下载地址:
    windows版JD-GUI:http://laichao.googlecode.com/files/jdgui.zip
    Linux版JD-GUI:http://laichao.googlecode.com/files/jd-gui-0.3.2.linux.i686.tar.gz
    值得注意的是:老版本的软件并不支持最新的android应用
    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
    Ubuntu系统下:
    在终端下定位到dex2jar.sh所在目录,运行
    sh dex2jar.sh classes.dex
    则可生成classes.dex.dex2jar.jar

    3.运行JD-GUI工具(它是绿色无须安装的)

    打开上面的jar文件,即可看到源代码

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


    转载自:http://blog.sina.com.cn/s/blog_5752764e0100kv34.html
    工具下载:
    在http://code.google.com/p/android-apktool/下 载获得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。
    步骤:
    1.解压缩下载的两个文件包,apktool-install-windows-2.1_r01-1.zip解压缩后得到的包里有aapt.exe 和apktool.bat.(注意要把apktool-1.0.0.tar.bz2解压后的一个.jar 文件copy进来)
    2.打开命令窗口 (开始 > 运行,输入cmd,回车。)进入到apktool.bat的文件夹里。
    输入:
    apktool d C:\***.apk C:\***文件夹
    (命令行解释:apktool d 要反编译的文件 输出文件夹)
    特别注意:你要反编译的文件一定要放在C盘的根目录里,
    3.打开 C:\***文件夹 就可以得到我们学院的各种资源了。

    三.将反编译完的文件重新打包成apk
    很简单,只要输入:
    apktood b c:***文件夹(你编译出来文件夹)
    (更多内容看原文)

    =======================================================
    《android-apktool》软件软件可以访问它的主页http://code.google.com/p/android-apktool/下载获得,apktool-1.0.0.tar.bz2和apktool-install-windows-2.1_r01-1.zip两个包都要下。下载后解开,为了方便使用,按作者的推荐把得到的4个文件复制到C:\Windows文件夹里。

    这个工具是Java写的,需要你的电脑安装了JRE或者JDK,并在系统环境变量Path里加入java.exe所在路径。

    以上准备工作做好后,就可以用它来反编译APK了。这里我用动态壁纸的APK来做示范。

    如果用过动态壁纸,你也许会发现在设置壁纸时,界面的显示有点问题:“动态壁纸”,在手机上中文显示为“当前壁纸”。这是“动态壁纸选择器”LiveWallpapersPicker.apk的翻译错误造成的。

    (假设LiveWallpapersPicker.apk放在C盘根目录)

    开始 > 运行,输入cmd,回车。

    apktool d "C:\LiveWallpapersPicker.apk" "C:\LiveWallpapersPicker"

    复制代码
    (命令行解释:apktool d 要反编译的文件 输出文件夹)

    这样,LiveWallpapersPicker.apk就被反编译了,输出内容在C:\LiveWallpapersPicker文件夹里。

    打开C:\LiveWallpapersPicker文件夹,我们发现里面有一些XML文件和一些文件夹。绝大部分情况下,语言和图片资源都在res文件夹里,我们这个例子当然不例外。

    打开res文件夹,可以其中又是很多文件夹。(又是)绝大部分情况下,语言资源都放在values*文件夹里。比如说values放默认语言(英语居多),values-de放德语,values-fr放法语等等。一般我们关心的是values-zh-rCN(简体中文)和values-zh-rTW(繁体中文)。

    打开values-zh-rCN文件夹,其中有个strings.xml。打开看看:
    <?xml version="1.0" encoding="UTF-8"?>
    <resources>
    <string name="application_name">动态壁纸选择器</string>
    <string name="live_wallpaper_picker_title">当前壁纸</string>
    <string name="live_wallpaper_preview_title">当前壁纸预览</string>
    <string name="configure_wallpaper">设置...</string>
    <string name="wallpaper_instructions">设置壁纸</string>
    <string name="live_wallpaper_empty">无当前壁纸。</string>
    <string name="set_live_wallpaper">设置壁纸</string>
    <string name="wallpaper_title_and_author">%1$s提供者:%2$s</string>
    <string name="live_wallpaper_loading">正在载入当前壁纸…</string>
    </resources>



    很好,就是它了。把“当前壁纸”都改为“动态壁纸”,再检查和修正标点——中文内容用中文标点(强烈呼吁大家注意标点问题,目前马大哈太多了)后,保存。

    本例改这么多就够了。其它复杂的APK建议把res文件夹里的内容都检查下,至少你关心的语言文件夹里的内容都检查下。

    改完后,就可以重打包了。还是在cmd命令行里,输入:

    apktool b "C:\LiveWallpapersPicker"

    复制代码
    (命令行解释:apktool b 要打包内容所在文件夹)
    就可以了。生成的APK在C:\LiveWallpapersPicker\dist文件夹里,叫out.apk。

    这个out.apk是没有签名的,所以不能直接装到手机里。签名工具和方法见http://www.hiapk.com/bbs/thread-21261-1-1.html,这里不说了。

    签名后得到的APK,就是可以装到手机里的了。
    ==========================================================


    操练:去掉免费版软件的广告条


    [http://bbs.ophone8.net/viewthread.php?tid=18082]


    打开google code发现Apktool更新了,居然支持win了。。。。
    那本文就是一篇介绍在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盘根目录)
    4.Win+R 运行CMD,用cd命令转到apktool-install-windows所在文件夹,输入apktool看看。会列出一些帮助的话就成功了。Apktool 命令

    apktool d XXX.apk ABC 反编译XXX.apk到文件夹ABC
    apktool b ABC 从文件夹ABC重建APK,输出到ABC\dist\out.apk
    然后我们反编译一枚软件玩玩…
    AutoMemoryManager的免费版底部有一条广告,去掉它吧。
    把com.lim.android.automemman.apk放到同文件夹(我的就是E盘根目录)
    Win+R 运行CMD
    E:<回车>
    E:\>apktool d com.lim.android.automemman.apk AMM <回车>
    I: Baksmaling…
    I: Decoding resource table…
    I: Decoding resources…
    I: Copying assets and libs…
    现在文件被decode到E:\AMM了,打开E:\AMM\res\layout\main.xml看,所有都可见了吧~
    编辑第59行

    <com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”fill_parent” android:layout_height=”wrap_content” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” />

    改为

    <com.admob.android.ads.AdView android:id=”@id/ad” android:layout_width=”0.0dip” android:layout_height=”0.0dip” admobsdk:backgroundColor=”#ff000000″ admobsdk:textColor=”#ffffffff” admobsdk:keywords=”Android application” />

    然后CMD输入
    E:\>apktool b AMM
    I: Checking whether sources has changed…
    I: Smaling…
    I: Checking whether resources has changed…
    I: Building resources…
    I: Building apk file…
    用Auto-sign签名E:\AMM\dist\out.apk 安装
    这样广告就不见了

    再看,嘿嘿~很帅吧…
    这其实就是改了AndroidManifest.xml里的ADmob广告ID罢了

  • 相关阅读:
    sklearn
    Scrapy
    正则表达式re
    BeautifulSoup
    requests
    Python网络爬虫与信息提取
    Matplotlib
    Pandas
    NumPy
    制约大数据处理能力的几个问题
  • 原文地址:https://www.cnblogs.com/wangafei/p/2517597.html
Copyright © 2011-2022 走看看