【发布时间】:2013-08-26 22:52:33
【问题描述】:
我一直在 smali 中寻找一个简单的方法(来自 Android here),并且我想知道如何对它做一些简单的事情,例如 return false。我一直试图通过与 Java 对应的一些示例进行比较来理解它,我想我知道它的大部分工作原理,但我所做的任何更改似乎都不太顺利。
目前,Java 中的方法是:
public static boolean isEnabled(){
return com.example.test.isEnabled();
}
在 smali 中是:
.method public static isEnabled()Z
.registers 1
.prologue
.line 3714
invoke-static {}, Lcom/example/test;->isEnabled()Z
move-result v0
return v0
.end method
在上面的上下文中,我将如何修改该方法以仅执行相当于 Java return false; 的操作?据我所知,0x0 是错误的,但只是在编译 smali 时返回导致问题(期待 REGISTER?)所以我想知道我到底需要做什么。
我们将不胜感激解决方案和解释!没什么特别的,我就是喜欢看这个东西。
【问题讨论】:
-
move-result只需要一个寄存器。您可以使用const/4 v0, 0将零加载到寄存器 v0。请参阅milk.com/kodebase/dalvik-docs-mirror/docs/dalvik-bytecode.html(或source.android.com/devices/tech/dalvik/dalvik-bytecode.html,但格式不那么容易处理)。