如何在smali中将数值设置为整数类

How to set numerical values to integer classes in smali

我正在编辑一些 smali 代码,我需要在其中更改作为游戏成就实体授予的特定货币包裹的价值。

.method public writeToParcel(Landroid/os/Parcel;I)V
.locals 0

invoke-static {p0, p1, p2}, Lcom/google/android/gms/games/achievement/AchievementEntityCreator;->a(Lcom/google/android/gms/games/achievement/AchievementEntity;Landroid/os/Parcel;I)V

return-void
.end method

classLandroid/os/Parcel设置为整数。我想给这个 class 设置一个固定的数值 10 亿。每次完成成就时,这都会奖励我一个这样大小的游戏内货币包——代码是不言自明的。那可能吗?如果可以,怎么办?

注意:我不是黑帽黑客利用这些知识来侵犯任何人的属性。它只是将测试应用程序逆向工程为一种临时的、无害的学习体验,不用于商业流通或任何恶意目的。

好吧,让我们看看,这就是我的想法。提示是非常令人满意的人,所以谢谢! 这是我更新后的代码:

.method public writeToParcel(Landroid/os/Parcel;I)V
.locals 0

const p2, 0x3b9aca00 

invoke-static {p0, p1, p2}, Lcom/google/android/gms/games/achievement/AchievementEntityCreator;->a(Lcom/google/android/gms/games/achievement/AchievementEntity;Landroid/os/Parcel;I)V

move-result-object p2

return-void
.end method

我使用 IEEE 754 转换器找到了一个等于 10 亿的 dalvik 字节码(结果为 0x4e6e6b28)——这行得通吗?它在这里:https://www.h-schmidt.net/FloatConverter/IEEE754.html。 我在此处访问了您的页面:https://github.com/JesusFreke/smali/wiki/Registers,其中说明了如何传递方法参数,我获得了一些指导 :) 我看到有 3 个参数寄存器(Lcom/google/android/gms/games/achievement/AchievementEntityCreator;、Lcom/google/android/gms/games/achievement/AchievementEntity;和Landroid/os/Parcel;) 是 p0、p1 和 p2。所以这是我对此的最佳尝试...如果我有任何错误,建设性的帮助会很棒!