本帖最后由 越狱 于 2015-11-26 15:33 编辑
分析某视频软件加载方案和去广告原理
0x1
用到的工具:
AndroidKiller
eclipse
jd-gui
Android逆向助手
0x2
拿到APK后首先想到的是是否有签名验证,因此用逆向助手重新签名安装或者用AK回编译安装后,应用均可以正常使用,没有签名验证。
0x3
安装腾讯视频到手机上或者模拟器上,打开eclipse,运行应用,看是否有输出,这个想法是看了淡然大神的帖子http://blog.csdn.net/zihao2012/article/details/44178725收到的启发
发现logcat中没有输出,具体为什么要看是否有输出,请看淡然大神的帖子,我就不详细说了。没有输出一定是由一个方法来控制它的显示与否的开关, 0x4 经过分析Java代码,看到有一个
“TENCENT_AD_”的TAG,搜索此字符串, 0x5 没有什么有价值的东西,往上或者往下翻一翻,哎,眼前一亮,感觉这个应该是判断log是否显示的, 将eqz改为nez,再看log 0x6 可以看到有log输出了,然后搜索isOpen 将v0置为真即可,如图,将0改为1,回编可以看到isOpen变为true,并且有了其他的输出内容。
0x7 随便点击一个视频,让广告进行播放,再进入DDMS看log,发现有“httpGetXml url”这一项,这很明显是请求URL,再AK中搜索“httpGetXml url” 如图: 可以看到URL即为寄存器v11的内容,往上看,将v11赋空或者其他无关的字符串地址即可。 再次回编译,安装到手机运行,广告已经去除,大家可以愉快的看视频了。 经测试,华为和小米的手机都已成功。 小白一个,第一次发帖,如果有什么没说清楚的,或者有什么错误,还请勿喷。 此贴谨针对跟我一样的小白,大神可以绕过了。
成品就不再发了,自己动手一次会收获很多。(以前自己看帖子,觉得很简单,动手会出很多问题)
|