简单破解某秀录屏软件VIP
本帖最后由 风绕柳絮轻敲雪 于 2019-11-6 18:38 编辑1.进软件就看到一个大大的免费试用的布局,就从这里入手了
2.用AS的视图分析工具Layout Inspector 看一下该处的布局,是一个在Fragment下叫rl_vip_buy_home的RelativeLayout布局
3.在反编译的代码里搜索该ID,我们可以看到该视图的对象是在一个Fragment类下的onCreateView方法里被创建
代码如下
public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) {
View inflate = layoutInflater.inflate(R$layout.fragment_record_video_list, viewGroup, false);
this.g = ButterKnife.a(this, inflate);
this.j = (ListView) inflate.findViewById(R$id.lv_video_list);
this.w = (RelativeLayout) inflate.findViewById(R$id.rl_video_empty);
this.m = (RelativeLayout) inflate.findViewById(R$id.rl_edit_bar);
this.o = (LinearLayout) inflate.findViewById(R$id.ll_cancel_select);
this.n = (LinearLayout) inflate.findViewById(R$id.ll_del_select);
this.p = (TextView) inflate.findViewById(R$id.tv_select_num);
this.q = (TextView) inflate.findViewById(R$id.tv_total_num);
this.j.setChoiceMode(2);
View inflate2 = LayoutInflater.from(getActivity()).inflate(R$layout.layout_video_list_header, null);
this.h = (RelativeLayout) inflate2.findViewById(R$id.rl_vip_buy_home); //rl_vip_buy_home的视图对象被创建
this.i = (RobotoBoldTextView) inflate2.findViewById(R$id.tv_vip_vrecoder);
this.j.addHeaderView(inflate2);
ListView listView = this.j;
listView.setPadding(0, kc.a(listView.getContext(), 10), 0, 0);
this.j.setClipToPadding(false);
this.k = c.a(getActivity());
if (!(this.j == null || this.k == null || ContextCompat.checkSelfPermission(inflate.getContext(), "android.permission.WRITE_EXTERNAL_STORAGE") != 0)) {
this.v.sendEmptyMessage(1);
}
j();
if (c.e.d.c.b(this.x).booleanValue()) {
this.h.setVisibility(8); //rl_vip_buy_home的视图对象被隐藏
}
n();
k();
e.a().c(this);
return inflate;
}
4.通过上面的代码可以看到有一个对视图是否隐藏的判断,我们跳转到c.e.d.c下的b方法看看,从代码可以看出布尔对象的主要来源还是下面的最后返回的a方法,跳转过去
public static Boolean b(Context context) {
if (context == null) {
return Boolean.valueOf(false);
}
return a(context);
}
5.简单看下a方法的的代码,就是在user_info这个数据文件里读取一下google_play_sub_1001的布尔对象,如果存在google_play_sub_1001,则返回其对应的值,否则返回false(其实如果遇到那种其它地方没有写入的话,你可以直接在/data/data/包名/shared_prefs/找到储存的xml文件,打开直接修改就行了
public static Boolean a(Context context) {
return Boolean.valueOf(context.getSharedPreferences("user_info", 0).getBoolean("google_play_sub_1001", false));
}
6.它不就是想要个布尔对象吗,那我给它不就是了,结果无非就是 Boolean.valueOf(true)和Boolean.valueOf(false),修改如下
public static Boolean a(Context context) {
return Boolean.valueOf(true);
}
smali代码修改如下
const/4 p0, 0x1
invoke-static {p0}, Ljava/lang/Boolean;->valueOf(Z)Ljava/lang/Boolean;
move-result-object p0
return-object p0
原版下载地址:
https://www.lanzouj.com/i6vdcre
不懂的可以问我..... ID0617 发表于 2019-10-20 12:37
1.楼主,小弟小白一枚,想问一下需要哪些软件,需要Java吗?
2.反编译是怎么操作的?apk解压完后哪些文件 ...
电脑上用jadx或者jeb手机上可以用MT管理器 好厉害的样子{:1_937:} 好厉害,不过我用不上这个 我懒得录QAQ 真是高手啊! 虽然不懂,但是好像很腻害的样子,小白学习了~ 顶一下~ 学习了,感谢分享 厉害,心里佩服一下
学习了,感谢分享