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罢了

  • 相关阅读:
    Java实现各种内部排序算法
    Java实现堆排序(大根堆)
    Java对象的序列化和反序列化
    Java实现链式存储的二叉查找树(递归方法)
    337. House Robber III(包含I和II)
    318. Maximum Product of Word Lengths
    114. Flatten Binary Tree to Linked List
    106. Construct Binary Tree from Inorder and Postorder Traversal
    105. Construct Binary Tree from Preorder and Inorder Traversal
    96. Unique Binary Search Trees(I 和 II)
  • 原文地址:https://www.cnblogs.com/wangafei/p/2517597.html
Copyright © 2011-2022 走看看