本帖最后由 Jxdm 于 2017-5-22 17:28 编辑
本人是半吊子,没有任何的汇编和java语音基础,基本都是百度搜索自学的,还有很多地方都不懂,如果有错误的地方请指出!勿喷!!!~
0x0:
打开软件,几秒后会在底部加载广告
使用Charles抓包,发现有
0x1:
用APKIDE载入,先搜索第一个,发现在fr.smail有许多这样的广告链接,我们删除后编译安装,发现还是会加载广告,很明显,这个不是真正的广告地址;
那搜索第二个,发现ua.smail里有相关的重要信息,双击进去看到有两个跳转
[Asm] 纯文本查看 复制代码 if-nez v0, :cond_0
invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
move-result v1
if-eqz v1, :cond_2
:cond_0
const-string v0, "https://pagead2.googlesyndication.com/pagead/gen_204"
很明显的看出,if-nez v0判断语句是重点,把跳转改为eqz直接往下执行代码,跳过了:cond_0所执行广告的代码
编译安装后打开,发现没有加载广告了。问题来了,特么的白色的框框是什么鬼?手动黑人问号
0x3:
我把AndroidManifest.xml的联网权限删除了,还是有这个框框,顿时,尼玛我满头黑线,心中一万只草泥马在经过,从没接触过这么坑爹的软件
于是就在想,是不是还有广告的代码执行了某一段函数才会生成那一个框的,于是我百度搜索谷歌加载广告的方式,发现了一段很重要的话
banner_ad_unit_id即为admob中创建应用的广告单元id
也就是说,我们可以把这个创建应用的广告单元ID去掉了,它是否就能加载不了这个广告了
0x4:
我们在res/values/strings.xml中搜索banner_ad_unit_id不到,那我们就模糊搜索,搜索unit_id,有
接着我们就在public.xml里搜索admob_unit_id,因为需要给admob_unit_id一个固定的资源ID:0x7f070062
我们搜索这个ID,发现在
我们进去后发现上面有一个跳转
[Asm] 纯文本查看 复制代码 if-nez v0, :cond_0
:goto_0
return-void
:cond_0
new-instance v1, Lcom/google/android/gms/ads/NativeExpressAdView;
invoke-direct {v1, p0}, Lcom/google/android/gms/ads/NativeExpressAdView;-><init>(Landroid/content/Context;)V
const v2, 0x7f070062
cond_0分支代码:
用google的NativeExpressAdView拉取admob的Native广告在google后台设置了自己的ID和大小
若v0=0,则执行:cond_0分歧中的代码,否则执行下一步代码,下一步代码返回空值,也就是说,不执行cond_0分支代码就不会创建广告ID。
我们把跳转eqn,编译后测试,没有了那个白色框框,感觉世界都清净了!
工具下载:
http://pan.stnts.com/s/wirAC3m
结言:
这个软件我弄了两天,因为上班时间,而且也没有基础,这个只提供一种思路,
文中或许会有错误,但请大家包涵,我会及时更正!! |