去广告的【8位元画家】及教程
本帖最后由 Chuckie 于 2016-6-13 21:47 编辑最近在学习前端,好久不搞android了,也慢慢从linux平台用回到windows,废话少说,最近发现了个很萌的应用,叫做8位元画家。
以下是我下午地铁上无聊的时候画的。后来我发现,这个app下面有广告,于是就想要把它给咔嚓了,哈哈哈
要用到的工具有:
apktool:用来反编译
sign.jar:用来签名
dex2jar:用来将dex转换成jar(有助于我们找到修改地点)
jd-gui:用来查看jar源码
以上工具基本都在github上找得到,我的上一篇帖子也有贴地址。文末再贴dex2jar和jd-gui的链接。
首先,在PC上下载我们需要的apk文件,我在360市场找的:http://zhushou.360.cn/detail/index/soft_id/3246707
把它用apktool反编译,java -jar apktool_2.1.1.jar d ****.apk(因为我们最终都是要在smali的文件里更改然后重新打包的)
先看一眼apktool 反编译出的 manifest(用的notepad++)
注意我选中的,首先,它请求的internet的权限,而这款软件按道理不需要这个权限,用它来干嘛呢?就是获取广告。。。所以,粗暴一点的话,直接删去这里的第二个permission就可以了但是,打包签名再安装之后,我们会发现,广告是不见了,但是下面会有警告的字样。。洁癖的我们是不允许出现这种情况的。
于是我们继续看,下面有一个activity,包名里面com.google.android.gms.ads.AdActivity。ad就是广告的意思,所以它摆明了告诉我们,这里是个广告,于是我第一次在想,直接把这里咔嚓了会怎么样?
还没想完,我反应过来,要是这里没有注册activity,后面要是出现调用,这个app岂不是崩溃了,于是我试都没有试,至于把它删掉能不能达到去广告的目的,看官们可以去试一试。
好,下一步。
我们使用winrar这个软件把它解压缩了。(apk本质上是压缩文件,直接解压会得到下面这样的目录)
我们使用dex2jar把classes.dex转换成jar,windows下直接使用 d2j-dex2jar.bat classes.dex 就好然后打开jd-gui,java -jar jd-gui.jar。把刚刚得到的classes-dex2jar.jar打开。
现在我们就开始查看源码吧,首先目录树是这样的
按照套路,广告一定是要有一个view来承载的。这样的view一般会在activity onCreate 的时候出现(这句话我瞎掰的),我们要想去除广告,只需要把这个view的大小设置为0即可
于是我们一个activity接着一个activity的看。但是都没有发现明显的征兆。
无头绪中,我在这个包里面翻看了每一个类的前几行(主要看有没有引用google的包,因为从前面的manifest里,我们可以知道,这里的广告是谷歌的广告)。
很快在com.onetap.bit8painter.a.a这个类里,引用了google的包,接着往下看,天哪。。这函数名也太赤裸裸了。。如下图:
于是我们跟踪这个函数,jd-gui可以直接跳转。看看这个e.a是什么东西:
跟踪之后,我们发现了这段代码。结合e的构造函数,我们可以看出第一个参数是宽,第二个参数是高。并且在构造函数中有对参数的合法性检验,使之必须大于等于0;那么我们直接把所有的尺寸全部改为0就好了。所以我们需要更改的文件是com\google\android\gms\ads 下的e.class
我们回到apktool反编译出的文件夹对应的smali文件是\smali\com\google\android\gms\ads\e.smali
打开之后我们会发现类似于:
const/16 v4, 0x140
new-instance v0, Lcom/google/android/gms/ads/e;
const/16 v1, 0x32
const-string v2, "320x50_mb"
这样的代码片段,每一个参数都是以16进制的形式存进去的,所以我们把类似于这样的所有片段的16进制参数全部改为0x0即可
(注意下面有-0x1 -0x2 也全部改为0x0即可)
完事之后, 进入反编译的根目录 用apktool 打包 java -jar apktool_2.1.1.jar b ./
在dist路径下得到未签名的apk,继续用sign.jar签名 java -jar sign.jar signapk-key.testkey.x509.pem signapk-key.testkey.pk8 未签名.apk
最后得到未签名apk
打开手机的开发者模式,使用 adb.exe install 已签名.apk 即可完成安装(adb是android sdk里的工具,也可以使用其他方式将apk传入手机,直接进行安装,要注意的是,要先将有广告的版本进行卸载)
dex2jar:https://sourceforge.net/projects/dex2jar/files/
jd-gui:http://jd.benow.ca/
最后完成的apk:链接: http://pan.baidu.com/s/1nuMb5Pn 密码: 4dbx
注意:这里的去广告只是把广告的尺寸改没了,但是网络请求仍然会发生。。所以并不是真正的去广告,但是做到这样也是眼不见心不烦了~
点击下载 发表于 2016-6-14 12:00
這個軟件是不是用像馬賽克一樣的東西畫畫呢,沒有看到你的成品
是的,就是画8位像素风格的图像,一点一点的描。前面三个就是我画的{:1_918:} 感谢分享, 如果是免费注册的用户最好不要一直潜水- -会BAN的。 哈哈哈可惜看不懂 这个到底是干嘛的而且 这软件好玩吗?
虽然对我没用,还是支持楼主,感谢分享! 顶一下,不错的内容 分析的挺不错,现在能这样轻松反编译的app还真不多见了 异常感谢反编译不错 虽然对我没用,还是支持楼主,感谢分享! 感谢分享!