Anonymous
Как изменить переменные-члены smali
Сообщение
Anonymous » 23 июл 2024, 14:13
Я пытаюсь перепроектировать APK (просто для изучения) и хочу, чтобы программа считала меня VIP. Кажется, я нашел основную логику
Код: Выделить всё
method private final updateUserInfo(Lshop/ewcpx/xjnmgu/bvxddr/bean/ConsumerBean;)V
.registers 5
.line 1
invoke-virtual {p0}, Ln/FK;->getBinding()Landroidx/viewbinding/ViewBinding;
move-result-object v0
check-cast v0, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding;
iget-object v0, v0, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding;->a0qlLp:Landroid/widget/TextView;
invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/ConsumerBean;->getNickname()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
.line 2
invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/ConsumerBean;->getMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;
move-result-object v0
invoke-virtual {v0}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->getConsumerMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;
move-result-object v0
invoke-virtual {v0}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;->getLevel()I
move-result v0
invoke-virtual {p0}, Ln/FK;->getBinding()Landroidx/viewbinding/ViewBinding;
move-result-object v1
check-cast v1, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding;
iget-object v1, v1, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding;->a0cDM:Landroid/widget/ImageView;
invoke-static {v0, v1}, Lshop/ahhnr/dws/esqq/util/a02Bw;->a0S(ILandroid/widget/ImageView;)V
.line 3
invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/ConsumerBean;->getMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;
move-result-object v0
invoke-virtual {v0}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->getConsumerMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;
move-result-object v0
invoke-virtual {v0}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;->getLevel()I
move-result v0
if-nez v0, :cond_42
.line 4
invoke-virtual {p0}, Ln/FK;->getBinding()Landroidx/viewbinding/ViewBinding;
move-result-object p1
check-cast p1, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding;
iget-object p1, p1, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding;->a0ES:Landroid/widget/TextView;
const-string v0, "\u60a8\u5f53\u524d\u8fd8\u4e0d\u662f\u4f1a\u5458"
invoke-virtual {p1, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
goto :goto_73
.line 5
:cond_42
invoke-virtual {p0}, Ln/FK;->getBinding()Landroidx/viewbinding/ViewBinding;
move-result-object v0
check-cast v0, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding;
iget-object v0, v0, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding;->a0ES:Landroid/widget/TextView;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;->()V
const-string v2, "\u4f1a\u5458\u5c06\u4e8e"
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/ConsumerBean;->getMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;
move-result-object p1
invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->getConsumerMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;
move-result-object p1
invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;->getFinalTime()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean$FinalTimeBeanX;
move-result-object p1
invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean$FinalTimeBeanX;->getLeftDay()I
move-result p1
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string p1, "\u5929\u540e\u5230\u671f"
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
invoke-virtual {v0, p1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V
:goto_73
return-void
.end method
Я думаю, что мне следует изменить методы getMember, getConsumerMember и getLevel одновременно, но первые два принимают переменную-член, и я не знаю, как ее изменить.< /p>
Код: Выделить всё
# classes2.dex
.class public Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;
.super Ljava/lang/Object;
.source "MemberBean.java"
# interfaces
.implements Ljava/io/Serializable;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;,
Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$CreatorMemberBean;
}
.end annotation
# instance fields
.field private consumerMember:Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;
.field private createBoy:Z
.field private creatorMember:Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$CreatorMemberBean;
# direct methods
.method public constructor ()V
.registers 1
.line 1
invoke-direct {p0}, Ljava/lang/Object;->()V
return-void
.end method
# virtual methods
.method public getConsumerMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;
.registers 2
.line 1
iget-object v0, p0, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->consumerMember:Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;
return-object v0
.end method
.method public getCreatorMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$CreatorMemberBean;
.registers 2
.line 1
iget-object v0, p0, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->creatorMember:Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$CreatorMemberBean;
return-object v0
.end method
.method public isCreateBoy()Z
.registers 2
.line 1
iget-boolean v0, p0, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->createBoy:Z
return v0
.end method
.method public setConsumerMember(Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;)V
.registers 2
.line 1
iput-object p1, p0, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->consumerMember:Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;
return-void
.end method
.method public setCreateBoy(Z)V
.registers 3
const/4 p1, 0x1
iput-boolean p1, p0, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->createBoy:Z
return-void
.end method
.method public setCreatorMember(Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$CreatorMemberBean;)V
.registers 2
.line 1
iput-object p1, p0, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->creatorMember:Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$CreatorMemberBean;
return-void
.end method
понятия не имею
извините за мой английский
я использую Google Translate
Однажды я if-nez v0, :cond_42 присвоил значению v0 значение 1. Когда я его скомпилировал, он вылетел на определенной странице. Я думаю, что он определил мой уровень участника, и я все еще был обычным пользователем. Даже после того, как я удалил функцию killprocess, она также вылетела.
Мне сложно точно описать мою проблему
Я успешно изменил часть getNickname на то, что хочу, это очень просто :>
кстати, простите меня, если это глупый вопрос, я никогда не изучал разработку Android или Java, я буду учиться медленно, и я также хочу попрактиковаться в этом как можно скорее
Подробнее здесь:
https://stackoverflow.com/questions/784 ... -variables
1721733184
Anonymous
Я пытаюсь перепроектировать APK (просто для изучения) и хочу, чтобы программа считала меня VIP. Кажется, я нашел основную логику [code]method private final updateUserInfo(Lshop/ewcpx/xjnmgu/bvxddr/bean/ConsumerBean;)V .registers 5 .line 1 invoke-virtual {p0}, Ln/FK;->getBinding()Landroidx/viewbinding/ViewBinding; move-result-object v0 check-cast v0, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding; iget-object v0, v0, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding;->a0qlLp:Landroid/widget/TextView; invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/ConsumerBean;->getNickname()Ljava/lang/String; move-result-object v1 invoke-virtual {v0, v1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V .line 2 invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/ConsumerBean;->getMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean; move-result-object v0 invoke-virtual {v0}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->getConsumerMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean; move-result-object v0 invoke-virtual {v0}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;->getLevel()I move-result v0 invoke-virtual {p0}, Ln/FK;->getBinding()Landroidx/viewbinding/ViewBinding; move-result-object v1 check-cast v1, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding; iget-object v1, v1, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding;->a0cDM:Landroid/widget/ImageView; invoke-static {v0, v1}, Lshop/ahhnr/dws/esqq/util/a02Bw;->a0S(ILandroid/widget/ImageView;)V .line 3 invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/ConsumerBean;->getMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean; move-result-object v0 invoke-virtual {v0}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->getConsumerMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean; move-result-object v0 invoke-virtual {v0}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;->getLevel()I move-result v0 if-nez v0, :cond_42 .line 4 invoke-virtual {p0}, Ln/FK;->getBinding()Landroidx/viewbinding/ViewBinding; move-result-object p1 check-cast p1, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding; iget-object p1, p1, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding;->a0ES:Landroid/widget/TextView; const-string v0, "\u60a8\u5f53\u524d\u8fd8\u4e0d\u662f\u4f1a\u5458" invoke-virtual {p1, v0}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V goto :goto_73 .line 5 :cond_42 invoke-virtual {p0}, Ln/FK;->getBinding()Landroidx/viewbinding/ViewBinding; move-result-object v0 check-cast v0, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding; iget-object v0, v0, Ltop/acmb/aton/apwrxt/databinding/FragmentVipBinding;->a0ES:Landroid/widget/TextView; new-instance v1, Ljava/lang/StringBuilder; invoke-direct {v1}, Ljava/lang/StringBuilder;->()V const-string v2, "\u4f1a\u5458\u5c06\u4e8e" invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/ConsumerBean;->getMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean; move-result-object p1 invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->getConsumerMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean; move-result-object p1 invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;->getFinalTime()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean$FinalTimeBeanX; move-result-object p1 invoke-virtual {p1}, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean$FinalTimeBeanX;->getLeftDay()I move-result p1 invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder; const-string p1, "\u5929\u540e\u5230\u671f" invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p1 invoke-virtual {v0, p1}, Landroid/widget/TextView;->setText(Ljava/lang/CharSequence;)V :goto_73 return-void .end method [/code] Я думаю, что мне следует изменить методы getMember, getConsumerMember и getLevel одновременно, но первые два принимают переменную-член, и я не знаю, как ее изменить.< /p> [code]# classes2.dex .class public Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean; .super Ljava/lang/Object; .source "MemberBean.java" # interfaces .implements Ljava/io/Serializable; # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$CreatorMemberBean; } .end annotation # instance fields .field private consumerMember:Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean; .field private createBoy:Z .field private creatorMember:Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$CreatorMemberBean; # direct methods .method public constructor ()V .registers 1 .line 1 invoke-direct {p0}, Ljava/lang/Object;->()V return-void .end method # virtual methods .method public getConsumerMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean; .registers 2 .line 1 iget-object v0, p0, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->consumerMember:Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean; return-object v0 .end method .method public getCreatorMember()Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$CreatorMemberBean; .registers 2 .line 1 iget-object v0, p0, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->creatorMember:Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$CreatorMemberBean; return-object v0 .end method .method public isCreateBoy()Z .registers 2 .line 1 iget-boolean v0, p0, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->createBoy:Z return v0 .end method .method public setConsumerMember(Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean;)V .registers 2 .line 1 iput-object p1, p0, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->consumerMember:Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$ConsumerMemberBean; return-void .end method .method public setCreateBoy(Z)V .registers 3 const/4 p1, 0x1 iput-boolean p1, p0, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->createBoy:Z return-void .end method .method public setCreatorMember(Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$CreatorMemberBean;)V .registers 2 .line 1 iput-object p1, p0, Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean;->creatorMember:Lshop/ewcpx/xjnmgu/bvxddr/bean/login/MemberBean$CreatorMemberBean; return-void .end method [/code] понятия не имею извините за мой английский я использую Google Translate Однажды я if-nez v0, :cond_42 присвоил значению v0 значение 1. Когда я его скомпилировал, он вылетел на определенной странице. Я думаю, что он определил мой уровень участника, и я все еще был обычным пользователем. Даже после того, как я удалил функцию killprocess, она также вылетела. Мне сложно точно описать мою проблему Я успешно изменил часть getNickname на то, что хочу, это очень просто :> кстати, простите меня, если это глупый вопрос, я никогда не изучал разработку Android или Java, я буду учиться медленно, и я также хочу попрактиковаться в этом как можно скорее Подробнее здесь: [url]https://stackoverflow.com/questions/78403452/how-to-modify-smali-member-variables[/url]