SSHDroid这个软件是用来在android手机上架设ssh服务器的,这个小应用有两个版本一个免费版,一个pro版。区别就是有无广告。
发现装了Adfree android这个应用之后,SSHDroid就不干活了,说ad被block了,然后就只能选择“退出”或者“购买付费版”。
这个,多少让我有些不爽啊。
如图:提示广告被屏蔽,只能点“退出”或者使用收费版(adfree version):
有了想暴破它的想法了~~于是操刀把它菊花暴了,爽了一把。
在linux下面那个adb硬是没有运行起来,运行以后没有任何输出,不知何故。先在win下把这app搞定吧。
用到的暴菊工具:
爪机注意开启调试。
从机器里把程序拖出来(不知道app文件名就先用ls找一下):
代码:
adb pull /data/app/berserker.android.apps.sshdroid-1.apk
代码:
apktool d berserker.android.apps.sshdroid-1.apk reversing
代码:
cd reversing
zhiwei.li给出了三种方案来搞定ad:
进入smali目录,用emeditor随便打开一个.smali文件,在此目录及其子目录搜索 /etc/hosts
共找到两个:
代码:
const-string v3, "admob"
代码:
const-string v3, "admob" invoke-virtual {v2, v3}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z move-result v2 if-eqz v2, :cond_0 sget-object v1, Ljava/lang/Boolean;->TRUE:Ljava/lang/Boolean; sput-object v1, Lberserker/android/a/a;->b:Ljava/lang/Boolean;
这里可以修改常量,也可以修改if-eqz为if-nez .我是采用的修改常量,
把前面的
代码:
const-string v3, "admob"
代码:
const-string v3, "notexistsdomain"
因为这样修改的话,不管有没有修改hosts文件的情况都不会有问题的。比较通用。
这里的修改是基于阅读反汇编代码的,并不是胡乱修改。
对于android的JVM 指令集,可看查看这里,非常详细:
http://pallergabor.uw.hu/androidblog/dalvik_opcodes.html
http://loda.hala01.com/dalvik-opcodes/
http://thinkinmylife.iteye.com/blog/443900
第二个文件看了下,没什么要修改的地方。
然后就是修改资源文件了。
到res/layout目录下面,一看到banner.xml和hosts_alert_dialog.xml这两个文件的名字你就大概知道它是干什么的了。
把其高度修改为0即可。
如:
代码:
android:layout_height="0.0dip"
对apk重新打包
代码:
apktools b reversing cracked_berserker.android.apps.sshdroid-1.apk
代码:
jarsigner -keystrore ~/.android/debug.keystore cracked_berserker.android.apps.sshdroid-1.apk androiddebugkey
我这里图方便,直接用auto-sign啦,把破解后的文件托动到Sign.bat上即可生成
代码:
cracked_berserker.android.apps.sshdroid-1.apk.apk
卸载原版软件,也可以在手机上操作,用命令:
代码:
adb uninstall berserker.android.apps.sshdroid-1
代码:
adb isntall berserker.android.apps.sshdroid-1.apk