硕士生
 
- 金币
- 1048
- 好评
- 9
- 信誉
- 101
|
昨晚就想搞得但是睡觉困死了,所以今天起来搞早上,720/2需要正则修复脱壳,不过讲解多了,会员不讲,登录来讲主要一下
1.打开dex++全选dex,进入搜索常量选择过滤常量,搜索点击登录选择第二个结果有两个
2.进去后,发现一长串代码看的眼花?转JAVA看一看,JAVA代码如下
- package com.voice.wendell.ui.fragment;
- import android.text.TextUtils;
- import android.util.Log;
- import com.bumptech.glide.Glide;
- import com.voice.wendell.base.BaseFragment;
- import com.voice.wendell.paymodule.UserInfoUtil;
- import com.voice.wendell.util.VipUtils;
- public class VoiceMeFragment extends BaseFragment {
- private void updateData() {
- if (!TextUtils.isEmpty(UserInfoUtil.getUserName())) {
- Glide.with(this).load(UserInfoUtil.getHeadUrl()).placeholder(0x7f0d003d).error(0x7f0d003d).into(this.binding.imgUserHead);
- this.binding.tvUserName.setText(UserInfoUtil.getUserName());
- this.binding.imgMineSetting.setVisibility(0);
- } else {
- Glide.with(this).load(0x7f0d003d).into(this.binding.imgUserHead);
- this.binding.tvUserName.setText("点击登录");
- this.binding.imgMineSetting.setVisibility(4);
- }
- if (VipUtils.isVip()) {
- this.binding.imgUserVipFlag.setVisibility(0);
- this.binding.tvBtnVip.setVisibility(4);
- this.binding.tvVipText.setText("您已开通会员");
- this.binding.layoutVip.setVisibility(0);
- this.binding.tvVipTime.setVisibility(0);
- Log.e("TAG", "updateData: " + VipUtils.getVipExpireTime());
- this.binding.tvVipTime.setText("会员到期时间: " + VipUtils.getTimeWithYMH(VipUtils.getVipExpireTime()));
- } else {
- this.binding.imgUserVipFlag.setVisibility(8);
- this.binding.tvBtnVip.setText("立即开通");
- this.binding.tvBtnVip.setVisibility(0);
- this.binding.tvVipText.setText("开通会员畅享更多特权");
- this.binding.tvVipTime.setVisibility(8);
- }
- if (VipUtils.isShowVip()) {
- this.binding.layoutVip.setVisibility(0);
- } else {
- this.binding.imgUserVipFlag.setVisibility(8);
- this.binding.layoutVip.setVisibility(8);
- this.binding.tvVipTime.setVisibility(8);
- }
- initRVSetting1();
- initRVSetting2();
- }
- }
复制代码
找不出与登录有关的代码?扔给AI分析一下,AI给的模棱两可,但是给出了- 已登录:显示用户头像(Glide 加载 UserInfoUtil 的头像地址)、用户名,显示设置图标( visibility=0 即显示)这个分析,可以知道加载已登录账号的东西,但我们现在还是未登录,不管
3.smali代码扔给AI看看
- .method private updateData()V
- .registers 6
- .line 223
- invoke-static {}, Lcom/voice/wendell/paymodule/UserInfoUtil;->getUserName()Ljava/lang/String;
- move-result-object v0
- invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
- move-result v0
- const/4 v1, 0x4
- const v2, 0x7f0d003d
- const/4 v3, 0x0
- if-nez v0, :cond_41
- .line 224
- invoke-static {p0}, Lcom/bumptech/glide/Glide;->with(Landroidx/fragment/app/Fragment;)Lcom/bumptech/glide/RequestManager;
- move-result-object v0
- .line 225
- invoke-static {}, Lcom/voice/wendell/paymodule/UserInfoUtil;->getHeadUrl()Ljava/lang/String;
- move-result-object v4
- invoke-virtual {v0, v4}, Lcom/bumptech/glide/RequestManager;->load(Ljava/lang/String;)Lcom/bumptech/glide/RequestBuilder;
- move-result-object v0
- .line 226
- invoke-virtual {v0, v2}, Lcom/bumptech/glide/RequestBuilder;->placeholder(I)Lcom/bumptech/glide/request/BaseRequestOptions;
- move-result-object v0
- check-cast v0, Lcom/bumptech/glide/RequestBuilder;
- .line 227
- invoke-virtual {v0, v2}, Lcom/bumptech/glide/RequestBuilder;->error(I)Lcom/bumptech/glide/request/BaseRequestOptions;
- move-result-object v0
- check-cast v0, Lcom/bumptech/glide/RequestBuilder;
- iget-object v2, p0, Lcom/voice/wendell/ui/fragment/VoiceMeFragment;->binding:Lcom/voice/wendell/databinding/FragmentVoiceMeNewBinding;
- iget-object v2, v2, Lcom/voice/wendell/databinding/FragmentVoiceMeNewBinding;->imgUserHead:Lcom/google/android/material/imageview/ShapeableImageView;
- .line 228
- invoke-virtual {v0, v2}, Lcom/bumptech/glide/RequestBuilder;->into(Landroid/widget/ImageView;)Lcom/bumptech/glide/request/target/ViewTarget;
- .line 229
- iget-object v0, p0, Lcom/voice/wendell/ui/fragment/VoiceMeFragment;->binding:Lcom/voice/wendell/databinding/FragmentVoiceMeNewBinding;
- iget-object v0, v0, Lcom/voice/wendell/databinding/FragmentVoiceMeNewBinding;->tvUserName:Landroid/widget/TextView;
- invoke-static {}, Lcom/voice/wendell/paymodule/UserInfoUtil;->getUserName()Ljava/lang/String;
- move-result-object v2
- invoke-virtual {v0, v2}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
- .line 230
- iget-object v0, p0, Lcom/voice/wendell/ui/fragment/VoiceMeFragment;->binding:Lcom/voice/wendell/databinding/FragmentVoiceMeNewBinding;
- iget-object v0, v0, Lcom/voice/wendell/databinding/FragmentVoiceMeNewBinding;->imgMineSetting:Landroid/widget/ImageView;
- invoke-virtual {v0, v3}, Landroid/widget/ImageView;->setVisibility(I)V
- goto :goto_65
- .line 232
- :cond_41
- invoke-static {p0}, Lcom/bumptech/glide/Glide;->with(Landroidx/fragment/app/Fragment;)Lcom/bumptech/glide/RequestManager;
- move-result-object v0
- invoke-static {v2}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
- move-result-object v2
- invoke-virtual {v0, v2}, Lcom/bumptech/glide/RequestManager;->load(Ljava/lang/Integer;)Lcom/bumptech/glide/RequestBuilder;
- move-result-object v0
- iget-object v2, p0, Lcom/voice/wendell/ui/fragment/VoiceMeFragment;->binding:Lcom/voice/wendell/databinding/FragmentVoiceMeNewBinding;
- iget-object v2, v2, Lcom/voice/wendell/databinding/FragmentVoiceMeNewBinding;->imgUserHead:Lcom/google/android/material/imageview/ShapeableImageView;
- invoke-virtual {v0, v2}, Lcom/bumptech/glide/RequestBuilder;->into(Landroid/widget/ImageView;)Lcom/bumptech/glide/request/target/ViewTarget;
- .line 233
- iget-object v0, p0, Lcom/voice/wendell/ui/fragment/VoiceMeFragment;->binding:Lcom/voice/wendell/databinding/FragmentVoiceMeNewBinding;
- iget-object v0, v0, Lcom/voice/wendell/databinding/FragmentVoiceMeNewBinding;->tvUserName:Landroid/widget/TextView;
- const-string/jumbo v2, "点击登录"
- invoke-virtual {v0, v2}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
- .line 234
- iget-object v0, p0, Lcom/voice/wendell/ui/fragment/VoiceMeFragment;->binding:Lcom/voice/wendell/databinding/FragmentVoiceMeNewBinding;
- iget-object v0, v0, Lcom/voice/wendell/databinding/FragmentVoiceMeNewBinding;->imgMineSetting:Landroid/widget/ImageView;
- invoke-virtual {v0, v1}, Landroid/widget/ImageView;->setVisibility(I)V
复制代码
代码就是这里面的,豆包给出了回复,如下
- 1. 加载用户头像(用 UserInfoUtil.getHeadUrl() 的地址,默认图占位):
-
-
-
- 2. 显示用户名到文本控件:
-
-
-
- 3. 显示设置图标( setVisibility(0) 即 VISIBLE):
-
-
-
- 简单说:用户名非空 → 加载用户头像+显示用户名+显示设置图标,这三组操作共同对应“账户已登录”的显示逻辑。
复制代码
豆包说是getUsername不为空就是已登录状态并且会带动下面已登录的代码那我们直接跳转到getUsername的界面
- const-string/jumbo v0, "user_name"
- const-string v1, ""
复制代码
已经为我们写好了,直接在const-string v1,""的冒号里写入自己想要的内容就可以了保存退出安装即可
成品图: |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|