【发布时间】:2018-01-06 09:05:36
【问题描述】:
我正在通过传输钱包、价格、id、代码等数据来进行在线 (json) 的 android 逆向工程。
我找到了一个设置和获取 Wallet 值的类,但不知道如何更改它。
我不擅长倒车。我认为在主要活动中,此代码从 json 获取钱包值并将其设置在应用程序中。
Fragment_Main_Page.this.sharedPreference.setWallet(((Ser_FirstPage)paramAnonymousResponse.body()).getWallet());
这部分,我认为是从服务器读取钱包字符串:
paramAnonymousResponse.body()).getWallet());
然后将其发送到 sharedPreference 类以在程序中设置。
在 sharedPreference 类中,setWallet 方法是:
public void setWallet(String paramString)
{
this.editor.putString("wallet", paramString);
this.editor.commit();
}
如您所见,ParamString 必须是我之前所说的值。
和设置方法smali代码是:
method public setWallet(Ljava/lang/String;)V
.locals 2
.param p1, "wallet" # Ljava/lang/String;
.prologue
.line 247
iget-object v0, p0, Lfenix/team/aln/mahan/component/ClsSharedPreference;->editor:Landroid/content/SharedPreferences$Editor;
const-string v1, "wallet"
invoke-interface {v0, v1, p1}, Landroid/content/SharedPreferences$Editor;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;
.line 248
iget-object v0, p0, Lfenix/team/aln/mahan/component/ClsSharedPreference;->editor:Landroid/content/SharedPreferences$Editor;
invoke-interface {v0}, Landroid/content/SharedPreferences$Editor;->commit()Z
.line 249
return-void
.end method
我想将 smali 代码中的“ParamString”更改为“5000”或“Hello”等静态字符串值,而不是 setWallet(String paramString) 接收的输入值。
像这样:
public void setWallet(String paramString)
{
String str1="5000"
this.editor.putString("wallet", str1);
this.editor.commit();
}
在 smali 中很难更改。
ps:理解 smali 指令的最佳资源/书籍是什么
【问题讨论】:
-
source.android.com/devices/tech/dalvik/dalvik-bytecode 是 dalvik 指令的主要参考。
标签: android reverse-engineering smali