Android 反编译入门

1,215 阅读2分钟

一个新手一步步的反编译尝试


工具

  • apktool

apktool安装

  • 下载链接:download
  • 进入下载页面按这个做上面的教程做就好

apktool的Permission Denied 解决方案

运行时出现了Permission Denied 的错误(其实只是没有好好执行教程的第五条)一个文件有3种权限,读、写、可执行,这个文件没有可执行权限,需要加上可执行权限。

  1. 终端下先 cd到该文件的目录下
  2. 执行命令 chmod a+x ./文件名

用apktool拆分apk

  • cd到apk的文件夹下
  • 执行命令:apktool d app-debug.apk

  • 得到资源包

打开AnroidManifest可以看到程序的activity的各项属性,该app添加了什么权限,初始启动的是哪个app,图标名,app的名字等信息--我用的是TextMate打开,我觉得windows的话应该可以用Notepad++打开吧~试试咯~


res包里面是项目所带的资源,有布局文件,用到的配色,图片,上面app名字这类字符串的保存地址等,例如下图中的activity_main就是布局文件


MacDown logo

下面让我们来试试更改它,我们把显示的"Hello World!" 改成 "514最帅!",然后保存AnroidManifest中看到的



打开values找到String.xml,打开后找到app_name这一行,这对应之前在AnroidManifest中看到的label,前面那个icon是app的图标,也可以改,然后把它改成"课堂演示",然后保存


MacDown logo

MacDown logo

MacDown logo


完成后可以再把它编译成一个apk,执行命令:Desktop slf$ apktool b app-debug


MacDown logo


在文件夹dist下面找到一個 apk,这个就是重新组装好的apk


然后准备安装它,结果:出现了下面的场景。


是因为这个apk 还没有被 sign (签名)过,于是我对它加签名,于是生成一个自己的keystore,并执行以下命令行:

---
生成一个自己的keystore:
keytool -genkey -alias myKeyStore -keyalg RSA  -validity 20000 -keystore myKeyStore
签名:
jarsigner -verbose -keystore myKeyStore -signedjar signed.apk app-debug.apk myKeyStore
---


于是生成了签名后的apk,安装它


变成



变成


最后的补充

玩了这个我在想能不能改点别的,于是,我打开下载了最近很火的游戏:贪吃蛇大作战,并把它的图标和名字改成了扇贝单词。更改名称上面说过啦,更改logo的话,也是通过AnroidManifest得到图标的地址以及名称,贪吃蛇大作战的图标名称是snake_launcher_ic,把它替换成扇贝单词的图标就好啦~


结果如下:


可以看到扇贝单词的图标下隐藏着一个贪吃蛇游戏。
于是可能会出现以下的对话:

---
妈:这孩子真乖,手机上都是背单词的软件
我:...
---