风绕柳絮轻敲雪 发表于 2019-10-20 12:17

简单破解某秀录屏软件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



不懂的可以问我.....

风绕柳絮轻敲雪 发表于 2019-10-20 12:45

ID0617 发表于 2019-10-20 12:37
1.楼主,小弟小白一枚,想问一下需要哪些软件,需要Java吗?
2.反编译是怎么操作的?apk解压完后哪些文件 ...

电脑上用jadx或者jeb手机上可以用MT管理器

ID0617 发表于 2019-10-20 14:55

ID0617 发表于 2019-10-20 12:37

qqtanhaohua 发表于 2019-10-20 12:42

好厉害的样子{:1_937:}

wenwxpfh 发表于 2019-10-20 12:45

好厉害,不过我用不上这个 我懒得录QAQ

yp1155 发表于 2019-10-20 12:51

真是高手啊!

19959912329 发表于 2019-10-20 12:54

虽然不懂,但是好像很腻害的样子,小白学习了~ 顶一下~

心在天上飞 发表于 2019-10-20 13:03

学习了,感谢分享

lep52 发表于 2019-10-20 13:09

厉害,心里佩服一下

571220 发表于 2019-10-20 13:10


学习了,感谢分享
页: [1] 2 3 4 5 6 7
查看完整版本: 简单破解某秀录屏软件VIP