ubuntu环境下反编译android apk的方法
使用ApkTool反编译Apk
下载 apktool1.4.3.tar.bz2 、apktool-install-linux-r04-brut1.tar.bz2 两个包,并解压到统一个目录中,解压后得到aapt apktool apktool.jar 。解压安装完成后输入以下命令解压:
<span>$ ./apktool d apk/xgd_android_test.apk I: Baksmaling... I: Loading resource table... I: Loaded. I: Loading resource table from file: /home/yangyupeng/apktool/framework/1.apk I: Loaded. I: Decoding file-resources... W: Cant find 9patch chunk in file: "drawable-mdpi/navbar.9.png". Renaming it to *.png. I: Decoding values*/* XMLs... I: Done. I: Copying assets and libs... </span>
显示如上,注意apktool的参数,d表示decode,b表示build,此时在当前目录生成apk的解压文件:
1/xgd_android_test$ ls AndroidManifest.xml apktool.yml lib res smali
这里有apk的源码(smali)、图片、xml配置和语言配置等等信息。
使用dex2jar和JD-JUI这两个工具查看java源码
下载dex2jar、JD-JUI 两个包,解压。
把apk的后缀名改成zip,并解压得到classes.dex文件,在dex2jar目录中输入如下命令得到.jar文件:
<span>$ ./dex2jar.sh classes.dex this cmd is deprecated, use the d2j-dex2jar if possible dex2jar version: translator-0.0.9.9 dex2jar classes.dex -> classes_dex2jar.jar Done. </span>
再使用JD-JUI打开该文件就能查看源代码:
与源代码对比:
package xgd.android; import android.app.Activity; import android.os.Bundle; public class ICCardActivity extends Activity{ @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.iccard); } }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接
相关推荐
-
Android如何防止apk程序被反编译(尊重劳动成果)
作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来. Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sdk-windows\tools\下面多了一proguard文件夹 proguard是一个java代码混淆的工具,通过proguard,别人即使反编译你的apk包,也只会看到一些让人很难看懂的代码,从而达到保护代码的作用. 下面具体说一说怎么样让SDK2.3下的proguard.cfg文件起作用,先
-
使用android-apktool来逆向(反编译)APK包方法介绍
谷歌官方提供了apktool可以逆向已经发布出去的APK应用,即反编译已经打包成功的APK文件,使用它可以将其反编译成非常接近打包前的原始格式,对于APK来说,可以具体的逆向AndroidManifest.xml.资源文件resources.arsc以及将dex文件反编译成可以调试的smali文件. Warnning 但apktool并不等于是可以用来侵犯前作者的作品的工具,所以使用apktool工具的用户千万不用用其来进行不正当.非法的使用. It is NOT intended for pi
-
Android APK反编译图文教程
在学习Android开发的过程你,你往往会去借鉴别人的应用是怎么开发的,那些漂亮的动画和精致的布局可能会让你爱不释手,作为一个开发者,你可能会很想知道这些效果界面是怎么去实现的,这时,你便可以对改应用的APK进行反编译查看.下面是我参考了一些文章后简单的教程详解. (注:反编译不是让各位开发者去对一个应用破解搞重装什么的,主要目的是为了促进开发者学习,借鉴好的代码,提升自我开发水平.) 测试环境: win 7 使用工具: 我们下载地址: apktool (资源文件获取) 下载
-
Android APK反编译技巧深入讲解
导言: 在我们安卓开发当中,我们不仅需要掌握基础的开发技能,也需要掌握软件的安全技能,这样才可以让我们的软件能够成为一款能够真正可以进行发布的软件,同时也可以让自己的核心技术不会被别人所盗取.首先我们应当了解的是,对于反编译我们一共需要三个工具,它们分别是:APKTool,dex2jar,和jd-gui.APKTool:用于解析apk的res文件以及AndroidManifest.xml文件dex2jar:用于把apk解压后生成的classes.dex文件解析为后缀为jar的文件,与下面的jd-
-
为Android的apk应用程序文件加壳以防止反编译的教程
一.什么是加壳? 加壳是在二进制的程序中植入一段代码,在运行的时候优先取得程序的控制权,做一些额外的工作.大多数病毒就是基于此原理. 二.加壳作用 加壳的程序可以有效阻止对程序的反汇编分析,以达到它不可告人的目的.这种技术也常用来保护软件版权,防止被软件破解. 三.Android Dex文件加壳原理 PC平台现在已存在大量的标准的加壳和解壳工具,但是Android作为新兴平台还未出现APK加壳工具.Android Dex文件大量使用引用给加壳带来了一定的难度,但是从理论上讲,Android AP
-
Android开发apk反编译和二次打包教程
作为Android开发者,工作中少不了要反编译别人的apk,当然主要目的还是为了学习到更多,取彼之长,补己之短.今天就来总结一下Android反编译和二次打包的一些知识.首先声明本文的目的是为了通过例子讲解反编译和二次打包的原理和方法,继而作为后续讲解防止二次打包和App安全的依据,并不是鼓励大家去重新打包别人的App,盗取他人劳动成果. 本文首先介绍几种Android反编译工具的使用,然后实现在不需要知道源代码的情况下,仅通过修改反编译得到的smali文件实现修改apk逻辑功能的目的. And
-
android apk反编译到java源码的实现方法
Android由于其代码是放在dalvik虚拟机上的托管代码,所以能够很容易的将其反编译为我们可以识别的代码. 之前我写过一篇文章反编译Android的apk包到smali文件 然后再重新编译签名后打包实现篡改apk的功能. 最近又有一种新的方法来实现直接从Android apk包里的classes.dex文件,把dex码反编译到java的.class二进制码,然后从.class二进制码反编译到java源码想必就不用我来多说了吧. 首先我们需要的工具是dex2jar和jd-gui 其中第一个工具
-
ubuntu环境下反编译android apk的方法
使用ApkTool反编译Apk 下载 apktool1.4.3.tar.bz2 .apktool-install-linux-r04-brut1.tar.bz2 两个包,并解压到统一个目录中,解压后得到aapt apktool apktool.jar .解压安装完成后输入以下命令解压: <span>$ ./apktool d apk/xgd_android_test.apk I: Baksmaling... I: Loading resource table... I: Loaded.
-
ubuntu环境下安装memcache及启动的方法
本文实例讲述了ubuntu环境下安装memcache及启动的方法.分享给大家供大家参考,具体如下: 在ubuntu上安装memcache服务端比较简单. sudo apt-get install memcached memcached -d -m 128 -p 22222 -u root -c 1024 -l 127.0.0.1 -P /tmp/memcached.pid -s /tmp/memcached.sock 参数解释: -d 设置为守护进程 -m 设置内存大小(M) -
-
Ubuntu环境源码编译安装xdebug的方法
本文实例讲述了Ubuntu环境源码编译安装xdebug的方法.分享给大家供大家参考,具体如下: 前面介绍了Ubuntu环境编译安装PHP和Nginx的方法,这里再来讲解一下源码编译安装xdebug的方法. 下载并解压xdebug xdebug下载地址:https://xdebug.org/download.php 我下载的是2.3.3,其实我也不清楚这些版本的区别,就随便下载了一个. cd /usr/local/src wget https://xdebug.org/files/xdebug-2
-
Ubuntu环境下的nwjs安装及使用教程
需求:通过nwjs实现一个可以全屏显示,防止用户退出浏览器的演示用app 一.安装Node.js sudo apt-get install nodejs sudo apt-get install npm 这种方法安装的版本可能不是最新的,可以尝试直接从官网(https://nodejs.org/en/download/)下载. 解压下载的node-v6.11.4-linux-x64.tar.gz文件之后建立软链接即可: sudo ln -s ~/node-v6.11.4-linux-x64/bi
-
ubuntu环境下python虚拟环境的安装过程
一. 虚拟环境搭建 在开发中安装模块的方法: pip install 模块名称 之前我们安装模块都是直接在物理环境下安装,这种安装方法,后面一次安装的会覆盖掉前面一次安装的.那如果一台机器上面开发多个项目使用到不同版本的模块呢?怎么样做才能不受版本影响!那么需要用到虚拟环境,每个虚拟环境互相隔离,在一个虚拟环境中安装卸载模块其他不受影响! 1. python虚拟环境安装 sudo apt-get install python-virtualenv sudo easy_install virtua
-
详解Ubuntu环境下部署Django+uwsgi+nginx总结
前言 这是我在搭建Django项目时候的过程,拿来总结记录,以备不时之需. 项目采用nginx+uwsgi的搭配方式. 项目依赖包采用 requirements.txt 文件管理的方式. 本地准备工作 确认项目能够运行起来,没有 bug 将当前环境的包导出 pip freeze > requirements.txt 将项目上传到服务器上的 /srv 目录下.这里以 git 的形式为例, 打开终端, 依次输入如下命令: $ git init $ git remote add origin xxx.
-
ubuntu环境下的php相关路径与修改方法
ubuntu环境下的php相关的路径 php路径 /usr/bin/php phpize5 /usr/bin/phpize5 php5-fpm /usr/sbin/php5-fpm php所有的配置文件 /etc/php5/fpm 重启php-fpm sudo kill -USR2 `cat /var/run/php5-fpm.pid` ubuntu中更改apache2中php的开发目录路径 安装好php和apache后, 如何将开发的目录设置成想要的呢 默认的开发目录地址:/var/www 更
-
Ubuntu环境下mongodb安装配置详细步骤
1. 安装mongodb 1.1 安装依赖包 sudo apt-get install libcurl4 openssl 1.2 关闭和卸载原有的mongodb service mongodb stop sudo apt-get remove mongodb 1.3 导入包管理系统使用的公钥 wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add - 如果命令执行结果没有显示OK,则执行此命
-
linux环境下恢复rm误删的文件方法
目录 前言 rm之后还有救吗 使用foremost找回文件 使用extundelete找回文件 预防误删引发的事故 总结 前言 一提到在 linux 环境下删除文件,那绝对离不开 sudo rm -rf /* 这个梗,每次看到这个命令,我都想到一幅恶搞的图片: 这个『清理垃圾』的说明真是解释的"恰到好处",据说有小白在论坛问问题,被人开玩笑的回复了 sudo rm -rf /* 这个命令,结果问题就解决了,人也拜拜了~ 从删库到跑路,一天一个入狱小技巧,所以我们一定要谨慎使用 rm -
-
Lamp环境下设置绑定apache域名的方法分析
本文实例讲述了Lamp环境下设置绑定apache域名的方法.分享给大家供大家参考,具体如下: 先进入apache配置目录 [root@iZ233vkrtsiZ local]# cd /usr/local/apache/conf/vhost 然后找到自己网站的配置.以本站为例 [root@iZ233vkrtsiZ vhost]# vim www.eyblog.com.conf <VirtualHost *:80> ServerAdmin webmaster@example.com php_adm
随机推荐
- AngularJS入门教程之XHR和依赖注入详解
- Java多线程之异步Future机制的原理和实现
- js 只能输入数字和小数点的文本框改进版
- PHP批量生成缩略图的代码
- 浅析PHP递归函数返回值使用方法
- Python有序字典简单实现方法示例
- 微信公众号开发之微信公共平台消息回复类实例
- php curl 登录163邮箱并抓取邮箱好友列表的代码(经测试)
- 再谈DOS批处理下格式化日期字符串的三种方法(详解)
- jQuery实现的分页功能示例
- jQuery选择器之基本选择器与层次选择器
- 基于jquery的可多选的下拉列表框
- lua中使用packagepath解决多个项目的路径冲突问题
- Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
- 网站设计应注意的25条有利于排名的建议
- iOS 底部按钮和应用图标显示未读消息(带数字)
- curl和libcurl的区别简介
- php实现encode64编码类实例
- spring boot实现图片上传和下载功能
- 5款Python程序员高频使用开发工具推荐