A. androidkiller是什么软件
Android Killer
一个朋友写的工具,挺方便好用,发到此处,留给新手同学们学习使用。详细信息看下文介绍。
Android Killer 是一款可视化的安卓应用逆向工具,集Apk反编译、Apk打包、Apk签名,编码互转,ADB通信(应用安装-卸载-运行-设备文件管理)等特色功能于一 身,支持logcat日志输出,语法高亮,基于关键字(支持单行代码或多行代码段)项目内搜索,可自定义外部工具;吸收融汇多种工具功能与特点,打造一站 式逆向工具操作体验,大大简化了用户在安卓应用/游戏修改过程中的各类繁琐工作。
主要功能:
1、可视化、全自动的反编译、编译、签名;支持批量编译APK。
2、以树形目录管理反编译出的Apk源码文件,浏览、打开、编辑、都可以统一在软件中实现,不同项目间可以自由切换,方便快捷。
3、自动识别图像资源,并提供该类资源的快捷替换功能,方便修改这类图片资源。
4、内置代码编辑器,支持包含(但不限于).samli、.xml、.html等各类格式文件的语法高亮显示,根据 smali文件格式的自动匹配相应语法;同时支持使用系统编辑器来编辑代码文件。
5、内置基于文件内容的单行或多行代码关键字搜索、可显示无穷多个搜索结果以标签的形式分门别类;可指定搜索范围(整个项目或在指定的文件或文件夹中搜索)、大小写,编码类型;从此无需再借助其他工具,即可轻松的完成搜索任务。
6、内嵌Unicode、UTF8、ANSI编码互转工具,方便硬编码文字的检索以及相关汉化类修改。
7、内置Log等调试工具,方便应用进程、logcat输出查看等进阶操作,监测修改apk的运行状况,以助于分析和查找错误
8、内置ADB功能,包括使用ADB向设备(或模拟器)安装、卸载、运行修改后的apk,进行测试,并可管理所连接设备的存储文件(包括系统以及用户文件)
9、所有操作步骤、结果都会显示在日志窗口,方便查看。
10、默认支持记事本、计算器等小工具,开放设置接口可根据本人需要自定义外部工具,满足个性化需求。
先放两张界面图:
注意:如果软件首次运行时提示未找到java SDK,说明未安装JAVA SDK或者未将JAVA SDK设置到WINDOWS系统环境变量中,请自己手动配置。
另外说明:xml, smali, html, jar 等相关文件格式可以直接拖到窗口界面上打开,将装有图片的文件夹拖拽到窗口界面上,可预览图片中的相关格式。
Android killer 正式版 V1.0.0.102更新
本次正式版更新不得不说是给新手一次福利:
本次更新总概览:
1. 增加代码描述提示功能(适合新手)
2. 代码自动补全功能(适合新手)
3. 在项目工程中优化并显示apk图标。
4. 优化类以及方法图标。
5. 编译生成文件名称变化,以及快速打开编译项目所在位置。
6. 增加代码模板插入功能
7. 优化右键菜单,更简洁方便
8. 优化logcat日志显示,查看更方便。
9. 添加16进制/10进制转换功能
一、 增加代码描述提示(适合新手)
将鼠标光标定位在代码上,会提示当前代表所表示的含义,再也不要一次次的查表看代码了,
二、 代码自动补全功能(适合新手)
代码自动补全功能,在输入法在英文状态下。使用shift+空格键即使用,只需输入第一个或者前几个字母即可提示代码自动补全。
三、 在项目工程中优化并显示apk图标
项目中显示ap图标可以让你在众多项目中找到某个项目
对于首次反编译APK未及时更新工程选项卡图标的原因,是因为正常APK在反编译后才会得到其中的资源,所以在首次反编译时,使用工具默认的安卓小图标代替,反编译成功后,可在“开始”列表中右键刷新列表,更新下工程图标缓存即可。
四、 优化类以及方法图标
图标采用eclispe中图标显示
五、 编译生成文件名称变化,以及快速打开编译项目所在位置
快速找到编译后的文件
方法一:
点选 "工程管理器" 中 Android 小图标按钮或点击下面路径进行查看
方法二:直接点击下面的蓝色字体即可
B. 如何反编译android应用以及重编译,签名和对齐优化
首先,了解一下我们为什么需要反编译apk
大部分情况下,是由于想本地化一款优秀的应用,才需要做这事儿;又或者进行少量的smali修改以达到想要的效果(如添加归属地,使3G版Nexus 7支持Wi-Fi热点)。
下面我们先准备运行环境和工具
建立工作目录,如.\workspace\apktoolbox (下面同样以此路径为例)
必不可少的JDK:Oracle Java下载,安装完成后把<jdk-inst-path>\bin添加到$PATH环境变量中
反编译和重编译工具apktool:Google Code下载,按平台下载(一个apktool-install-<platform>-<ver>-tar.bz2,一个apktool<ver>.tar.bz2,下载完成后解压至.\workspace\apktoolbox\bin
密钥文件,共4组。test/shared/media/platform,从android source中获取,分别对应不同共享用户ID时签名所需(查看应用AndroidManifest.xml第二行android:sharedUserId项 ),放到.\workspace\apktoolbox\bin下
test - 无android:sharedUserId项
shared - android:sharedUserId=android.uid.shared
media - android:sharedUserId=android.uid.media
platform - android:sharedUserId=android.uid.system
签名工具signapk.jar,放到.\workspace\apktoolbox\bin下
对齐优化工具zipalign(从android sdk中获取,在tools目录下),放到.\workspace\apktoolbox\bin下
准备工作完成
接下来我们就要开始工作了(以本地化工作为例)
把待反编译的apk放到.\workspace\apktoolbox\apks下
在命令行模式下进入.\workspace\apktoolbox\bin目录,输入以下命令进行解包(反编译)
apktool d ..\apks\<apkfile>.apk ..\apks\<outdir>
.\workspace\apktoolbox\apks\<outdir>\res下的values目录(英文原版)和values-r<locale>目录(本地化)就是我们需要的对象。
本地化工作完成后,在命令行中输入以下命令进行重新打包(重新编译)
apktool b ..\apks\<outdir>
.\workspace\apktoolbox\apks\<outdir>\dist目录下会生成重新打包后的apk(未签名,未对齐优化)
重新打包完成后,在命令行中输入以下命令进行签名(根据实际情况选用密钥,这里以test密钥为例)
java -jar signapk.jar testkey.x509.pem testkey.pk8 ..\apks\<outdir>\dist\<apkfile>.apk ..\apks\<apkfile>_signed.apk
签名完成后,在命令行中输入以下命令进行对齐优化
zipalign -f -v 4 ..\apks\<apkfile>_signed.apk ..\apks\<apkfile>_zipaligned.apk
<apkfile>_zipaligned.apk就是我们最终需要的apk了。
完成
部分apk需要系统框架资源,没有的话在重新打包时会报错,这种情况下我们只需要先安装一下对应系统框架即可(从你目标ROM中把/system/framework/framework-res.apk提取出,放到.\workspace\apktoolbox\apks下)。在命令行中输入以下命令进行安装
apktool if ..\apks\framework-res.apk
C. anzhuo应用程序怎么反编译
让我们先来认识下APK文件. Android的应用程序包为扩展名为.apk文件, 无论你是从手机市场里下载, 还是电脑中下载. 都是这类APK文件. APK是AndroidPackage的缩写,即Android安装包(apk)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接,和Windows Mobile中的PE文件有区别.
android
一个APK文件解压开通常有这样的文件夹:
META-INF 目录:
MANIFEST.MF: manifest文件
CERT.RSA: 应用程序证书
CERT.SF: SHA-1资源签名列表. 例如:
Signature-Version: 1.0
Created-By: 1.0 (Android)
SHA1-Digest-Manifest: wxqnEAI0UA5nO5QJ8CGMwjkGGWE=
...
Name: res/layout/exchange_component_back_bottom.xml
SHA1-Digest: eACjMjESj7Zkf0cBFTZ0nqWrt7w=
...
Name: res/drawable-hdpi/icon.png
SHA1-Digest: DGEqylP8W0n0iV/ZzBx3MW0WGCA=
lib: 这个目录包含某些特定编译代码, 这个文件夹分成下面这些
armeabi: 只基于所有ARM处理器的编译代码.
armeabi-v7a: 所有ARMv7处理器的编译代码
x86: 仅针对x86处理器的编译代码
mips: 为MIPS处理器的编译代码
res: 包含资源的目录不编译到资源文件,看下面:
assets: 包含应用程序的资产,可以通过AssetManager进行检索.
AndroidManifest.xml: 包含应用程序的元数据文件,描述名称、版本、访问权限、引用应用程序的库文件。此文件在Android二进制格式, 可被工具转化为可读的纯文本XML工具,如 AXMLPrinter2,apktool,或Androguard。设置,可以通过AssetManager进行检索
classes.dex: Dalvik字节码
resources.arsc : 一个包含预编译资源文件,如二进制的XML.
有两种方法反编译APK, 如果是为了汉化程序, 可以使用apktool:
安装过程
1.下载apktool1.5.2.tar.bz2和apktool-install-windows-r05-brut1.tar.bz2
2.把两个文件都解压放在同一个目录,共三个文件
aapt.exe
apktool.bat
apktool.jar用于解包,apktool.jar和aapt.exe联合用于打包。
在命令行执行:
apktool d d:xxx.apk d:xxx
xxx 为你的输出目录, 然后你就可以看一些xml的资源文件, 以及Smali文件. 如下图某APK文件反编译输出目录:
由此可见,Android应用程序反编译并不难, 加密与解密的斗争一直会持续.
D. 瀹夊崜apk鍙岖紪璇戝伐鍏峰畨鍗揳pk鍙岖紪璇
apktool5.0姹夊寲鐗堬纻
Apktool5.0姹夊寲鐗堟槸涓娆惧畨鍗撶Щ锷ㄥ钩鍙颁笂镄勫弽缂栬疟宸ュ叿杞浠讹纴!Apktool鐜板凡瀹岀编鍏煎笰ndroid5.0L锛屼娇鐢ㄥ畠鍙浠ヤ慨鏀硅蒋浠跺簲鐢ㄥ悕绉帮纴缁栾蒋浠跺簲鐢ㄥ幓骞垮憡銆佺牬瑙c佺惧悕銆乑IP浼桦寲绛夛纴鏀鎸乯ava缂栬疟鍣锛屽彲鍦ㄦ坠链轰笂瀹屾垚绠鍗旷殑.java鏂囦欢缂栬疟鍙婅繍琛岋纴镓嬫満鍏氩java镄勫埄鍣!浣滆呬粠鍙戝竷浠ユ潵涓鐩村緢浣庤皟锛岄潪甯稿己鎭岖殑镓嬫満绔鍙岖紪璇戝伐鍏枫
鍙岖紪璇悭pk鎶io寮傚父鏄镐庝箞锲炰簨锛
杩欎釜apktool链韬灏变笉鏀鎸佷竴浜沘pk镄勫弽缂栬疟锛屽洜涓哄弽缂栬疟涓嶅彧鏄镟挎崲瀛楃﹂偅涔堢亩鍗旷殑锛屽畠閲岄溃寰埚氩湴鏂逛细鐢ㄥ埌鎹曟崏阌栾锛屽洜涓哄紑鍙戣呯殑绮惧姏链夐檺锛屽緢澶氶敊璇閮芥槸琚涓鍒鍒囷纴瑙嗕负镞犳硶杩愯岃ユラわ纴铹跺悗鎶婇梾棰树涪缁欑敤鎴枫
鐭ラ亾apk镄勫悕绉板备綍铡诲绘垒锛
1.杈揿叆锻戒护锛歛dbshellammonitor銆
铹跺悗钖锷ㄩ渶瑕佽幏鍙栧寘钖岖殑搴旂敤銆
2.镆ョ湅镊宸卞畨瑁呯殑app鍖呭悕銆
3.瀹夊崜绯荤粺涓锛氲剧疆钬斺斿簲鐢ㄢ斺旀e湪杩愯屾煡鐪嬨
4.瀹夊崜绯荤粺涓锛氭枃浠剁$悊鍣ㄨ块梾鐩褰/data/data涓嬶纴鏂囦欢澶瑰嵆涓哄寘钖嶃
5.灏哸pk鍖呭弽缂栬疟钖庯纴镓揿紑AndroidManifest.xml锛屾悳绱package銮峰彇鍖呭悕銆
apk鏂囦欢镐庝箞鍐欙纻
APK鏄疉ndroidPackage镄勭缉鍐欙纴鍗矨ndroidapplicationpackage鏂囦欢鎴朅ndroid瀹夎呭寘銆傚彲浠ョ敤apktool锛宎pkmanager绛塧pk鍙岖紪璇戝埄鍣ㄨ繘琛岀紪鍐
E. 如何反编译Android 的apk/dex/odex,获得源码
关于APK,DEX的介绍
当我们编译一个安卓项目的时候,整个项目会被打包成一个 .apk文件。这个文件其实是一个标准的zip文件,因此可以用解压缩工具打开。这个apk文件一般都包含程序的代码(在classes.dex文件中), 资源文件, 证书, manifest 文件等。 其中对我们最重要的是classes.dex文件,因为编译后的字节码(bytecode)都是放在这个文件中。我们后面讲的反编译就是针对这个dex文件来的。
反编译普通的APK文件:
对于普通的APK/DEX文件的反编译,其实工具有很多, 包括:
ByteCode Viewer: 一个可视化的集成工具,说实话,不太好用,不够稳定,生成代码质量中等。
dex2jar + jd_gui: 这两个工具组合还可以, 用起来比ByteCode Viewer麻烦一些,但比较稳定,生成代码质量中等。
在线反编译工具JADX: http://www.javadecompilers.com/apk , 这是基于SourceForge上的JADX的开源工具来实现的。本来以为在线反编译质量不会好,但出人意料的是:JADX是我发现的最好的反编译工具, 不但使用简单(直接上传,转换,下载就ok),而且反编译出来的代码质量很高,特别是变量命名方面,可读性很不错。
反编译ODEX文件:
Android 5.0 Lollipop以后,Google用ART代替了以前的Dalvik,对于普通的app来说我们仍然可以用上面的方法来把dex文件反编译成Java源代码。但对于系统预装的App,特别是类似应用商店,播放器等, 你会发现这些应用的apk文件中找不到对应的classes.dex文件,而是会发现在其子目录下有个.odex文件。 那如何反编译这个odex文件呢?我通过google查了查,知道应该用baksmali,但从github上下载了几个版本都不行,报各种不同错误。经过反复搜索和尝试,终于找到了这篇文章
: http://www.naldotech.com/how-to-deodex-applications-on-android-5-0-lollipop/ 。 具体方法如下:
1. 从这里下载工具包, 解压缩到本地。 这里的baksmali的版本是2.0.3. 不同版本的baksmali针对的Android内核不同。有时候高版本反倒不好用。
2. 打开工具所在目录, 按住shift键, 点击鼠标右键,打开windows命令窗口
3. 把 odex文件拷贝到该目录
4. 在命令窗口运行: oat2dex.bat *.odex. 正常情况下,应该显示OK等信息。如果报错的话,说明这个文件无法转换,后面的也不用试了。
5. 运行 oat2dex.bat *.odex temp.dex . 运行后会创建一个temp.dex文件。
6. 运行 java -jar baksmali-2.0.3.jar -a 21 -x temp.dex -o source . 运行后会创建一个source的文件夹,并将temp.dex反编译到该文件夹。-a 21 表明的是Android内核的版本21
7. 运行 java -jar small-2.0.3.jar -a 21 source -o classes.dex, 反编译为classes.dex文件。
需要注意的是:由这种方式反编译成的classes.dex 文件相比原生的classes.dex 还是缺少了些信息,因此反编译这种classes.dex 文件后生成的java代码可读性会更差些。
8. 用在线工具JADX 来把 classes.dex 最终反编译为java代码。