跳至主要内容

修改android软件之反编译APK及自签名(很有用)

本文所述的环境需要有java的支持,建议您下载安装JRE或者jDK .反编译APK,侵犯了原作者的版权,不过有些软件需要修改后才能在中国使用,比如twitter,facebook,foursquare,在生存和道德面前,我只能选前者,也希望能有更多的作者能将软件以BSD License的方式发布或者是GPL。不多说,切入正题吧。

之前有过很多关于反编译APK文件的文章,但是我从来没去试过,不是我不感兴趣而是我觉得为了反编一个小,要围着地球转一圈太不值得了. 直到我看到了新的
反编译工具出现的时候我才真正的开始试手.新的编译方法更加简单快速,请丢弃以前老的方法,看看下面这种新方法.(*注:旧的反编方法可以参考 <<apk 破解之dexdump反编译Android程序>>

新的反编方法,是使用 Apktool ,这是一个开源的程序,在google code上就有,传送门在此---- apktool说明及下载 ;由于我使用的环境与大家不太一样,我是用Ubuntu的, 将包解压,直接丢进 /usr/local/bin ,这里要注意,要下载两个包才能工作,具体的操作细节上面的官方有说明档. 接着,随便找一个你电脑上的 test.apk ,然后在命令行里输入:
apktool d test.apk ,你就会发现居然反编成功了,如此神速.在这里你可能也看到了 apktool 需要带有参数才能运行,具体的参数如下

apktool    <命令字符>     apk文件
命令字符常用如下:
d     意即decode ,解码,反解,用这个参数来将官方的apk解压成源代码,这样大大方便我们修改
b     意即build , 构建,用这个参数可以把源代码再重新做成一个apk 文件,默认时文件名称就是这个软件代码的目录名.

这是最常用的命令,我们以修改twitter.apk为例,注意,这个apk是指 twitter for android 。我的操作环境是Ubuntu,而非windows,但是命令行格式是相同,没有任何区别,除非我特别说明

1 确保你已经按照官方的说明档安装好了环境,然后才能开始执行下面的操作
wbs@wbs-laptop:~/Dropbox/android$ apktool d twitter4android.apk 
I: Baksmaling...
I: Loading resource table...
I: Decoding resources...
I: Loading resource table from file: /home/wbs/apktool/framework/1.apk
I: Copying assets and libs...
wbs@wbs-laptop:~/Dropbox/android
如此一来,我们就将twitter解包了,下一步就是修改,这个你就自己发挥编辑器的作用吧。

2 打包,我们把一个APK软件修改完了以后,就要封装起来做成一个APK,方便安装

进入到刚刚我们解压的APK包的文件夹里,比如我的是twitter4android,然后执行:

wbs@wbs-laptop:~/Dropbox/android
/twitter4android$ apktool b
I: Checking whether sources has changed...
I: Smaling...
I: Checking whether resources has changed...
I: Building resources...
I: Building apk file...
wbs@wbs-laptop:~/Dropbox/android
/twitter4android

OK,这样包就重新打好了,可能你并没有直接看到什么东西产生,不过这个时候你看一下 twitter4android文件夹的smali/dist里,已经产生了一个我们修改后的APK,就是它了,但是这个文件目前还不能安装,需要一个签名!下一步就是关于软件签名的,早在09年就已经有老外研究过了,我们现在用的只是人家当年的技术了,没办法,国内很少有人研究这种出力不赚钱的事, ^@^ 劳骚一下。

签名程序名为 Autosign ,你可以自己去google搜索,如果不愿意,就从我这个 AutoSign 传送门过去吧.这个的安装很简单吧,原作者都写了,其实你要做的就是解压,然后使用就OK,当然如果你跟我一样使用 Ubuntu/FreeBSD等系统,就执行下面的命令

java -jar signapk.jar testkey.x509.pem testkey.pk8 twitter4android.apk(这里写上你前面生成的那个文件名)    twitter4android-1.apk(这里写上你需要生成的文件名,即签名后的)

Windows用户只要双击exe执行即可,操作已经很简单,不必多说了。Ubuntu/FreeBSD用户可以自己写一个小脚本,很简单也不用多说了。

3 好了,经过了以上的操作,你的作品可以公示出来给论坛所有人看了,我只在机锋网混。。。刚入手android没几天。




评论

此博客中的热门博文

使用StrongSwan搭建 IKEv1 IKEv2 VPN服务器

#2016-01-04 决定将本文作废,因我要另再写新版本的配置。这篇作于 2013年,而strongswan已经更新很多版本。 #本文需要有独立的VPS,如果你需要一台速度快,每月30元的左右的VPS,可以使用我的邀请注册 http://www.vultr.com/?ref=6813064 并且在注册时使用 SSDVPS 可以送 $20(或者 $10 不等)。一定要选日本线路,这个到国内延迟约40ms ~ 100ms ,一般是 80ms 左右,非常快非常稳定,一个月32元,可以和几个人合租了。 #LOG:2014-04-30 对ipsec.conf进行修改,增加了android手机的兼容,现在可以支持完整支持android 自带的VPN设置啦~~~~ #LOG:2013-0609 对ipsec.conf进行修改,加入清楚DPD代码,防止IP 地址池不正确占用 #LOG: 2013-0519 删除ipsec.conf 中多余的conn iOS一节,这本是我一年前调试用的,时间不起作用; 删除了 %default中的 rightsubnet ,如果不删除,在定义了多段IP路由的情况下会导致账号无法上网(只有一段IP没这个bug),感谢  JackWindows  ‏ @ JackWindows #LOG 2013-05-12 修正bug,原配置文件会导致一个ID不可以同时多次登陆。得蒙  @ KhaosT   指点,对  strongswan.conf 加入duplicheck.enable = no ,对 ipsec.conf 加如 uniqueids=never #完成度100% 在我们生活的周围,通常要用到很多种VPN: PPTP, L2TP/IPSec, Cisco IPSec, IKEv2, 这些不同类型的VPN覆盖了目前我们常见的所有手机或者电脑平台,比如 iOS, Blackberry OS, BB10, Android, WebOS, Windows XP, Windows Vista/7/8, Unix/Unix-like。 (*如果你正在找blackberry 翻墙方法、ios ipsec vpn、windows IKEv2 VPN、Blackberry...

简易 APN Proxy (APN代理)的搭建

2012年2月1日 ,新增加了一种方案,请看 《 搭建增强型代理服务器(APN Proxy) 》 2012-01-03 更新 3proxy 及 监控进程脚本,分别见 B 3) 和 曾经在twitter被封锁的时候,我在长城宽带干过一件事,那就是将twitter的请求和通讯使用SSH,让全网用户可以无阻访问,不过也因此付出了代价,略不去说了。 后来得厨神 @paveo 的创意,何不将其用在手机等移动设备上?厨神的APN现在已经很成熟并在免费有限量专供中。我今天这里写得,是如何搭建自己的APN Proxy(APN 代理),但在阅读下面内容之前,需要一个刚性要求:一台在国内的Unix-Like的主机(可以是Linux/FreeBSD/Mac Osx Server/Solaris等等)并且是公网IP地址以及在国外的VPS主机(Unix类)。这个要求可以看出成本比较高,所以我看到淘宝上已经有人开始出售APN代理了,这个可以理解。 第一部分 原理 原理图1 如上图所示,我们要实现的功能原理是,将上网请求先发送到“国内VPS”,再由“国内VPS”通过SSH隧道转送到国外,最终实现无阻上网。点击查看大图可以看出,主要配置是在“国内VPS”上,包括配置SSH -D、Squid、Privoxy或者Polipo(socks代理程序你可以选自己喜欢的)。 第二 配置 1 国外VPS 国外VPS上,你需要有一个SSH帐户,并且请注意,使用密钥方式登录你的SSH而非密码,之所以如此,是为了下一步建立长久的SSH以及断线自动重连做准备,这个很重要。关于“SSH 免密码 密钥 登录”请使用google看一下。 这里有一个小插曲,部分centos 上如果默认的话,SSH帐户会报错,大约 是adminitstatly close之类,这有可能是 openfile数目问题,可以轻松解决。我非Linux爱好者,所以是临时google,并没有记录下来,你只要记得如果遇到同样问题,5分钟之内就可以google解决。 2 国内VPS 这一节将会是我们的主战场,基本上,我将会按下面的逻辑图来进行配置,这其中会涉及很多文件的配置,需要你注意哦,最后部分我会提供部分配置文档下载,由于我使用的是FreeBSD,因此会有少量差...

Raspberry Pi APN 搭建暨Cisco IPSec VPN的使用

[前言] 写这篇的目的仅仅是出于日常需要,它会用到很多技术方面的东西,我力图使这一章变得简单易读。这一篇博客将是一篇综合性的,教你设置路由器映射、DDNS、IPSec VPN、Squid、git。我将会按照我自己安装的顺序来写,特殊部分会有{注*:}。 [连接Cisco IPSec VPN] 由于近来国内对OpenVPN和PPTP VPN的干扰严重,往往会引发封杀服务器IP,因此现在很多都发放IKEv2 VPN或者Cisco IPSec VPN,这里介绍使用Cisco IPSec VPN,我们使用的软件是 vpnc 。 Raspberry Pi 安装的是官方 Raspbian 的系统,在此处下载的  http://www.raspberrypi.org/downloads  ,其他版本的系统大同小异。 在使用Raspberry Pi 安装vpnc前(事实上也包括所有vpn程序),请确保你是用网线连接网络,因为如果你的Raspi使用的是WIFI,那么连接VPN时会断网,这似乎是一个BUG [[安装vpnc]] sudo apt-get install vpnc [[配置vpnc]] 默认的vpnc 的配置文件存放在 /etc/vpnc/default.conf (注权限为 0600 ,因此会提示权限问题;Linux开发者不知道为何习惯很差,总是把文件放到/etc/,而实际上应该放入/usr/local/etc ,唉,屌丝就是屌丝),我们需要修改一下,default.conf如下: IPSec gateway 111.222.111.223 IPSec ID blackberry IPSec secret heibang #IKE Authmode hybrid Xauth username test Xauth password  123 ( 如果你对Linux/Unix的文本编辑不是很熟悉,那么就使用nano命令,这个如同win下的记事本, sudo nano /etc/vpnc/default.conf  编辑完后,使用Ctrl+x 进行保存,接着问你yes 还是no 是否保存,就选Y ) 以上配置是“黑帮合租”的配置,你需要改成...