某英语学习app火龙果解锁PLUS部分功能,有翻译次数限制

查看 33|回复 2
作者:ENENenne   


Screenshot_20241111_212622.jpg (160.8 KB, 下载次数: 0)
下载附件
2024-11-12 13:44 上传



Screenshot_20241111_212910.jpg (172.84 KB, 下载次数: 0)
下载附件
2024-11-12 13:45 上传

真题解锁:arsc搜索“解锁全部试题”


Screenshot_20241111_213151.jpg (596.07 KB, 下载次数: 0)
下载附件
2024-11-12 13:45 上传



Screenshot_20241111_213353.jpg (172.37 KB, 下载次数: 0)
下载附件
2024-11-12 13:46 上传

复制exam_lock_membership_hint然后在classes里搜索exam_lock_membership_hint


IMG_20241111_213533.jpg (236.44 KB, 下载次数: 0)
下载附件
2024-11-12 13:46 上传

点画红圈的第一个


IMG_20241111_213959.jpg (173.32 KB, 下载次数: 0)
下载附件
2024-11-12 13:46 上传

跳转可疑代码canAccess


Screenshot_20241111_220215.jpg (221.71 KB, 下载次数: 0)
下载附件
2024-11-12 13:48 上传



IMG_20241111_220422.jpg (220.35 KB, 下载次数: 0)
下载附件
2024-11-12 13:48 上传

使这个方法直接返回1
在return v1前添加一行const/4 v1, 0x1


Screenshot_20241111_220907.jpg (226.16 KB, 下载次数: 0)
下载附件
2024-11-12 13:48 上传

这样解锁真题就成功了
但是翻译没几句话就要你充会员了


IMG_20241111_221021.jpg (218.27 KB, 下载次数: 0)
下载附件
2024-11-12 13:48 上传

arsc里搜索“查看翻译和讲解”


Screenshot_20241111_221310.jpg (535.33 KB, 下载次数: 0)
下载附件
2024-11-12 13:48 上传

然后在classes里搜check_translation_analysis


IMG_20241111_221450.jpg (226.54 KB, 下载次数: 0)
下载附件
2024-11-12 13:48 上传

找到最后一个导航栏长按转java看


Screenshot_20241112_130045.jpg (160.57 KB, 下载次数: 0)
下载附件
2024-11-12 13:47 上传



IMG_20241112_130350.jpg (220.32 KB, 下载次数: 0)
下载附件
2024-11-12 13:47 上传

这都是提示要升会员的代码所以我往上找


Screenshot_20241112_130504.jpg (208.32 KB, 下载次数: 0)
下载附件
2024-11-12 13:47 上传

长按点击查看调用处,只有一个结果,点进去,转java看


Screenshot_20241112_130607.jpg (157.63 KB, 下载次数: 0)
下载附件
2024-11-12 13:47 上传



Screenshot_20241112_130751.jpg (244.31 KB, 下载次数: 0)
下载附件
2024-11-12 13:47 上传



Screenshot_20241112_130712.jpg (247.95 KB, 下载次数: 0)
下载附件
2024-11-12 13:47 上传



Screenshot_20241112_130941.jpg (344.1 KB, 下载次数: 0)
下载附件
2024-11-12 13:47 上传



Screenshot_20241112_131348.jpg (225.03 KB, 下载次数: 0)
下载附件
2024-11-12 13:47 上传



Screenshot_20241112_131414.jpg (221.58 KB, 下载次数: 0)
下载附件
2024-11-12 13:47 上传

有可疑代码lb.a0,跳转然后a0方法转java


Screenshot_20241112_131455.jpg (198.69 KB, 下载次数: 0)
下载附件
2024-11-12 13:47 上传

所以要让它结果返回true
在return v0前添加const/4 v0, 0x1


IMG_20241112_131657.jpg (206.17 KB, 下载次数: 0)
下载附件
2024-11-12 13:47 上传

然后发现了Y和a0方法内容差不多,就是返回值不同


Screenshot_20241112_131757.jpg (201.8 KB, 下载次数: 0)
下载附件
2024-11-12 13:47 上传

所以改成返回false就行
就是在return v0前添加const/4 v0, 0x0
改完这两个方法一些单词的plus功能就能成功了
但是翻译还是限制数量(一天翻译完10个就不行了)又返回去看


Screenshot_20241112_132127.jpg (408.32 KB, 下载次数: 0)
下载附件
2024-11-12 13:48 上传

长句翻译应该就是itemViewType == 2时的这条路径


IMG_20241112_132425.jpg (389.36 KB, 下载次数: 0)
下载附件
2024-11-12 13:48 上传

然后看这个流程修改了很多地方都没有成功,求求大佬看一下
这个翻译长句每天只能10次,超过次数就提示“查看翻译和讲解”,每天0点才重新开始
下面是转为java的代码
[Java] 纯文本查看 复制代码//
// Decompiled by Jadx (from NP Manager)
//
package com.mobile.shannon.pax.dictionary.sentence;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.camera.camera2.interop.e;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.carlos.voiceline.mylibrary.VoiceLineView;
import com.chad.library.adapter.base.BaseViewHolder;
import com.mobile.shannon.pax.PaxApplication;
import com.mobile.shannon.pax.PaxApplication.a;
import com.mobile.shannon.pax.PaxBaseActivity;
import com.mobile.shannon.pax.R;
import com.mobile.shannon.pax.aigc.r;
import com.mobile.shannon.pax.controllers.ib;
import com.mobile.shannon.pax.controllers.lb;
import com.mobile.shannon.pax.entity.read.ReadMark;
import com.mobile.shannon.pax.entity.user.UserInfo;
import com.mobile.shannon.pax.read.appearance.c;
import com.mobile.shannon.pax.read.readmark.OpenThoughtReplyAdapter;
import com.mobile.shannon.pax.widget.f;
import com.mobile.shannon.pax.widget.getwordtextview.GetWordTextView;
import java.io.File;
import java.util.ArrayList;
import kotlin.jvm.internal.i;
import kotlin.jvm.internal.t;
import kotlin.jvm.internal.x;
import kotlinx.coroutines.a0;
import s6.f1;
import w4.d;
import x0.b;
public final class SentenceMultiFunctionAdapter {
    /* JADX WARNING: Removed duplicated region for block: B:111:0x03ce  */
    /* JADX WARNING: Removed duplicated region for block: B:110:0x03cd  */
    /* JADX WARNING: Removed duplicated region for block: B:144:? A:{SYNTHETIC, RETURN} */
    /* JADX WARNING: Removed duplicated region for block: B:122:0x0408  */
    /* Code decompiled incorrectly, please refer to instructions dump. */
    public final void convert(BaseViewHolder baseViewHolder, Object obj) {
        BaseViewHolder baseViewHolder2 = baseViewHolder;
        w wVar = (w) obj;
        i.f(baseViewHolder2, "helper");
        i.f(wVar, "item");
        int itemViewType = baseViewHolder.getItemViewType();
        int i = 1;
        Object obj2;
        Context context;
        if (itemViewType != 1) {
            CharSequence charSequence = "";
            d dVar;
            TextView textView;
            ViewGroup viewGroup;
            int intValue;
            ImageView imageView;
            if (itemViewType == 2) {
                obj2 = wVar.b;
                dVar = obj2 instanceof d ? (d) obj2 : null;
                if (dVar != null) {
                    TextView textView2;
                    f fVar;
                    t tVar;
                    String str = (String) dVar.c();
                    CharSequence charSequence2 = str == null ? charSequence : str;
                    String str2 = (String) dVar.d();
                    View view = baseViewHolder2.getView(R.id.mCheckBtn);
                    textView = (TextView) baseViewHolder2.getView(R.id.mCheckBtnTv);
                    ViewGroup viewGroup2 = (ViewGroup) baseViewHolder2.getView(R.id.mTranslationLayout);
                    viewGroup = (ViewGroup) baseViewHolder2.getView(R.id.mTranslationLoadingLayout);
                    TextView textView3 = (TextView) baseViewHolder2.getView(R.id.mTranslationTv);
                    ViewGroup viewGroup3 = (ViewGroup) baseViewHolder2.getView(R.id.mAnalysisLayout);
                    TextView textView4 = (TextView) baseViewHolder2.getView(R.id.mAnalysisTv);
                    context = this.mContext;
                    ib.a.getClass();
                    Drawable drawable = ContextCompat.getDrawable(context, ib.i() ? R.drawable.ic_vip_plus_dark : R.drawable.ic_vip_plus_light);
                    i.c(drawable);
                    drawable.setBounds(0, 0, 90, 45);
                    f fVar2 = new f(drawable);
                    lb.a.getClass();
                    if (lb.a0()) {
                        i.e(viewGroup2, "mTranslationLayout");
                        w3.f.s(viewGroup2, true);
                    }
                    if (lb.a0()) {
                        i.e(view, "setupTranslation$lambda$23");
                        w3.f.c(view, true);
                    }
                    view.setOnClickListener(new b(7, this));
                    t tVar2 = new t();
                    t tVar3 = new t();
                    t tVar4 = new t();
                    tVar4.element = true;
                    t tVar5 = tVar4;
                    TextView textView5 = textView4;
                    f fVar3 = fVar2;
                    u uVar = new u(tVar4, textView, this, view, tVar2, tVar3);
                    v vVar = new v(viewGroup2, viewGroup, textView3, fVar3);
                    if ((kotlin.text.i.h1(charSequence2) ^ 1) != 0) {
                        if (lb.a0()) {
                            if (str2 != null) {
                                if (!kotlin.text.i.h1(str2)) {
                                    obj2 = null;
                                    if (obj2 != null) {
                                        vVar.invoke(str2);
                                    }
                                }
                            }
                            obj2 = 1;
                            if (obj2 != null) {
                            }
                        }
                        context = this.mContext;
                        a0 a0Var = context instanceof PaxBaseActivity ? (PaxBaseActivity) context : null;
                        if (a0Var != null) {
                            textView2 = textView5;
                            fVar = fVar3;
                            f1.m0(a0Var, null, new r(this, charSequence2, vVar, uVar, viewGroup, tVar2, null), 3);
                            tVar = new t(viewGroup3, textView2, fVar);
                            if ((kotlin.text.i.h1(charSequence2) ^ 1) == 0) {
                                context = this.mContext;
                                a0 a0Var2 = context instanceof PaxBaseActivity ? (PaxBaseActivity) context : null;
                                if (a0Var2 != null) {
                                    f1.m0(a0Var2, null, new s(charSequence2, tVar5, tVar, uVar, viewGroup3, tVar3, null), 3);
                                    return;
                                }
                                return;
                            }
                            return;
                        }
                    }
                    textView2 = textView5;
                    fVar = fVar3;
                    tVar = new t(viewGroup3, textView2, fVar);
                    if ((kotlin.text.i.h1(charSequence2) ^ 1) == 0) {
                    }
                } else {
                    return;
                }
            } else if (itemViewType == 3) {
                obj2 = wVar.b;
                dVar = obj2 instanceof d ? (d) obj2 : null;
                if (dVar != null) {
                    itemViewType = ((Number) dVar.c()).intValue();
                    intValue = ((Number) dVar.d()).intValue();
                    textView = (TextView) baseViewHolder2.getView(R.id.mThoughtCountTv);
                    TextView textView6 = (TextView) baseViewHolder2.getView(R.id.mQuestionCountTv);
                    i.e(textView, "setupThoughtDivider$lambda$18");
                    w3.f.c(textView, itemViewType  0) {
                        valueOf = String.valueOf(readMark.getLikeCount());
                    } else {
                        PaxApplication paxApplication = PaxApplication.a;
                        valueOf = a.a().getString(R.string.like);
                        i.e(valueOf, "PaxApplication.sApplicat…string.like\n            )");
                    }
                    baseViewHolder2.setText(intValue, valueOf);
                    imageView = (ImageView) baseViewHolder2.getView(R.id.mLikeIv);
                    imageView.setImageResource(readMark.isLike() ? R.drawable.ic_like_pink : R.drawable.ic_like_gray);
                    imageView.setOnClickListener(new d(readMark, this));
                    intValue = R.id.mTimeTv;
                    Long valueOf2 = Long.valueOf(readMark.getCreateTime());
                    if (valueOf2 != null) {
                        charSequence = androidx.activity.result.a.c(valueOf2.longValue(), (long) 1000, "yyyy-MM-dd HH:mm", "millis2String(timestamp * 1000, pattern)");
                    }
                    baseViewHolder2.setText(intValue, charSequence);
                    textView7 = (TextView) baseViewHolder2.getView(R.id.mReplyTv);
                    PaxApplication paxApplication2 = PaxApplication.a;
                    textView7.setText(a.a().getString(R.string.reply));
                    textView7.setOnClickListener(new r(this, readMark, xVar, 5));
                    textView7 = (TextView) baseViewHolder2.getView(R.id.mDeleteBtn);
                    lb.a.getClass();
                    UserInfo userInfo = lb.e;
                    Object obj3 = (userInfo == null || readMark.getUid() != userInfo.getId()) ? null : 1;
                    String str3 = "setupThought$lambda$11";
                    if (obj3 != null) {
                        i.e(textView7, str3);
                        w3.f.s(textView7, true);
                        textView7.setOnClickListener(new r(this, readMark, baseViewHolder2, 6));
                    } else {
                        i.e(textView7, str3);
                        w3.f.c(textView7, true);
                    }
                    TextView textView8 = (TextView) baseViewHolder2.getView(R.id.mExpandTv);
                    String str4 = "setupThought$lambda$13";
                    if (readMark.getReplyList().size() > 2) {
                        i.e(textView8, str4);
                        w3.f.s(textView8, true);
                        if (tVar6.element) {
                            context = this.mContext;
                            i2 = R.string.collapse_replies;
                        } else {
                            context = this.mContext;
                            i2 = R.string.expand_more_replies;
                        }
                        textView8.setText(context.getString(i2));
                        textView8.setOnClickListener(new e(tVar6, textView8, this, xVar, readMark, 0));
                    } else {
                        i.e(textView8, str4);
                        w3.f.c(textView8, true);
                    }
                    RecyclerView recyclerView = (RecyclerView) baseViewHolder2.getView(R.id.mReplyList);
                    recyclerView.setHasFixedSize(true);
                    recyclerView.setLayoutManager(new LinearLayoutManager(this.mContext));
                    i2 = readMark.getReplyList().size();
                    if (i2 = 3) {
                        i = 0;
                    }
                    OpenThoughtReplyAdapter openThoughtReplyAdapter = new OpenThoughtReplyAdapter(i != 0 ? readMark.getReplyList() : readMark.getReplyList().subList(0, 2));
                    xVar.element = openThoughtReplyAdapter;
                    openThoughtReplyAdapter.a = readMark.getCommentId();
                    openThoughtReplyAdapter.setOnItemLongClickListener(new e(this, openThoughtReplyAdapter, 9));
                    openThoughtReplyAdapter.b = new q(readMark);
                    recyclerView.setAdapter(openThoughtReplyAdapter);
                    return;
                }
                return;
            } else if (itemViewType == 5) {
                ViewGroup viewGroup4 = (ViewGroup) baseViewHolder2.getView(R.id.mRecordBtn);
                ViewGroup viewGroup5 = (ViewGroup) baseViewHolder2.getView(R.id.mPressRecordBtn);
                VoiceLineView voiceLineView = (VoiceLineView) baseViewHolder2.getView(R.id.mVoiceLineView);
                viewGroup = (ViewGroup) baseViewHolder2.getView(R.id.mFollowPlayBtn);
                imageView = (ImageView) baseViewHolder2.getView(R.id.mFollowPlayIv1);
                File file = new File(this.mContext.getCacheDir(), "temp_follow_read_audio.amr");
                j jVar = new j(file, imageView);
                t tVar7 = new t();
                x xVar2 = new x();
                xVar2.element = new g(voiceLineView, tVar7, xVar2);
                viewGroup4.setOnTouchListener(new a(this, viewGroup4, viewGroup5, voiceLineView, xVar2, file, tVar7, viewGroup, jVar));
                viewGroup.setOnClickListener(new b(jVar, 0));
                return;
            } else {
                return;
            }
        }
        PaxBaseActivity paxBaseActivity = null;
        obj2 = wVar.b;
        GetWordTextView getWordTextView = (GetWordTextView) baseViewHolder2.getView(R.id.mSentenceTv);
        getWordTextView.setText(obj2 instanceof String ? (String) obj2 : null);
        ArrayList arrayList = com.mobile.shannon.pax.dictionary.f.a;
        context = this.mContext;
        if (context instanceof PaxBaseActivity) {
            paxBaseActivity = (PaxBaseActivity) context;
        }
        com.mobile.shannon.pax.dictionary.f.b(getWordTextView, paxBaseActivity, null, null, null, null, null, null, null, null, 1020);
        c.b(getWordTextView);
    }
}

宋体, 下载次数

youyou199104   

看一看,下载下来学习
AiniWang   

欢迎新人,学习了
您需要登录后才可以回帖 登录 | 立即注册

返回顶部