gpt4 book ai didi

java - 修改 Smali 中的现有方法

转载 作者:太空狗 更新时间:2023-10-29 15:42:00 25 4
gpt4 key购买 nike

我一直在研究 smali 中的一个简单方法(此处来自 Android),我想知道如何对它做一些简单的事情,比如 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 时返回导致问题的问题(期待注册?)所以我想知道我到底需要做什么。

一个解决方案,以及一个解释,将不胜感激!没有什么特别的,就是喜欢看这个东东。

最佳答案

您可以通过编写一个快速的 Java 程序、编译它、dx'ing 它然后反汇编它来相当轻松地自己回答这个问题。

public class EnabledTest {
public static boolean isEnabled() {
return false;
}
}

然后编译/dx/反汇编它

javac EnabledTest.java
dx --dex --output=EnabledTest.dex EnabledTest.class
baksmali EnabledTest.dex

你最终会得到类似的东西

.method public static isEnabled()Z
.registers 1
const v0, 0
return v0
.end method

关于java - 修改 Smali 中的现有方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18454326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com