新手小白抖*逆向学习探索(去内部广告)-第二弹
上一章电梯:
新手小白抖逆向学习探索(去抖广告)
https://www.52pojie.cn/thread-1954379-1-1.html
(出处: 吾爱破解论坛)

image-20240814092327915.png (43.61 KB, 下载次数: 0)
下载附件
2024-8-14 20:10 上传
2、软件分析

image-20240814111701084.png (250.62 KB, 下载次数: 0)
下载附件
2024-8-14 20:10 上传
在上一集,我已经把开屏广告搞定了,打开后,又是两个弹窗广告加一个系统公告,还必须要手动关闭才可以。这一集就干它

image-20240814192417468.png (116.02 KB, 下载次数: 0)
下载附件
2024-8-14 20:11 上传

image-20240814192505751.png (94.77 KB, 下载次数: 0)
下载附件
2024-8-14 20:11 上传

image-20240814192544189.png (125 KB, 下载次数: 0)
下载附件
2024-8-14 20:11 上传
3、开干!根据论坛新手指导《安卓逆向那档事》广告浮窗就不是看activity,而是用算法助手日志锁定堆栈。然后把show方法干掉。

image-20240814193220072.png (78.9 KB, 下载次数: 0)
下载附件
2024-8-14 20:11 上传
总共四个弹窗,第一个弹窗是启动窗口,后面三个才是,现在看第一个堆栈

image-20240814193343818.png (132.08 KB, 下载次数: 0)
下载附件
2024-8-14 20:11 上传
第一个弹窗黑丝小姐姐,com.niming.framework.base.a.onStart,使用jadex看下,锁定关键show函数。

image-20240814193655429.png (33.34 KB, 下载次数: 1)
下载附件
2024-8-14 20:11 上传
public int show(m transaction, String tag) { InterfaceC0335a interfaceC0335a = this.J0; if (interfaceC0335a != null) { interfaceC0335a.b(); } return super.show(transaction, tag); } @Override // androidx.viewpager.widget.b.a, androidx.fragment.app.b public void show(androidx.fragment.app.g manager, String tag) { InterfaceC0335a interfaceC0335a = this.J0; if (interfaceC0335a != null) { interfaceC0335a.b(); } super.show(manager, tag); }嗯,两个,本人java菜鸡,只知道可以两个函数重构,但是这个黑丝小姐姐到底是那个show出来的????
本着宁杀错,不放过原则。计划将show1(上面的那个)
return super.show(transaction, tag); 改为 return 1;//毕竟还是有返回值,给一个象征一下吧

image-20240814195718050.png (120.09 KB, 下载次数: 0)
下载附件
2024-8-14 20:11 上传
下面的直接清空,反正也没有返回值
super.show(manager, tag);

image-20240814195618271.png (106.78 KB, 下载次数: 0)
下载附件
2024-8-14 20:11 上传
保存-编译-签字-打包-安装
经过测试,3个全军覆没,看来用的是一个函数去生成的。
4、回顾有朋友可能会有疑问,调用堆栈不是com.niming.framework.base.a.onStart里面的onstart函数,那就多看看他在干什么?
public void onStart() { //调用父类onstart函数 super.onStart(); //生成一个window窗口 Window window = getDialog().getWindow(); if (window != null) { //设置窗口为全透明 window.setBackgroundDrawable(new ColorDrawable(0)); //提取窗口属性参数 WindowManager.LayoutParams layoutParams = window.getAttributes(); if (Z()) { //设置动画参数 layoutParams.windowAnimations = R.style.BottomDialogFragmentAnimation; } //设置动画宽 layoutParams.width = W(getActivity()); //设置动画高 layoutParams.height = I(); //设置动画遮罩 layoutParams.dimAmount = R(); //设置动画重力 layoutParams.gravity = T(); //生效以上属性 window.setAttributes(layoutParams); } }最开始的时候,我以为我需要修改的程序是这里,但是经过实验,发现清空了这里面的函数,会造成函数出错,我个人认为这里其实不是创建广告,而是创建广告的画布,后面的程序在这个画布上画上小姐姐,这样就知道为什么会报错了,画布都没有了,画的时候肯定报错,也不知道这样理解是否正确。
public Dialog onCreateDialog(Bundle savedInstanceState) { return super.onCreateDialog(savedInstanceState); } @Override // androidx.fragment.app.Fragment @Nullable public View onCreateView(LayoutInflater inflater, @nullable ViewGroup container, @Nullable Bundle savedInstanceState) { Bundle bundle = getArguments(); if (bundle != null) { Y(bundle); } View view = K(inflater, container); return view; }经过我的推断,应该这个程序就是在画布上创建黑丝小姐姐的函数。为什么会有两个,
经过百度:使用 DialogFragment 至少需要实现 onCreateView 或者 onCreateDialog 方法,这俩个是二选一,所以就能理解为什么onCreateDialog函数只是个皮包,并没有重写。
抖*去广告系列结束啦,感谢各位大大的帮助,后面会继续给大家更新小白学习系列。











查看全部评分