前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于反编译的搜索

apk反编译获取完整源码 及 apk反编译后的处理 - 快乐&&平凡 - 博客频道 - CSDN.NET 快乐&&平凡 本博客所记录的文章,主要是从网络收集的,有一些因为经过多次转载,所以出处已经不知,若是侵权,请通知我,我及时修改。本博客主要是用来记录我对所写文章的理解,若有错误,请大家指点,相互学习! 目录视图 摘要视图 订阅 新年新气象------CSDN2014新版导航就要跟大家见面了 2014年1月微软MVP当选名单揭晓! 消灭0回答,赢下载分 “我的2013”年度征文活动火爆进行中! 专访何海涛:“不正经”程序员的进阶之路 apk反编译获取完整源码 及 apk反编译后的处理 分类: android技术 2012-08-28 13:47 7663人阅读 评论(2) 收藏 举报 android反编译工具xml文本编辑layoutapplication 一、工具准备:apktool , dex2jar , jd-gui 二、使用dex2jar &#43; jd-gui 得到apk的java源码 1.用解压工具从 apk包中取出 classes.dex 文件 用命令(dex2jar.bat classes.dex)得到一个 jar文件 2.用jd-gui反编译工具将得到.jar文件反编译成.java文件 三、使用apktool得到apk的xml文件 1.用命令(apktool d xxx.apk xxx_xml)反编译xxx.apk包 2.从 xxx_xml 文件夹得到xml文件 四、第二步 得到的程序源代码 和 第三步 得到的xml文件组合下,即可得到完整的apk源码。 五、应用: 汉化/去广告,加 values-zh-rCN, values-zh-rTW, values-de, values-fr 1.在步骤三的文件夹xxx_xml/res/ 下, 建文件夹: values-zh-rCN,values-zh-rTW 2.1复制values\strings.xml 到 values-zh-rCN 并翻译. 2.2 去广告见; 3.重建APK,用命令(apktool b xxx) ,输出到ABC/dist/out.apk 或命令( apktool b xxx out.apk) 六、重新打包 和 签名 ====================================================== 1) 汉化apk应用程序 汉化apk就是 把 反编译之后apk 下的res/values文件夹内string.xml文件的内容 汉化(注意:我们的例子里 只有一个string.xml,有时候 可能 不止 一个 *xml 文件,那么 我们 需要把 相应的 位置 都汉化)。 一个apk应用在汉化后应该能在英文和中文系统下都能使用。/values目录下的是英文语言包。为了建一个中文语言包,与/values并行创建一个子文件夹:/values-zh-rCN(必须用这个文件名!)。这里values-zh是中国地区语言包(包含港澳台及内地),values-zh-rCN是中文简体语言包(只包含内地),values-zh-rTW是中文繁体语言包(港澳台)。 把/values文件夹里的strings.xml等语言文件复制进/values-zh-rCN。在我们的例子中,只有strings.xml一个文件。 进入/values-zh-rCN,用文本编辑器打开strings.xml,然后你就翻译吧,把英文描述译成相应的中文。 高级内容:以上的汉化是修改string.xml,把英文译成相应的中文就好了,然后打包和签名。但是,在有些apk文件里,所显示的字符文字并不都在xml文件里。apk原作者把某些字符写在代码中。反编译后,存放在/smali文件夹里。一层一层地找下去,最后你会看到一大堆Dalvik码文件,都是以.smali为文件扩展名。举一个例子,用文本编辑器打开某个.smali文件,看到: const-string v5, "ServiceMode" “ServiceMode”会在apk执行时显示为英文。因此,需要汉化。在I897 ROM里,用工程模式特殊代码看到的多半属于这一类。汉译起来非常花时间。我们要把ServiceMode译成“服务模式”。怎么处理呢?你不能把const-string v5, "ServiceMode"直接改成const-string v5, "服务模式"。打包会失败的。正确的做法是把相应的中文字符用16进制的unicode来表示。例如:把“服务模式”用16进制的unicode表示就是\u670d\u52a1\u6a21\u5f0f 。每一个汉字用4个字符表示,\u表示为16进制的unicode码。好了,正确的汉译是: const-string v5, "\u670d\u52a1\u6a21\u5f0f " 网上有中文字符与16进制unicode码的对照表或转换工具。 2) 修改图标标签 每一个apk文件都有一个“图标标签”。将apk程序安装进手机后,在图标下面显示图标标签文字。这个图标标签的内容是可以修改的。在\res\values下找到strings.xml,修改其中的一行: <string name="app_name">图标标签</string> 例如:<string name="app_name">静音启动</string> 同理,如果是窗口小插件,要修改widget_name。 3) 去掉apk中的广告 有很多apk应用都带有广告。为了去掉程序中的广告,要修改main.xml文件与广告有关的内容。在/res目录下找到文件main.xml。通常在/layout目录下,有时也被放在其它目录下。甚至,有时不存在main.xml文件,广告行被放在其它xml文件内。只能细心逐个文件进行查找。无论哪一种情况,查看其内容,你会看到有一项类&#20284;的命令如下。这就是广告显示。 <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” /> 可以看到,关键是要把fill_parent改为0.0dip,把wrap_content改为0.0dip,其它内容保持不变即可。这种改法就是不给广告显示空间,当然你就看不到广告了。 更多 上一篇:APK文件简介 及 解包 打包 工具 介绍 下一篇:android中APK开机自动运行 查看评论 * 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场 核心技术类目 全部主题 Java VPN Android iOS ERP IE10 Eclipse CRM JavaScript Ubuntu NFC WAP jQuery 数据库 BI HTML5 Spring Apache Hadoop .NET API HTML SDK IIS Fedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTC coremail OPhone CouchBase 云计算 iOS6 Rackspace Web App SpringSide Maemo Compuware 大数据 aptech Perl Tornado Ruby Hibernate ThinkPHP Spark HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap 个人资料 wh_19910525 访问:269684次 积分:5789分 排名:第898名 原创:313篇 转载:61篇 译文:1篇 评论:106条 文章搜索 文章分类 android之Preference(8) android-源码开发(40) wifi(20) C++技术(5) C技术(2) linux(96) 嵌入式技术(15) 其他杂类(22) android技术(102) git 详解(29) java技术(1) touch(6) gsensor(7) IIC(1) audio(12) 3G(0) camera(5) Battery(1) linux驱动(3) future(1) 阅读原理图(3) Sensor(3) 常用的 git 命令(13) eclipse(16) ubuntu(16) next-day(3) shell(16) windows相关(22) java相关(13) android-app(32) often_use(15) Makefie(9) pythen学习(1) pychon 学习(2) QT(9) android-jni(3) anroid build system(12) 文章存档 2014年01月(4)2013年12月(16)2013年11月(6)2013年10月(20)2013年09月(24)2013年08月(18)2013年07月(6)2013年06月(8)2013年05月(5)2013年04月(1)2013年03月(15)2013年02月(4)2013年01月(19)2012年12月(35)2012年11月(35)2012年10月(21)2012年09月(18)2012年08月(21)2012年07月(7)2012年06月(2)2012年05月(21)2012年04月(31)2012年03月(38) 阅读排行 This Android SDK requires Android Developer Toolkit version 20.0.0 or above(13750) git push 小结(12554) apk反编译获取完整源码 及 apk反编译后的处理(7661) repo的小结(7487) boot.img的解包与打包(7035) 基于linux-2.6.38.8内核的SDIO/wifi驱动分析(6434) git log 小结(6338) ssh-keygen 的 详解(6150) git cherry-pick 小结(4587) 产品生产的各个阶段:DV,EV,PV &#183;&#183;&#183;&#183;&#183;&#183;&#183;&#183;是什么意思(3900) 评论排行 This Android SDK requires Android Developer Toolkit version 20.0.0 or above(28) Android 4.0 CTS step(8) Android系统Recovery工作原理2---update.zip差分包问题的解决(4) 深入分析Android (build/core/*.mk脚本)(3) wifi 驱动 进阶11(3) Android项目中把bin文件夹里面的.apk文件删除,怎么让它再生成(3) git merge 和 git rebase 小结(2) android:versionCode和android:versionName 用途(2) 4wpa_supplicant适配层 -- 详解(2) 8 Android平台开发-WIFI 驱动移植 -- 详细(2) 推荐文章 最新评论 ssh-keygen 的 详解 u010761000: 学习了!看了博主的文章很有启发! PreferenceFragment 使用 小结 cluolin: 能讲讲PreferenceFragement相对于PreferenceActivity的优势吗? 如何在windows下使用git及github仓库管理项目 Tonker: 不是一般的详细 android的jni语法 diyangxia: 这个so文件是不是要放在lib文件夹下特定的文件夹下?比如什么x86或者armeabi android 界面 状态栏按下 menu键 显示不出,无响应 mailyiran200101: 博主不厚道啊,引用我的博文没有注明转载啊 Android项目中把bin文件夹里面的.apk文件删除,怎么让它再生成 u013127203: 请问一下 我的项目里边bin下还是没有文件 怎么办 #!/usr/bin/env python与#!/usr/bin/python的区别 qinglu000: 学习喽,谢谢! android 电容屏(三):驱动调试之驱动程序分析篇 zhendongzd: 你好六、驱动程序分析(完整代码见 goodix_touch.c/goodix_touch.h)这里面... android:versionCode和android:versionName 用途 tj_shenzhendaxue: 成功了,非常感谢!!! AndroidManifest中original-package标签 ameyume: 不错,这个详细。