【初识jeb&动态调试(课后作业)】《安卓逆向这档事》

随便输入一个
package com.p002zj.wuaipojie.p003ui;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.p002zj.wuaipojie.Encode;
import com.p002zj.wuaipojie.util.Base64Utils;
import com.p002zj.wuaipojie.util.SPUtils;
import com.p002zj.wuaipojif.R;
import kotlin.Metadata;
import kotlin.jvm.internal.Intrinsics;
import kotlin.text.Charsets;
import kotlin.text.StringsKt;
/* compiled from: ChallengeFourth.kt */
@Metadata(m34d1 = {"\u0000$\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0000\n\u0002\u0010\u000e\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u000e\u0010\u0003\u001a\u00020\u00042\u0006\u0010\u0005\u001a\u00020\u0006J\u0012\u0010\u0007\u001a\u00020\b2\b\u0010\t\u001a\u0004\u0018\u00010\nH\u0014¨\u0006\u000b"}, m35d2 = {"Lcom/zj/wuaipojie/ui/ChallengeFourth;", "Landroidx/appcompat/app/AppCompatActivity;", "()V", "check", "", "str", "", "onCreate", "", "savedInstanceState", "Landroid/os/Bundle;", "app_release"}, m36k = 1, m37mv = {1, 7, 1}, m39xi = 48)
/* loaded from: classes.dex */
public final class ChallengeFourth extends AppCompatActivity {
    @Override // androidx.fragment.app.FragmentActivity, androidx.activity.ComponentActivity, androidx.core.app.ComponentActivity, android.app.Activity
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_challenge_fourth);
        Button button = (Button) findViewById(R.id.check_btn);
        final EditText editText = (EditText) findViewById(R.id.edit_check);
        button.setOnClickListener(new View.OnClickListener() { // from class: com.zj.wuaipojie.ui.ChallengeFourth$$ExternalSyntheticLambda0
            @Override // android.view.View.OnClickListener
            public final void onClick(View view) {
                ChallengeFourth.m94onCreate$lambda0(ChallengeFourth.this, editText, view);
            }
        });
    }
    /* JADX INFO: Access modifiers changed from: private */
    /* renamed from: onCreate$lambda-0, reason: not valid java name */
    public static final void m94onCreate$lambda0(ChallengeFourth challengeFourth, EditText editText, View view) {
        if (challengeFourth.check(editText.getText().toString())) {
            ChallengeFourth challengeFourth2 = challengeFourth;
            Toast.makeText(challengeFourth2, "恭喜你,密钥正确!", 1).show();
            SPUtils.INSTANCE.saveInt(challengeFourth2, "level", 3);
            return;
        }
        Toast.makeText(challengeFourth, "密钥错误哦,再想想!", 1).show();
    }
    public final boolean check(String str) {
        int i = 0;
        if (!StringsKt.startsWith$default(str, "flag{", false, 2, (Object) null) || !StringsKt.endsWith$default(str, "}", false, 2, (Object) null)) {
            return false;
        }
        String substring = str.substring(5, str.length() - 1);
        Intrinsics.checkNotNullExpressionValue(substring, "this as java.lang.String…ing(startIndex, endIndex)");
        String string = SPUtils.INSTANCE.getString(this, "id", "");
        Integer valueOf = string != null ? Integer.valueOf(string.length()) : null;
        int i2 = 1000;
        Intrinsics.checkNotNull(valueOf);
        int intValue = valueOf.intValue();
        if (intValue >= 0) {
            while (true) {
                i2 -= 7;
                if (i == intValue) {
                    break;
                }
                i++;
            }
        }
        String encode = Encode.encode(string + i2);
        Base64Utils base64Utils = Base64Utils.INSTANCE;
        byte[] bytes = encode.getBytes(Charsets.UTF_8);
        Intrinsics.checkNotNullExpressionValue(bytes, "this as java.lang.String).getBytes(charset)");
        return Intrinsics.areEqual(substring, base64Utils.encodeToString(bytes));
    }
}
从文件里读取id,经过一定处理和输入的做比较
核心return Intrinsics.areEqual(substring, base64Utils.encodeToString(bytes));
简单粗暴
android hooking watch class_method com.zj.wuaipojie.util.Base64Utils.encodeToString --dump-args --dump-
backtrace --dump-return

over
                    
                
                
            
        
浙公网安备 33010602011771号